👏
K8sのCluster IPサービスによる負荷分散を体験してみる
必要なファイル
deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-deploy
spec:
replicas: 3
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:latest
svc.yml
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
ports:
- protocol: TCP
port: 80
必要なオブジェクトを立ち上げる
デプロイメント、サービスなどを作ってみる
kubectl apply -f deply.yml
kubectl apply -f svc.yml
確認
vagrant@node02:~$ kubectl get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 21h <none>
web-service ClusterIP 10.98.166.230 <none> 80/TCP 16m app=web
リクエストを投げてみる
Nginxの初期ページをちょっといじくります。
for pod in $(kubectl get pods | awk 'NR > 1 {print $1}' | grep web-deploy); do kubectl exec $pod -- /bin/sh -c "hostname>/usr/share/nginx/html/index.html"; done
busyboxを使って入ってみる
kubectl run busybox --image=busybox --rm --restart=Never -it sh
以下のコマンドを走らせてみる
/ # while true; do wget -q -O - http://web-service; sleep 1; done
負荷分散されているのが確認できる。
web-deploy-66fbbff65d-fl8zt
web-deploy-66fbbff65d-fl8zt
web-deploy-66fbbff65d-95snx
web-deploy-66fbbff65d-fl8zt
web-deploy-66fbbff65d-95snx
web-deploy-66fbbff65d-fl8zt
Discussion