Skip to content

Commit fef63dd

Browse files
committed
add metrics-demo
Signed-off-by: Piwriw <[email protected]>
1 parent dd67137 commit fef63dd

File tree

5 files changed

+339
-0
lines changed

5 files changed

+339
-0
lines changed

metrics-demo/README.md

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
# metrics-demo
2+
3+
## Environment prepare
4+
5+
- KubeEdge、k8s 、node、cloud and so on
6+
7+
## Steps
8+
9+
1. Open `edgeStream` in edge
10+
11+
```sh
12+
vim /etc/kubeedge/config/edgecore.yaml
13+
```
14+
15+
```yaml
16+
modules:
17+
...
18+
edgeStream:
19+
enable: true
20+
handshakeTimeout: 30
21+
readDeadline: 15
22+
server: 124.222.110.11:10004
23+
tlsTunnelCAFile: /etc/kubeedge/ca/rootCA.crt
24+
tlsTunnelCertFile: /etc/kubeedge/certs/server.crt
25+
tlsTunnelPrivateKeyFile: /etc/kubeedge/certs/server.key
26+
writeDeadline: 15
27+
....
28+
```
29+
30+
31+
32+
2. Restart EdgeCore
33+
34+
```sh
35+
systemctl restart edgecore.service
36+
```
37+
38+
3. Download `metrics-server` yaml,you should care about `Metrics Server Version` and ` Kubernetes version` ,more in [metrics-server](https://github.com/kubernetes-sigs/metrics-server)
39+
40+
```sh
41+
wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
42+
```
43+
44+
4. Add ` hostNetwork: true` in yaml and ` - --kubelet-insecure-tls`
45+
46+
```yaml
47+
template:
48+
metadata:
49+
labels:
50+
k8s-app: metrics-server
51+
spec:
52+
hostNetwork: true
53+
containers:
54+
- args:
55+
- --cert-dir=/tmp
56+
- --secure-port=4443
57+
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
58+
- --kubelet-use-node-status-port
59+
- --metric-resolution=15s
60+
- --kubelet-insecure-tls
61+
image: k8s.gcr.io/metrics-server/metrics-server:v0.6.2
62+
```
63+
64+
5. Apply for metrics-server when you can normal download from `k8s.gcr.io`
65+
66+
```sh
67+
kubectl apply -f components.yaml
68+
```
69+
70+
When you can't access normally `k8s.gcr.io`,you can try this way:
71+
72+
```sh
73+
# find the image
74+
cat components.yaml
75+
76+
# Pull from dockerproxy
77+
docker pull k8s.dockerproxy.com/metrics-server/metrics-server:v0.6.2
78+
79+
# use docker tag
80+
docker tag k8s.dockerproxy.com/metrics-server/metrics-server:v0.6.2 k8s.gcr.io/metrics-server/metrics-server:v0.6.2
81+
82+
# apply for yaml
83+
kubectl apply -f components.yaml
84+
```
85+
86+
## Test
87+
88+
It is tested by redis.
89+
90+
1. Edit the `redis.yaml`, you should care `spec/nodeName` to use your nodeName
91+
92+
```sh
93+
vim redis.yaml
94+
```
95+
96+
2. Apply for `redis.yaml`
97+
98+
```sh
99+
kubectl apply redis.yaml
100+
```
101+
102+
3. Now,you can view logs from edge
103+
104+
```sh
105+
# find redid pod
106+
kubectl get po -A
107+
108+
# view logs in cloud
109+
kubectl logs redis-7c84bc4b7f-x5kmk
110+
111+
# view log in edge to validate
112+
docker logs k8s_redis_redis-7c84bc4b7f-znjs4_default_3ce4f96b-f8a8-4d1f-a983-b8165b65522f_0
113+
```
114+
115+
116+
You will get results just like this
117+
118+
Cloud logs:
119+
120+
<img src="images/metrics-redis-result-cloud.png">
121+
122+
Edge logs:
123+
124+
<img src="images/metrics-redis-result-edge.png">

metrics-demo/crds/components.yaml

Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
labels:
5+
k8s-app: metrics-server
6+
name: metrics-server
7+
namespace: kube-system
8+
---
9+
apiVersion: rbac.authorization.k8s.io/v1
10+
kind: ClusterRole
11+
metadata:
12+
labels:
13+
k8s-app: metrics-server
14+
rbac.authorization.k8s.io/aggregate-to-admin: "true"
15+
rbac.authorization.k8s.io/aggregate-to-edit: "true"
16+
rbac.authorization.k8s.io/aggregate-to-view: "true"
17+
name: system:aggregated-metrics-reader
18+
rules:
19+
- apiGroups:
20+
- metrics.k8s.io
21+
resources:
22+
- pods
23+
- nodes
24+
verbs:
25+
- get
26+
- list
27+
- watch
28+
---
29+
apiVersion: rbac.authorization.k8s.io/v1
30+
kind: ClusterRole
31+
metadata:
32+
labels:
33+
k8s-app: metrics-server
34+
name: system:metrics-server
35+
rules:
36+
- apiGroups:
37+
- ""
38+
resources:
39+
- nodes/metrics
40+
verbs:
41+
- get
42+
- apiGroups:
43+
- ""
44+
resources:
45+
- pods
46+
- nodes
47+
verbs:
48+
- get
49+
- list
50+
- watch
51+
---
52+
apiVersion: rbac.authorization.k8s.io/v1
53+
kind: RoleBinding
54+
metadata:
55+
labels:
56+
k8s-app: metrics-server
57+
name: metrics-server-auth-reader
58+
namespace: kube-system
59+
roleRef:
60+
apiGroup: rbac.authorization.k8s.io
61+
kind: Role
62+
name: extension-apiserver-authentication-reader
63+
subjects:
64+
- kind: ServiceAccount
65+
name: metrics-server
66+
namespace: kube-system
67+
---
68+
apiVersion: rbac.authorization.k8s.io/v1
69+
kind: ClusterRoleBinding
70+
metadata:
71+
labels:
72+
k8s-app: metrics-server
73+
name: metrics-server:system:auth-delegator
74+
roleRef:
75+
apiGroup: rbac.authorization.k8s.io
76+
kind: ClusterRole
77+
name: system:auth-delegator
78+
subjects:
79+
- kind: ServiceAccount
80+
name: metrics-server
81+
namespace: kube-system
82+
---
83+
apiVersion: rbac.authorization.k8s.io/v1
84+
kind: ClusterRoleBinding
85+
metadata:
86+
labels:
87+
k8s-app: metrics-server
88+
name: system:metrics-server
89+
roleRef:
90+
apiGroup: rbac.authorization.k8s.io
91+
kind: ClusterRole
92+
name: system:metrics-server
93+
subjects:
94+
- kind: ServiceAccount
95+
name: metrics-server
96+
namespace: kube-system
97+
---
98+
apiVersion: v1
99+
kind: Service
100+
metadata:
101+
labels:
102+
k8s-app: metrics-server
103+
name: metrics-server
104+
namespace: kube-system
105+
spec:
106+
ports:
107+
- name: https
108+
port: 443
109+
protocol: TCP
110+
targetPort: https
111+
selector:
112+
k8s-app: metrics-server
113+
---
114+
apiVersion: apps/v1
115+
kind: Deployment
116+
metadata:
117+
labels:
118+
k8s-app: metrics-server
119+
name: metrics-server
120+
namespace: kube-system
121+
spec:
122+
selector:
123+
matchLabels:
124+
k8s-app: metrics-server
125+
strategy:
126+
rollingUpdate:
127+
maxUnavailable: 0
128+
template:
129+
metadata:
130+
labels:
131+
k8s-app: metrics-server
132+
spec:
133+
hostNetwork: true
134+
containers:
135+
- args:
136+
- --cert-dir=/tmp
137+
- --secure-port=4443
138+
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
139+
- --kubelet-use-node-status-port
140+
- --metric-resolution=15s
141+
image: k8s.gcr.io/metrics-server/metrics-server:v0.6.2
142+
imagePullPolicy: IfNotPresent
143+
livenessProbe:
144+
failureThreshold: 3
145+
httpGet:
146+
path: /livez
147+
port: https
148+
scheme: HTTPS
149+
periodSeconds: 10
150+
name: metrics-server
151+
ports:
152+
- containerPort: 4443
153+
name: https
154+
protocol: TCP
155+
readinessProbe:
156+
failureThreshold: 3
157+
httpGet:
158+
path: /readyz
159+
port: https
160+
scheme: HTTPS
161+
initialDelaySeconds: 20
162+
periodSeconds: 10
163+
resources:
164+
requests:
165+
cpu: 100m
166+
memory: 200Mi
167+
securityContext:
168+
allowPrivilegeEscalation: false
169+
readOnlyRootFilesystem: true
170+
runAsNonRoot: true
171+
runAsUser: 1000
172+
volumeMounts:
173+
- mountPath: /tmp
174+
name: tmp-dir
175+
nodeSelector:
176+
kubernetes.io/os: linux
177+
priorityClassName: system-cluster-critical
178+
serviceAccountName: metrics-server
179+
volumes:
180+
- emptyDir: {}
181+
name: tmp-dir
182+
---
183+
apiVersion: apiregistration.k8s.io/v1
184+
kind: APIService
185+
metadata:
186+
labels:
187+
k8s-app: metrics-server
188+
name: v1beta1.metrics.k8s.io
189+
spec:
190+
group: metrics.k8s.io
191+
groupPriorityMinimum: 100
192+
insecureSkipTLSVerify: true
193+
service:
194+
name: metrics-server
195+
namespace: kube-system
196+
version: v1beta1
197+
versionPriority: 100

metrics-demo/crds/redis.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: redis
5+
spec:
6+
selector:
7+
matchLabels:
8+
app: redis
9+
replicas: 1
10+
template:
11+
metadata:
12+
labels:
13+
app: redis
14+
spec:
15+
nodeName: edge-02
16+
containers:
17+
- name: redis
18+
image: redis
32.3 KB
Loading
39.2 KB
Loading

0 commit comments

Comments
 (0)