@@ -28,10 +28,10 @@ Download the official Kubernetes release binaries:
28
28
29
29
```
30
30
wget -q --show-progress --https-only --timestamping \
31
- "https://storage.googleapis.com/kubernetes-release/release/v1.18.6 /bin/linux/amd64/kube-apiserver" \
32
- "https://storage.googleapis.com/kubernetes-release/release/v1.18.6 /bin/linux/amd64/kube-controller-manager" \
33
- "https://storage.googleapis.com/kubernetes-release/release/v1.18.6 /bin/linux/amd64/kube-scheduler" \
34
- "https://storage.googleapis.com/kubernetes-release/release/v1.18.6 /bin/linux/amd64/kubectl"
31
+ "https://storage.googleapis.com/kubernetes-release/release/v1.21.0 /bin/linux/amd64/kube-apiserver" \
32
+ "https://storage.googleapis.com/kubernetes-release/release/v1.21.0 /bin/linux/amd64/kube-controller-manager" \
33
+ "https://storage.googleapis.com/kubernetes-release/release/v1.21.0 /bin/linux/amd64/kube-scheduler" \
34
+ "https://storage.googleapis.com/kubernetes-release/release/v1.21.0 /bin/linux/amd64/kubectl"
35
35
```
36
36
37
37
Install the Kubernetes binaries:
@@ -62,6 +62,17 @@ INTERNAL_IP=$(curl -s -H "Metadata-Flavor: Google" \
62
62
http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/ip)
63
63
```
64
64
65
+ ```
66
+ REGION=$(curl -s -H "Metadata-Flavor: Google" \
67
+ http://metadata.google.internal/computeMetadata/v1/project/attributes/google-compute-default-region)
68
+ ```
69
+
70
+ ```
71
+ KUBERNETES_PUBLIC_ADDRESS=$(gcloud compute addresses describe kubernetes-the-hard-way \
72
+ --region $REGION \
73
+ --format 'value(address)')
74
+ ```
75
+
65
76
Create the ` kube-apiserver.service ` systemd unit file:
66
77
67
78
```
@@ -92,9 +103,10 @@ ExecStart=/usr/local/bin/kube-apiserver \\
92
103
--kubelet-certificate-authority=/var/lib/kubernetes/ca.pem \\
93
104
--kubelet-client-certificate=/var/lib/kubernetes/kubernetes.pem \\
94
105
--kubelet-client-key=/var/lib/kubernetes/kubernetes-key.pem \\
95
- --kubelet-https=true \\
96
106
--runtime-config='api/all=true' \\
97
107
--service-account-key-file=/var/lib/kubernetes/service-account.pem \\
108
+ --service-account-signing-key-file=/var/lib/kubernetes/service-account-key.pem \\
109
+ --service-account-issuer=https://${KUBERNETES_PUBLIC_ADDRESS}:6443 \\
98
110
--service-cluster-ip-range=10.32.0.0/24 \\
99
111
--service-node-port-range=30000-32767 \\
100
112
--tls-cert-file=/var/lib/kubernetes/kubernetes.pem \\
@@ -158,7 +170,7 @@ Create the `kube-scheduler.yaml` configuration file:
158
170
159
171
```
160
172
cat <<EOF | sudo tee /etc/kubernetes/config/kube-scheduler.yaml
161
- apiVersion: kubescheduler.config.k8s.io/v1alpha1
173
+ apiVersion: kubescheduler.config.k8s.io/v1beta1
162
174
kind: KubeSchedulerConfiguration
163
175
clientConnection:
164
176
kubeconfig: "/var/lib/kubernetes/kube-scheduler.kubeconfig"
@@ -246,16 +258,11 @@ sudo systemctl enable nginx
246
258
### Verification
247
259
248
260
```
249
- kubectl get componentstatuses --kubeconfig admin.kubeconfig
261
+ kubectl cluster-info --kubeconfig admin.kubeconfig
250
262
```
251
263
252
264
```
253
- NAME STATUS MESSAGE ERROR
254
- scheduler Healthy ok
255
- controller-manager Healthy ok
256
- etcd-0 Healthy {"health":"true"}
257
- etcd-1 Healthy {"health":"true"}
258
- etcd-2 Healthy {"health":"true"}
265
+ Kubernetes control plane is running at https://127.0.0.1:6443
259
266
```
260
267
261
268
Test the nginx HTTP health check proxy:
@@ -267,12 +274,14 @@ curl -H "Host: kubernetes.default.svc.cluster.local" -i http://127.0.0.1/healthz
267
274
```
268
275
HTTP/1.1 200 OK
269
276
Server: nginx/1.18.0 (Ubuntu)
270
- Date: Sat, 18 Jul 2020 06:20:48 GMT
277
+ Date: Sun, 02 May 2021 04:19:29 GMT
271
278
Content-Type: text/plain; charset=utf-8
272
279
Content-Length: 2
273
280
Connection: keep-alive
274
281
Cache-Control: no-cache, private
275
282
X-Content-Type-Options: nosniff
283
+ X-Kubernetes-Pf-Flowschema-Uid: c43f32eb-e038-457f-9474-571d43e5c325
284
+ X-Kubernetes-Pf-Prioritylevel-Uid: 8ba5908f-5569-4330-80fd-c643e7512366
276
285
277
286
ok
278
287
```
@@ -295,7 +304,7 @@ Create the `system:kube-apiserver-to-kubelet` [ClusterRole](https://kubernetes.i
295
304
296
305
```
297
306
cat <<EOF | kubectl apply --kubeconfig admin.kubeconfig -f -
298
- apiVersion: rbac.authorization.k8s.io/v1beta1
307
+ apiVersion: rbac.authorization.k8s.io/v1
299
308
kind: ClusterRole
300
309
metadata:
301
310
annotations:
@@ -323,7 +332,7 @@ Bind the `system:kube-apiserver-to-kubelet` ClusterRole to the `kubernetes` user
323
332
324
333
```
325
334
cat <<EOF | kubectl apply --kubeconfig admin.kubeconfig -f -
326
- apiVersion: rbac.authorization.k8s.io/v1beta1
335
+ apiVersion: rbac.authorization.k8s.io/v1
327
336
kind: ClusterRoleBinding
328
337
metadata:
329
338
name: system:kube-apiserver
@@ -403,12 +412,12 @@ curl --cacert ca.pem https://${KUBERNETES_PUBLIC_ADDRESS}:6443/version
403
412
```
404
413
{
405
414
"major": "1",
406
- "minor": "18 ",
407
- "gitVersion": "v1.18.6 ",
408
- "gitCommit": "dff82dc0de47299ab66c83c626e08b245ab19037 ",
415
+ "minor": "21 ",
416
+ "gitVersion": "v1.21.0 ",
417
+ "gitCommit": "cb303e613a121a29364f75cc67d3d580833a7479 ",
409
418
"gitTreeState": "clean",
410
- "buildDate": "2020-07-15T16:51:04Z ",
411
- "goVersion": "go1.13.9 ",
419
+ "buildDate": "2021-04-08T16:25:06Z ",
420
+ "goVersion": "go1.16.1 ",
412
421
"compiler": "gc",
413
422
"platform": "linux/amd64"
414
423
}
0 commit comments