ユーザーの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

results matching ""

    No results matching ""