K 8 S metrics serverによるHPA試験

2781 ワード

K 8 S metrics serverによるHPA試験
Metrics API:
Metrics APIを通じて、nodeまたはpodを指定する現在のリソースの使用状況を得ることができます。API自体は何の情報も記憶していませんので、APIを通じてリソースの歴史的な使用状況を取得することはできません。Metrics APIの取得経路は、/appis/metrics.k 8 s.io/取得Metrics APIの前提条件は、metrics serverがK 8 Sクラスタにおいてより多くのmetrics資料を成功的に展開することである。参照してください。https://github.com/kubernetes/metrics
Metrics server:
Metrics serverはKubergnetesクラスタリソースの使用状況の集約器であり、1.8バージョンからMetrics serverデフォルトは、kube-up.shスクリプトによってdeploymentとして展開することができます。また、yamlファイルでMetrics serverを展開して、nodeノードのmetrics情報Kubenetesを全て収集することもできます。Kubergnetes aggregatorを通じてMetrics ServerをメインAPI serverに登録します。
展開metrics-server
政府はすでにheapperを使用していないので、その代替案としてmetrics-serverを採用しています。現在の最新バージョンはv 0.3.1です。
yum install -y git
#  git  
git clone https://github.com/kubernetes-incubator/metrics-server
#git  。
vi /root/metrics-server/deploy/1.8+/metrics-server-deployment.yaml
#  metrics-server-deployment.yaml        NDS  IP 
#       kubectl top node      

        imagePullPolicy: Always
        command:
        - /metrics-server
        - --kubelet-insecure-tls
        - --kubelet-preferred-address-types=InternalIP
        volumeMounts:
		
cd /root/metrics-server/deploy/1.8+/
kubectl apply -f ./
部署が成功したら、次のような結果になるのが正常です。
[root@k8s-master ~]#  kubectl top node
NAME         CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-master   216m         2%     966Mi           12%       
k8s-node1    46m          0%     492Mi           6%        
k8s-node2    46m          0%     417Mi           5%    
[root@k8s-master ~]# kubectl top pods
NAME                         CPU(cores)   MEMORY(bytes)   
nginxtest-6fff7bd9f4-pwbl5   0m           1Mi 
テストHPA
nginxtestというdeploymentを作成します。関連リソースnginxtestを作成するHPAは、最小のpodコピー数が1で、最大10です。HPAは設定されたcpuの使用率(10%)に応じてダイナミックにpod数を増加または減少させます。この場所はテストに使用されますので、設定された伸縮閾値は小さいです。curl方式を使用して、nginxの負荷を増大させ、低減させる。
kubectl run nginxtest --image=nginx:latest --requests=cpu=1m --expose --port=80
nginxtest_ip=$(kubectl get svc nginxtest -o=jsonpath="{.spec.clusterIP}")
#   svc IP,    
kubectl autoscale deployment nginxtest --cpu-percent=10 --min=1 --max=10
私たちはbusyboxを作成して、上記のサービスを巡回訪問します。
docker run --rm -it busybox /bin/sh -c "while true; do wget -q -O- http://$nginxtest_ip; done"
hpaの状態を確認しながら関連リソースのinxtestのコピー数を確認します。コピーの数は変化しています。CPU資源の利用率も変化しており、最後は安定している傾向にある。
クbectl get hpa
私たちは先ほどのbusboxを消してしばらく待っています。コピーの数が1に戻ります。
容器セットの水平方向の伸縮器を作成し、削除します。
kubectl autoscale deployment nginxtest --cpu-percent=10 --min=1 --max=10
kubectl delete horizontalpodautoscaler.autoscaling/nginxtest
HPAはサービスの容器数に対して自動的に伸縮し、サービスの安定性を向上させることができますが、生産における応用が少ないため、業務負荷が正常かどうかは測定しにくいため、サービスの安定性に影響を与える要因が非常に多いです。