依賴metrics-server& 安裝metrics
- git clone https://github.com/kubernetes-incubator/metrics-server.git
- cd metrics-server/deploy/1.8+/
- 修改deployment的參數
增加
- --metric-resolution=30s
- --kubelet-preferred-address-types=InternalIP,
- kubectl create -f .
部署完成問題排查
- 檢視apiserver
kubectl get apiservices
v1beta1.metrics.k8s.io kube-system/metrics-server False (FailedDiscoveryCheck) 31m
- 檢視 apiservices/v1beta1.metrics.k8s.io
kubectl describe apiservices/v1beta1.metrics.k8s.io -n kube-system
Name: v1beta1.metrics.k8s.io
Namespace:
Labels: <none>
Annotations: <none>
API Version: apiregistration.k8s.io/v1
Kind: APIService
Metadata:
Creation Timestamp: 2019-12-19T05:43:01Z
Resource Version: 1321294
Self Link: /apis/apiregistration.k8s.io/v1/apiservices/v1beta1.metrics.k8s.io
UID: 77883025-7c16-4c5f-8939-e3036d81118f
Spec:
Group: metrics.k8s.io
Group Priority Minimum: 100
Insecure Skip TLS Verify: true
Service:
Name: metrics-server
Namespace: kube-system
Port: 443
Version: v1beta1
Version Priority: 100
Status:
Conditions:
Last Transition Time: 2019-12-19T05:43:01Z
Message: failing or missing response from https://10.201.2.18:443/apis/metrics.k8s.io/v1beta1: Get https://10.201.2.18:443/apis/metrics.k8s.io/v1beta1: dial tcp 10.201.2.18:443: connect: connection refused
Reason: FailedDiscoveryCheck
Status: False
Type: Available
Events: <none>
其中10.201.2.18 是mestric的svc位址,是以原因為master節點連不通mestric的svc位址,需要在master節點部署kube-proxy
實驗自動伸縮
- 指令
kubectl autoscale deployment nginx --cpu-percent=50 --min=1 --max=10
- 檢視hpa
kubectl get hpa
kubectl top node
kubectl top pod
- yaml檔案
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: nginx
namespace: default
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx
minReplicas: 1
maxReplicas: 10
targetCPUUtilizationPercentage: 50