ユーザーのmicro serviceが互いに接続されていない場合.
一般的に、 k8sの各 Containerは、関連するContainerと通信するため、Kubernetes DNSを使用する。つまり、PODは作成と削除が行われると、PODが持っていた内部のcluster ipが変動するため、一般的にmicro serviceなどをk8s dnsにて必要なcontainerを探す.
まず、k8sの DNSサービスが正常に動作しているかを確認する方法は、busyboxを作成してコンテナに接続し、nslookupコマンドでk8sのDNSに接続されているかを確認する.
- busybox container の作成
下記は、busyboxのyamlファイルで、これをbusybox.yamlに保存する内容である.
apiVersion: v1
kind: Pod
metadata:
name: busybox
spec:
containers:
- image: busybox
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
name: busybox
restartPolicy: Always
- マスターサーバーに sshで接続し、 kubectlコマンドで busybox containerを作成する.
// busybox の作成
# kubectl create -f busybox.yaml
// busybox container が作成されているかを確認
# kubectl get pods
[root@master1 test]# kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 0 1m
...
- Busybox container に接続し、 nslookupコマンドでkubernetesのDNSに接続しているかを確認する.
// busybox に接続後、shell実行
# kubectl exec -it busybox -- /bin/sh
// kubernetes.default dns 接続しているかを確認
/ # nslookup kubernetes.default
Server: 100.64.0.10
Address 1: 100.64.0.10 kube-dns.kube-system.svc.cube
Name: kubernetes.default
Address 1: 100.64.0.1 kubernetes.default.svc.cube
// 他のサービスに接続しているかを確認(下記は、cocktail componentのapi se rverをlookupした一例である)
/ # nslookup cocktail-api.cocktail-system
Server: 100.64.0.10
Address 1: 100.64.0.10 kube-dns.kube-system.svc.cube
Name: cocktail-api.cocktail-system
Address 1: 100.72.213.63 cocktail-api.cocktail-system.svc.cube