概要
Kubernetes関連の用語が多いが、下記のように理解している。
リソースの最小単位であるPodを管理(Podの増減やどのワーカーに配置するとか)するのがReplicasetで、さらにReplicasetの管理をDeployment(定義ファイルをyamlで作成して適用)で行う。
Podへは、名前空間に紐づくClusterIPからアクセスが可能。
ClusterIPはクラスタ内部からのみアクセス可能な受け口であり、外部からもアクセス可能にしたい場合はNordPort(or LB or Ingress)を作成して、ClusterIPと紐づける
ClusterIPはService(定義ファイルをyamlで作成して適用)によって作成する
下図の例においては、dashboardは名前空間「kube-system」、nginxは名前空間「default」のClusterIPを利用することになる。
Podは、ReplicaとServiceのダブル班長で管理されるものである
Kubernetes相関図
microk8sのdashboardの場合
– microk8sのdashboardを例にして、各要素の関係が下図になる
– 各要素のステータスは下記の通り
$ kubectl get all -o wide --all-namespaces | grep -e NAMESPACE -e dashboard
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system pod/kubernetes-dashboard-fc86bcc89-nwvfp 1/1 Running 0 35m 10.1.2.68 k8s-master.local
kube-system pod/dashboard-metrics-scraper-5cb4f4bb9c-cqgb4 1/1 Running 0 35m 10.1.2.69 k8s-master.local
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kube-system service/kubernetes-dashboard ClusterIP 10.152.183.94 443/TCP 35m k8s-app=kubernetes-dashboard
kube-system service/dashboard-metrics-scraper ClusterIP 10.152.183.181 8000/TCP 35m k8s-app=dashboard-metrics-scraper
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE CONTAINERS IMAGES SELECTOR
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
kube-system deployment.apps/kubernetes-dashboard 1/1 1 1 35m kubernetes-dashboard kubernetesui/dashboard:v2.7.0 k8s-app=kubernetes-dashboard
kube-system deployment.apps/dashboard-metrics-scraper 1/1 1 1 35m dashboard-metrics-scraper kubernetesui/metrics-scraper:v1.0.8 k8s-app=dashboard-metrics-scraper
NAMESPACE NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
kube-system replicaset.apps/kubernetes-dashboard-fc86bcc89 1 1 1 35m kubernetes-dashboard kubernetesui/dashboard:v2.7.0 k8s-app=kubernetes-dashboard,pod-template-hash=fc86bcc89
kube-system replicaset.apps/dashboard-metrics-scraper-5cb4f4bb9c 1 1 1 35m dashboard-metrics-scraper kubernetesui/metrics-scraper:v1.0.8 k8s-app=dashboard-metrics-scraper,pod-template-hash=5cb4f4bb9c
microk8sのnginxコンテナクラスタの場合
– microk8sのnginxコンテナ3個で構成するクラスタの場合は下記のようになる
– Deploymentはラベルを使い、それをServiceのSelectorで指定することで、クライアントからのリクエストを転送するPod(nginxコンテナ)を判別している
– 各要素のスタータスは下記の通り
$ kubectl get all -o wide --all-namespaces | grep -e NAMESPACE -e nginx
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
default pod/nginx-deployment-f7599d4c-x9g76 1/1 Running 0 5m33s 10.1.2.71 k8s-mster.local
default pod/nginx-deployment-f7599d4c-sb4p5 1/1 Running 0 5m33s 10.1.210.65 k8s-worker1.local
default pod/nginx-deployment-f7599d4c-4vsrw 1/1 Running 0 5m33s 10.1.210.66 k8s-worker1.local
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
default service/nginx LoadBalancer 10.152.183.176 192.168.9.3 80:30327/TCP 28m app=nginx
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE CONTAINERS IMAGES SELECTOR
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
default deployment.apps/nginx-deployment 3/3 3 3 5m33s nginx nginx:1.7.9 app=nginx
NAMESPACE NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
default replicaset.apps/nginx-deployment-f7599d4c 3 3 3 5m33s nginx nginx:1.7.9 app=nginx,pod-template-hash=f7599d4c