K8S二進制部署的K8S(1.15)部署hpa功能
友情提醒:
#不要把啟動文件中例如的 --authentication-token-webhook=true # 自作聰明的改為 --authentication-token-webhook true # 不然。。。。。
一、生成metrics-proxy證書
在管理機上生成證書配置文件及證書
# metrics-proxy證書請求 cat >metrics-proxy-csr.json <<'EOF' { "CN": "aggregator", "hosts": [], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "beiJing", "L": "beiJing", "O": "zq", "OU": "ops" } ] } EOF #生成mertic證書 cfssl gencert \ -ca=ca.pem \ -ca-key=ca-key.pem \ -config=ca-config.json \ -profile=peer \ metrics-proxy-csr.json | cfssl-json -bare metrics-proxy #分發證書到master節點 # profile=peer 中的peer,依據自己的配置改,反正需要有server端和client的證書權限 #略,目錄在 /opt/kubernetes/server/bin/cert/
二、修改apiserver啟動配置
修改apiserver啟動腳本,添加以下參數:
vim /opt/kubernetes/server/bin/kube-apiserver.sh --requestheader-allowed-names "" \ --requestheader-extra-headers-prefix X-Remote-Extra- \ --requestheader-group-headers X-Remote-Group \ --requestheader-username-headers X-Remote-User \ --proxy-client-cert-file ./cert/metrics-proxy.pem \ --proxy-client-key-file ./cert/metrics-proxy-key.pem \
參數說明:
--requestheader-XXX --proxy-client-XXX
:
是 kube-apiserver 的 aggregator layer 相關的配置參數,metrics-server & HPA 需要使用;
--requestheader-client-ca-file
:
用於簽名 –proxy-client-cert-file 和 –proxy-client-key-file 指定的證書(ca證書),在啟用瞭 metric aggregator 時使用;
註1:
如果 –requestheader-allowed-names 不為空,則–proxy-client-cert-file 證書的 CN 必須位於 allowed-names 中,默認為 aggregator;如果 kube-apiserver 機器沒有運行 kube-proxy,則還需要添加 –enable-aggregator-routing=true 參數
重啟apiserver
supervisorctl restart kube-apiserver
三、kubelet參數修改並重啟
vim /opt/kubernetes/server/bin/kubelet.sh #添加參數: --authentication-token-webhook=true \ 如果有參數:--read-only-port=0,則需刪除 #重啟服務: supervisorctl restart kube-kubelet
四、下載metrics-server鏡像及配置清單
A 獲取配置清單(6個)
項目地址:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/metrics-server
配置文件有兩種,單機版和集群版獲取方式:
https://github.com/kubernetes-incubator/metrics-server (單機)
https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/metrics-server (集群)
集群版可以自動擴容metrics自己,推薦使用
# 創建目錄 mkdir -p /data/k8s-yaml/metrics/ cd /data/k8s-yaml/metrics/ # 下載配置文件 metrics_url='https://raw.githubusercontent.com/kubernetes/kubernetes/v1.14.1/cluster/addons/metrics-server' wget $metrics_url/auth-delegator.yaml wget $metrics_url/auth-reader.yaml wget $metrics_url/metrics-apiservice.yaml wget $metrics_url/metrics-server-deployment.yaml wget $metrics_url/metrics-server-service.yaml wget $metrics_url/resource-reader.yaml
B 修改啟動參數
## 修改metrics-server-deployment.yaml ###1 mertics-server部分修改啟動參數鏡像地址 containers: - name: metrics-server image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.1 command: - /metrics-server - --metric-resolution=30s - --kubelet-insecure-tls - --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP ###2 metrics-server-nanny部分修改鏡像地址及啟動參數 ...... - name: metrics-server-nanny image: registry.cn-hangzhou.aliyuncs.com/google_containers/addon-resizer:1.8.4 ..... command: - /pod_nanny - --config-dir=/etc/config - --cpu=100m - --extra-cpu=0.5m - --memory=100Mi - --extra-memory=50Mi - --threshold=5 - --deployment=metrics-server-v0.3.1 - --container=metrics-server - --poll-period=300000 - --estimator=exponential ### 在新的版本中,授權文內沒有 node/stats 的權限,需要手動去添加resource-reader.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: system:metrics-server rules: - apiGroups: - "" resources: - pods - nodes - nodes/stats ## 添加此參數 - namespaces
mertics-server鏡像參數解釋:
–kubelet-insecure-tls:
不驗證客戶端證書
–kubelet-preferred-address-types
metrics-server連節點時默認是連接節點的主機名,但是coredns裡面沒有物理機主機名的解析,需要加個參數,讓它連接節點的IP
C 應用配置清單並驗證
kubectl apply -f .
五、結果驗證
[root@mmkt-api01 ~]# kubectl top nodes NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% xx01.host.com 411m 2% 36881Mi 57% xx02.host.com 509m 3% 33127Mi 51%
到此這篇關於K8S二進制部署的K8S(1.15)部署hpa功能的文章就介紹到這瞭,更多相關k8s1.15 二進制部署內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python調用kubernetesAPI簡單使用方法
- 一文秒懂Prometheus 介紹及工作原理
- Python使用Kubernetes API訪問集群
- centos系統安裝Kubernetes集群步驟
- Kubernetes(k8s 1.23))安裝與卸載詳細教程