https://yourmystar.connpass.com/event/120903/
『Docker/Kubernetes 実践コンテナ開発入門』輪読会 #52019/02/251@inase17000
View Slide
Kubernetes入門5.1 Kubernetesとは5.2 ローカル環境でKubernetesを実行する5.3 Kubernetesの概念5.4 KubernetesクラスタとNode5.5 Namespace5.6 Pod5.7 ReplicaSet5.8 Deployment5.9 Service5.10 Ingress2
5.1 Kubernetesとは3ホストOSDockerコンテナ1 コンテナ2 コンテナ3ホストOSKubernetesDocker KubernetesMaster Node Node1コンテナ1コンテナ1コンテナ1コンテナ2Deployment / ReplicaSetNode2コンテナ1コンテナ1コンテナ1コンテナ2Deployment / ReplicaSetkube apiserveretcdkube schedulerkube controllermanagerServiceIngress
5.2 ローカル環境でKubernetesを実行する4
5.2 ローカル環境でKubernetesを実行する5# 5.2.1curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.10.4/bin/darwin/amd64/kubectl \&& chmod +x kubectl \&& mv kubectl /usr/local/bin/kubectl apply -fhttps://raw.githubusercontent.com/kubernetes/dashboard/v1.8.3/src/deploy/recommended/kubernetes-dashboard.yamlkubectl get pod --namespace=kube-system -l k8s-app=kubernetes-dashboardkubectl proxyhttp://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
5.2 ローカル環境でKubernetesを実行する6http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
5.4 KubernetesクラスタとNode7# 5.4kubectl get nodes
5.6 PodYAMLについて補足8配列 ハッシュ- A- B-- C-1- C-2A: aB: bC:C-1: c1C-2: c2[“A”, “B”, [“C-1”, “C-2”]] {“A” => “a”, “B” => “b”, “C” => {“C-1” => “c1”, “C-2” => “c2”}}
5.6 PodYAMLのサンプル9https://magazine.rubyist.net/articles/0009/0009-YAML.html
5.6 Pod10# 5.6.1# simple-pod.ymlapiVersion: v1kind: Podmetadata:name: simple-echospec:containers:- name: nginximage: gihyodocker/nginx-proxy:latestenv:- name: BACKEND_HOSTvalue: localhost:8000ports:- containerPort: 80- name: echoimage: gihyodocker/echo:latestports:- containerPort: 8080
5.6 Pod11# 5.6.1kubectl apply -f simple-pod.ymlkubectl get podkubectl exec -it simple-echo sh -c nginxkubectl logs -f simple-echo -c echokubectl delete pod simple-echokubectl delete -f simple-pod.yml
5.7 ReplicaSet12# 5.7# simple-replicaset.ymlapiVersion: apps/v1kind: ReplicaSetmetadata:name: echolabels:app: echospec:replicas: 3selector:matchLabels:app: echotemplate:metadata:labels:app: echospec:containers:- name: nginximage: gihyodocker/nginx-proxy:latestenv:- name: BACKEND_HOSTvalue: localhost:8080ports:- containerPort: 80- name: echoimage: gihyodocker/echo:latestports:- containerPort: 8080
5.7 ReplicaSet13# 5.6.1kubectl apply -f simple-replicaset.ymlkubectl delete -f simple-replicaset.yml
5.8 Deployment14# 5.8# simple-deployment.ymlapiVersion: apps/v1kind: Deploymentmetadata:name: echolabels:app: echospec:replicas: 3selector:matchLabels:app: echotemplate:metadata:labels:app: echospec:containers:- name: nginximage: gihyodocker/nginx-proxy:latestenv:- name: BACKEND_HOSTvalue: localhost:8000ports:- containerPort: 80- name: echoimage: gihyodocker/echo:latestports:- containerPort: 8080
5.8 Deployment15# 5.8.1kubectl apply -f simple-deployment.yml --recordkubectl get pod,replicaset,deployment --selector app=echokubectl rollout history deployment echo# 5.8.2kubectl rollout history deployment echo --revision=2kubectl rollout history deployment echo --revision=3kubectl rollout undo deployment echokubectl delete -f simple-deployment.yml
# 5.9# simple-replicaset-with-label.ymlapiVersion: apps/v1kind: ReplicaSetmetadata:name: echo-springlabels:app: echorelease: springspec:replicas: 3selector:matchLabels:app: echorelease: springtemplate:metadata:labels:app: echorelease: spring5.9 Services16spec:containers:- name: nginximage: gihyodocker/nginx-proxy:latestenv:- name: BACKEND_HOSTvalue: localhost:8000ports:- containerPort: 80- name: echoimage: gihyodocker/echo:latestports:- containerPort: 8080---apiVersion: apps/v1kind: ReplicaSetmetadata:name: echo-summerlabels:app: echorelease: summer...つづく
5.9 Services17# 5.9kubectl apply -f simple-replicaset-with-label.ymlkubectl get pod -l app=echo -l release=springkubectl get pod -l app=echo -l release=summerkubectl apply -f simple-service.ymlkubectl get svc echokubectl run -i --rm --tty debug --image=gihyodocker/fundamental:0.1.0 --restart=Never -- bash -ilkubectl logs -f echo-summer-8qxmg -c echo
5.10 Ingress● L4バランサー○ IPアドレスとポート番号による負荷分散● L7バランサー○ URLやHTTPヘッダーで負荷分散18https://academy.gmocloud.com/qa/20170810/4591
5.10 Ingress19# 5.10kubectl apply -fhttps://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.16.2/deploy/mandatory.yamlkubectl apply -fhttps://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.16.2/deploy/provider/cloud-generic.yamlkubectl -n ingress-nginx get service,pod# 5.10.2kubectl apply -f simple-service.ymlkubectl get ingresscurl http://localhost -H 'Host: ch05.gihyo.local'