minikubeでcreate deployment

$ sudo kubectl get nodes
$ sudo kubectl describe nodes ubuntu-bionic
$ sudo kubectl proxy
Starting to serve on 127.0.0.1:8001

※kubectlはクラスタのマスターノード上で実行される

$ sudo kubectl get pods -o wide
No resources found in default namespace.
$ sudo kubectl get pods -o json
{
“apiVersion”: “v1”,
“items”: [],
“kind”: “List”,
“metadata”: {
“resourceVersion”: “”,
“selfLink”: “”
}
}

### hello-minikube
// pod, deployment作成
$ kubectl run hello-minikube –image=k8s.gcr.io/echoserver:1.4 –port=8080
// get deployment
$ sudo kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
hello-minikube 0/1 1 0 2m
// serviceを使う
$ sudo kubectl expose deployment hello-minikube –type=NodePort
service/hello-minikube exposed
$ sudo minikube service hello-minikube –url
$ curl http://192.168.33.10:30835
CLIENT VALUES:
client_address=172.17.0.1
command=GET
real path=/
query=nil
request_version=1.1
request_uri=http://192.168.33.10:8080/

SERVER VALUES:
server_version=nginx: 1.10.0 – lua: 10001

HEADERS RECEIVED:
accept=*/*
host=192.168.33.10:30835
user-agent=curl/7.58.0
BODY:
-no body in request-v

### hello-node
$ sudo kubectl create deployment hello-node –image=gcr.io/hello-minikube-zero-install/hello-node

$ sudo kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
hello-minikube 1/1 1 1 38m
hello-node 1/1 1 1 21m

$ sudo kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-minikube-75cb6dd856-8rxx7 1/1 Running 0 38m
hello-node-7676b5fb8d-hdj6d 1/1 Running 0 21m

$ kubectl expose deployment hello-node –type=LoadBalancer –port=8080
$ sudo kubectl get services
$ curl http://192.168.33.10:32720
Hello World!

kubectl createでDockerコンテナを使用してpodを作成する
Deploymentを作成するとDeployment、replicaset, Podが作られる

k8sのアーキテクチャ

マスターコンポーネントでnodeを制御している
コンテナはnodeのpodの中で実行される
minikubeではマスターとウォーカーは同じサーバだが、k8sでは別サーバ

ロードバランサの役割もk8sでやってしまうイメージか。
create deploymentでGCPからimageをpullしているけど、実務上ではDockerfileでコンテナの仕様を書いていくと思うんだが、その場合のnode、podはどうやって作成して関連付けていくのか良く解らんな。サンプルじゃなくて、実際にアプリを作らないときついか?