[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
コメントを残す