kubernetes+ prometheus自动伸缩的设计与实现(四)

释放双眼,带上耳机,听听看~!

之前还有一些环境部署上面的事情没有交代,这里补充完毕

apiserver参数修改


1
2
3
4
1--runtime-config=autoscaling/v2alpha1=true  
2
3"--requestheader-username-headers=X-Remote-User --requestheader-group-headers=X-Remote-Group --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-client-ca-file=/var/run/kubernetes/request-header-ca.crt --requestheader-allowed-names=system:auth-proxy --proxy-client-cert-file=/var/run/kubernetes/client-auth-proxy.crt --proxy-client-key-file=/var/run/kubernetes/client-auth-proxy.key",
4

controller-manager参数修改


1
2
1--horizontal-pod-autoscaler-use-rest-clients --horizontal-pod-autoscaler-sync-period=60s
2

创建secert


1
2
1kubectl create  secret generic  cm-adapter-serving-certs --from-file=serving.crt=apiserver.crt --from-file=serving.key=apiserver.key -n custom-metrics
2

创建转化器


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
1kind: ServiceAccount
2apiVersion: v1
3metadata:
4  name: custom-metrics-apiserver
5  namespace: custom-metrics
6---
7apiVersion: rbac.authorization.k8s.io/v1beta1
8kind: ClusterRoleBinding
9metadata:
10  name: custom-metrics:system:auth-delegator
11roleRef:
12  apiGroup: rbac.authorization.k8s.io
13  kind: ClusterRole
14  name: system:auth-delegator
15subjects:
16- kind: ServiceAccount
17  name: custom-metrics-apiserver
18  namespace: custom-metrics
19---
20apiVersion: rbac.authorization.k8s.io/v1beta1
21kind: RoleBinding
22metadata:
23  name: custom-metrics-auth-reader
24  namespace: kube-system
25roleRef:
26  apiGroup: rbac.authorization.k8s.io
27  kind: Role
28  name: extension-apiserver-authentication-reader
29subjects:
30- kind: ServiceAccount
31  name: custom-metrics-apiserver
32  namespace: custom-metrics
33---
34apiVersion: rbac.authorization.k8s.io/v1beta1
35kind: ClusterRole
36metadata:
37  name: custom-metrics-resource-reader
38rules:
39- apiGroups:
40  - ""
41  resources:
42  - configmaps
43  - namespaces
44  - pods
45  - services
46  verbs:
47  - get
48  - list
49---
50apiVersion: rbac.authorization.k8s.io/v1beta1
51kind: ClusterRoleBinding
52metadata:
53  name: custom-metrics-resource-reader
54roleRef:
55  apiGroup: rbac.authorization.k8s.io
56  kind: ClusterRole
57  name: custom-metrics-resource-reader
58subjects:
59- kind: ServiceAccount
60  name: custom-metrics-apiserver
61  namespace: custom-metrics
62---
63apiVersion: extensions/v1beta1
64kind: Deployment
65metadata:
66  labels:
67    app: custom-metrics-apiserver
68  name: custom-metrics-apiserver
69  namespace: custom-metrics
70spec:
71  replicas: 1
72  selector:
73    matchLabels:
74      app: custom-metrics-apiserver
75  template:
76    metadata:
77      labels:
78        app: custom-metrics-apiserver
79      name: custom-metrics-apiserver
80    spec:
81      serviceAccountName: custom-metrics-apiserver
82      containers:
83      - name: custom-metrics-apiserver
84        image: harbor.enncloud.cn/paas/k8s-prom
85        args:
86        - /adapter
87        - --secure-port=6443
88        - --tls-cert-file=/var/run/serving-cert/serving.crt
89        - --tls-private-key-file=/var/run/serving-cert/serving.key
90        - --logtostderr=true
91        - --prometheus-url=http://prometheus-monitor.kube-system:9090/
92        - --requestheader-client-ca-file=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
93        - --metrics-relist-interval=30s
94        - --rate-interval=30s
95        - --v=10
96        ports:
97        - containerPort: 6443
98        volumeMounts:
99        - mountPath: /var/run/serving-cert
100          name: volume-serving-cert
101          readOnly: true
102      volumes:
103      - name: volume-serving-cert
104        secret:
105          secretName: cm-adapter-serving-certs
106---
107apiVersion: v1
108kind: Service
109metadata:
110  name: api
111  namespace: custom-metrics
112spec:
113  ports:
114  - port: 443
115    targetPort: 6443
116  selector:
117    app: custom-metrics-apiserver
118---
119apiVersion: apiregistration.k8s.io/v1beta1
120kind: APIService
121metadata:
122  name: v1alpha1.custom-metrics.metrics.k8s.io
123spec:
124  insecureSkipTLSVerify: true
125  group: custom-metrics.metrics.k8s.io
126  groupPriorityMinimum: 1000
127  versionPriority: 15
128  service:
129    name: api
130    namespace: custom-metrics
131  version: v1alpha1
132---
133# Make a ClusterRole so that the HPA controller is able to read the custom metrics this adapter provides
134apiVersion: rbac.authorization.k8s.io/v1beta1
135kind: ClusterRole
136metadata:
137  name: custom-metrics-server-resources
138rules:
139- apiGroups:
140  - custom-metrics.metrics.k8s.io
141  resources: ["*"]
142  verbs: ["*"]
143---
144apiVersion: rbac.authorization.k8s.io/v1beta1
145kind: ClusterRoleBinding
146metadata:
147  name: hpa-controller-custom-metrics
148roleRef:
149  apiGroup: rbac.authorization.k8s.io
150  kind: ClusterRole
151  name: custom-metrics-server-resources
152subjects:
153- kind: ServiceAccount
154  name: horizontal-pod-autoscaler
155  namespace: kube-system
156

这里数部署文档,通过上面yaml就可以创建出,

校验一下:


1
2
1kubectl get --raw=apis/custom-metrics.metrics.k8s.io/v1alpha1
2

建立一个内存伸缩的规则


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1kind: HorizontalPodAutoscaler
2apiVersion: autoscaling/v2alpha1
3metadata:
4  name: testhpa
5  namespace: wangxxg
6spec:
7  scaleTargetRef:
8    apiVersion: apps/v1beta1
9    kind: Deployment
10    name: tomcat
11  minReplicas: 1
12  maxReplicas: 3
13  metrics:
14  - type: Pods
15    pods:
16      metricName: memory_usage_bytes
17      targetAverageValue: 5685461333m
18

如果是CPU则是,cpu_usage。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

故障复盘的简洁框架-黄金三问

2021-9-30 19:18:23

安全运维

OpenSSH-8.7p1离线升级修复安全漏洞

2021-10-23 10:13:25

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索