Pod拡張と縮小


本番環境では、サービスの拡張が必要なシーンに直面した場合、Deployment/RCのScaleメカニズムを使用して実現できます.KubernetesはPodの手動拡張と自動拡張をサポートします.
手動拡張容量
拡張コマンドを実行することで、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/