[A-00237] Kubernetes 1000本ノック (2)

前回記事はこちら

ClusterIPの動作確認を行いたいと思います。

まずDeploymentでReplica2を指定して2つのPodを作成し、その2つのPodに対してClusterIPを設定したいと思います。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx-dep
  template:
    metadata:
      labels:
        app: nginx-dep
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
apiVersion: v1
kind: Service
metadata:
  name: cluster-ip
spec:
  type: ClusterIP
  ports:
  - name: cluster-port
    port: 8080
    targetPort: 80
  selector:
    app: nginx-dep

上記をデプロイしてClusterIPのもつIPアドレスを取得します。

kubectl apply -f deployment.yml,service.yml
user@usernoMacBook-Pro cluster_ip_test % kubectl describe service/cluster-ip
Name:                     cluster-ip
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 app=nginx-dep
Type:                     ClusterIP
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.96.67.133  //ここのIPアドレスを取得
IPs:                      10.96.67.133
Port:                     cluster-port  8080/TCP
TargetPort:               80/TCP
Endpoints:                10.1.0.184:80,10.1.0.185:80
Session Affinity:         None
Internal Traffic Policy:  Cluster
Events:                   <none>

ClusterIPは外部ネットワークからのアクセスは受け付けないのでpod内に入ってアクセスする必要があります。

次に稼働中のpodを表示します。

user@usernoMacBook-Pro cluster_ip_test % kubectl get pods
NAME                       READY   STATUS             RESTARTS       AGE
mynginx-74859d9744-wpd4q   1/1     Running            1 (7d5h ago)   14d
nginx-947855b66-4j2p4      1/1     Running            0              83m
nginx-947855b66-8vkv6      1/1     Running            0              83m
test-pod                   0/1     CrashLoopBackOff   6 (17s ago)    9m23s

nginxの接頭辞がついたpodに入り、index.htmlを編集します。

kubectl exec -it nginx-947855b66-4j2p4 -- /bin/bash
root@nginx-947855b66-4j2p4:/# cd /usr/share/nginx/html/
root@nginx-947855b66-4j2p4:/usr/share/nginx/html# echo pod1 >> index.html 
kubectl exec -it nginx-947855b66-8vkv6 -- /bin/bash 
root@nginx-947855b66-8vkv6:/# cd /usr/share/nginx/html/
root@nginx-947855b66-8vkv6:/usr/share/nginx/html# echo pod2 >> index.html 

上記を作成した後にテスト用のpodを作成します。

apiVersion: v1
kind: Pod
metadata:
  name: test-pod
spec:
  containers:
  - name: centos
    image: centos:latest
    command:
    - sh
    - -c
    args:
    - for i in 1 2 3 4 5 ; do curl -s http://10.96.67.133:8080 ; sleep 5; done ;exit 0

上記をデプロイしてlogを見てみるとloadbalancingされていることがわかります。

user@usernoMacBook-Pro cluster_ip_test % kubectl logs test-pod | grep pod
pod1
pod2
pod2
pod2
pod1

上記がClusterIPの挙動でした。

・Appendix

参考文献はこちら

https://qiita.com/dingtianhongjie/items/82d1c56e9712e19aecb0

https://qiita.com/suiyodoudesyo/items/0e971d2fc5aa925a8442

https://qiita.com/1429takahiro/items/09a6036bd00e6b697f3f

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*