Pod拡張と縮小
5578 ワード
本番環境では、サービスの拡張が必要なシーンに直面した場合、Deployment/RCのScaleメカニズムを使用して実現できます.KubernetesはPodの手動拡張と自動拡張をサポートします.
手動拡張容量
拡張コマンドを実行することで、deploymentを直接拡張します.
縮小するには、コピーの数を減らす必要があります.
じどうかくさんようりょう
自動拡張と縮小を使用するには、kubernetesにheapsterプラグインをインストールする必要があります.リファレンスリンク
説明に従って、以下のYAMLファイルのイメージ情報を国内でアクセス可能なミラーウェアハウスに変更し、実行します.
インストールが完了したら、次のリンクを使用してGrafanaのWebインタフェースにアクセスし、リソースの使用状況を表示します.
https://10.0.0.1:6443/api/v1/namespaces/kube-system/services/http:monitoring-grafana:/proxy/
kubernetes 1.11以降のバージョンでは、heapsterプラグインを使用してリソースの使用状態を監視するのではなく、metric serverを使用します.
php-apcheのdeploymentのアプリケーションとサービスを作成し、このアプリケーションにアクセスすると「OK!」を返します.
圧力テスト用のbusyboxツールPodを作成します.
以上のオブジェクトを作成したら、HPAコントローラを作成して、オブジェクトのリソース使用率を監視する必要があります.
現在のhpaのステータスを表示し、ステータスが表示されたら、次のトラブルシューティングを表示します.
busyboxにログインし、ループアクセスコマンドを実行し、php-apacheを測定します.
リソース監視情報を表示するには、次の手順に従います.
対応するオブジェクトの作成状況を表示し、次のように作成しています.
CPU使用率が低下すると、自動的に容量を縮める:
トラブルシューティング
hpaを設定すると、次のようにリソースステータスが取得できません.
masterでkube-controller-managerの構成を変更し、次のパラメータを追加します.
あるいは新版の
手動拡張容量
拡張コマンドを実行することで、deploymentを直接拡張します.
# kubectl scale deployment nginx-deployment --replicas=4
縮小するには、コピーの数を減らす必要があります.
# kubectl scale deployment nginx-deployment --replicas=2
じどうかくさんようりょう
自動拡張と縮小を使用するには、kubernetesにheapsterプラグインをインストールする必要があります.リファレンスリンク
説明に従って、以下のYAMLファイルのイメージ情報を国内でアクセス可能なミラーウェアハウスに変更し、実行します.
[root@node-1 influxdb]# ll
total 16
-rw-r--r-- 1 root root 2288 Jun 21 20:23 grafana.yaml
-rw-r--r-- 1 root root 264 Jun 21 20:24 heapster-rbac.yaml # rbac
-rw-r--r-- 1 root root 1112 Jun 21 20:24 heapster.yaml
-rw-r--r-- 1 root root 972 Jun 21 20:24 influxdb.yaml
[root@node-1 influxdb]# kubectl create -f ./
インストールが完了したら、次のリンクを使用してGrafanaのWebインタフェースにアクセスし、リソースの使用状況を表示します.
https://10.0.0.1:6443/api/v1/namespaces/kube-system/services/http:monitoring-grafana:/proxy/
kubernetes 1.11以降のバージョンでは、heapsterプラグインを使用してリソースの使用状態を監視するのではなく、metric serverを使用します.
php-apcheのdeploymentのアプリケーションとサービスを作成し、このアプリケーションにアクセスすると「OK!」を返します.
# cat php-apache.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: php-apache
labels:
app: php-apache
spec:
replicas: 1
selector:
matchLabels:
app: php-apache
template:
metadata:
name: php-apache
labels:
app: php-apache
spec:
containers:
- name: php-apache
image: mirrorgooglecontainers/hpa-example
resources:
requests:
cpu: 200m
ports:
- containerPort: 80
# cat php-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: php-apache
spec:
ports:
- port: 80
selector:
app: php-apache
圧力テスト用のbusyboxツールPodを作成します.
# cat php-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: php-apache
spec:
ports:
- port: 80
selector:
app: php-apache
以上のオブジェクトを作成したら、HPAコントローラを作成して、オブジェクトのリソース使用率を監視する必要があります.
kubectl autoscale deployment php-apache --min=1 --max=6 --cpu-percent=50
# php-apache deployment HPA , CPU 50% , 1 6 Pod , Pod CPU 50% 。
現在のhpaのステータスを表示し、ステータスが表示されたら、次のトラブルシューティングを表示します.
[root@node-1 ~]# kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 0%/50% 1 8 1 39m
busyboxにログインし、ループアクセスコマンドを実行し、php-apacheを測定します.
# kubectl exec -it busybox -- sh
/ # while true;do wget -q -O - http://php-apache > /dev/null ;done
# DNS URL 。
リソース監視情報を表示するには、次の手順に従います.
[root@node-1 hpa-test]# kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 42%/50% 1 8 1 1h
[root@node-1 hpa-test]# kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 491%/50% 1 8 4 1h
対応するオブジェクトの作成状況を表示し、次のように作成しています.
[root@node-1 hpa-test]# kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
php-apache 4 4 4 2 1h
[root@node-1 hpa-test]# kubectl get rs
NAME DESIRED CURRENT READY AGE
php-apache-56b5765b95 4 4 2 1h
[root@node-1 hpa-test]# kubectl get pod
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 0 36m
php-apache-56b5765b95-8pclp 1/1 Running 0 1h
php-apache-56b5765b95-gsvqk 1/1 Running 0 1m
php-apache-56b5765b95-nbwbk 1/1 Running 0 1m
php-apache-56b5765b95-zmc29 0/1 ContainerCreating 0 1m
CPU使用率が低下すると、自動的に容量を縮める:
[root@node-1 hpa-test]# kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 0%/50% 1 8 1 1h
[root@node-1 hpa-test]# kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
php-apache 1 1 1 1 1h
[root@node-1 hpa-test]# kubectl get rs
NAME DESIRED CURRENT READY AGE
php-apache-56b5765b95 1 1 1 1h
[root@node-1 hpa-test]# kubectl get pod
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 0 43m
php-apache-56b5765b95-8pclp 1/1 Running 0 1h
トラブルシューティング
hpaを設定すると、次のようにリソースステータスが取得できません.
[root@node-1 hpa-test]# kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache /50% 1 8 1 9m
masterでkube-controller-managerの構成を変更し、次のパラメータを追加します.
cat /usr/lib/systemd/system/kube-controller-manager.service
...
--horizontal-pod-autoscaler-use-rest-clients=false \
...
あるいは新版の
metric server
を使用します.ここではしばらく紹介しませんが、参考にしてください.https://github.com/kubernetes-incubator/metrics-server/