1、k8s的dashboard的安裝部署,首先需要将壓縮包下載下傳下來,然後進行解壓縮操作。
1 [root@k8s-master ~]# cd k8s/
2 [root@k8s-master k8s]# ls
3 book-master.war deploy health pod rc skydns skydns.zip svc tomcat_demo tomcat_demo.zip
4 [root@k8s-master k8s]# wget https://www.qstack.com.cn/dashboard.zip
5 --2020-06-18 20:02:26-- https://www.qstack.com.cn/dashboard.zip
6 Resolving www.qstack.com.cn (www.qstack.com.cn)... 123.125.46.149, 111.202.85.37
7 Connecting to www.qstack.com.cn (www.qstack.com.cn)|123.125.46.149|:443... connected.
8 HTTP request sent, awaiting response... 200 OK
9 Length: 1099 (1.1K) [application/zip]
10 Saving to: ‘dashboard.zip’
11
12 100%[=======================================================================================================================================================================>] 1,099 --.-K/s in 0.05s
13
14 2020-06-18 20:02:26 (20.2 KB/s) - ‘dashboard.zip’ saved [1099/1099]
15
16 [root@k8s-master k8s]# unzip dashboard.zip
17 Archive: dashboard.zip
18 creating: dashboard/
19 inflating: dashboard/dashboard-deploy.yaml
20 inflating: dashboard/dashboard-svc.yaml
21 [root@k8s-master k8s]#
檢視配置檔案dashboard-deploy.yaml,并對配置進行修改。
1 [root@k8s-master dashboard]# vim dashboard-deploy.yaml
首先,需要将kubernetes-dashboard-amd64下載下傳下來,然後上傳到私有倉庫裡面,友善使用。
1 [root@k8s-master ~]# docker pull registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64:v1.10.0
2 Trying to pull repository registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64 ...
3 sha256:7755c0e7cb7e2585d21712f90e3d86d71cbc6362ab8fe283dae84cedc9c13396: Pulling from registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64
4 833563f653b3: Pull complete
5 Digest: sha256:7755c0e7cb7e2585d21712f90e3d86d71cbc6362ab8fe283dae84cedc9c13396
6 Status: Downloaded newer image for registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64:v1.10.0
7 [root@k8s-master ~]# docker images
8 REPOSITORY TAG IMAGE ID CREATED SIZE
9 192.168.110.133:5000/tomcat latest 2eb5a120304e 8 days ago 647 MB
10 docker.io/tomcat latest 2eb5a120304e 8 days ago 647 MB
11 192.168.110.133:5000/mysql 5.7.30 9cfcce23593a 9 days ago 448 MB
12 docker.io/mysql 5.7.30 9cfcce23593a 9 days ago 448 MB
13 docker.io/busybox latest 1c35c4412082 2 weeks ago 1.22 MB
14 docker.io/registry latest 708bc6af7e5e 4 months ago 25.8 MB
15 192.168.110.133:5000/nginx 1.15 53f3fd8007f7 13 months ago 109 MB
16 docker.io/nginx 1.15 53f3fd8007f7 13 months ago 109 MB
17 registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64 v1.10.0 9e12bc435ba6 15 months ago 122 MB
18 192.168.110.133:5000/nginx 1.13 ae513a47849c 2 years ago 109 MB
19 docker.io/nginx 1.13 ae513a47849c 2 years ago 109 MB
20 registry.access.redhat.com/rhel7/pod-infrastructure latest 99965fb98423 2 years ago 209 MB
21 192.168.110.133:5000/pod-infrastructure latest 34d3450d733b 3 years ago 205 MB
22 [root@k8s-master ~]# docker tag registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64:v1.10.0 192.168.110.133:5000/kubernetes-dashboard-amd64:v1.10.0
23 [root@k8s-master ~]# docker push 192.168.110.133:5000/kubernetes-dashboard-amd64:v1.10.0
24 The push refers to a repository [192.168.110.133:5000/kubernetes-dashboard-amd64]
25 5f222ffea122: Pushed
26 v1.10.0: digest: sha256:7755c0e7cb7e2585d21712f90e3d86d71cbc6362ab8fe283dae84cedc9c13396 size: 529
27 [root@k8s-master ~]#
dashboard-deploy.yaml,對配置進行修改,具體内容,如下所示。
1 apiVersion: extensions/v1beta1
2 kind: Deployment
3 metadata:
4 # Keep the name in sync with image version and
5 # gce/coreos/kube-manifests/addons/dashboard counterparts
6 name: kubernetes-dashboard-latest
7 namespace: kube-system
8 spec:
9 replicas: 1
10 template:
11 metadata:
12 labels:
13 k8s-app: kubernetes-dashboard
14 version: latest
15 kubernetes.io/cluster-service: "true"
16 spec:
17 containers:
18 - name: kubernetes-dashboard
19 image: 192.168.110.133:5000/kubernetes-dashboard-amd64:v1.10.0
20 resources:
21 # keep request = limit to keep this container in guaranteed class
22 limits:
23 cpu: 100m
24 memory: 50Mi
25 requests:
26 cpu: 100m
27 memory: 50Mi
28 ports:
29 - containerPort: 9090
30 args:
31 - --apiserver-host=http://192.168.110.133:8080
32 livenessProbe:
33 httpGet:
34 path: /
35 port: 9090
36 initialDelaySeconds: 30
37 timeoutSeconds: 30
修改的地方,如下所示:

配置完畢,建立deployment,如下所示:
1 [root@k8s-master dashboard]# kubectl create -f dashboard-deploy.yaml
2 deployment "kubernetes-dashboard-latest" created
修改dashboard-svc.yaml配置檔案,其中port是VIP的端口,targetPort是容器的端口,通路vip的端口80就會跳轉到targetPort的9090端口。
[root@k8s-master dashboard]# vim dashboard-svc.yaml
1 apiVersion: v1
2 kind: Service
3 metadata:
4 name: kubernetes-dashboard
5 namespace: kube-system
6 labels:
7 k8s-app: kubernetes-dashboard
8 kubernetes.io/cluster-service: "true"
9 spec:
10 selector:
11 k8s-app: kubernetes-dashboard
12 ports:
13 - port: 80
14 targetPort: 9090
開始建立svc,指令如下所示:
1 [root@k8s-master dashboard]# kubectl create -f dashboard-svc.yaml
2 service "kubernetes-dashboard" created
3 [root@k8s-master dashboard]#
建立完畢,檢視是否已經正常啟動了。
1 [root@k8s-master dashboard]# kubectl get all --namespace=kube-system
2 NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
3 deploy/kube-dns 1 1 1 1 4h
4 deploy/kubernetes-dashboard-latest 1 1 1 1 4m
5
6 NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
7 svc/kube-dns 10.254.230.254 <none> 53/UDP,53/TCP 4h
8 svc/kubernetes-dashboard 10.254.141.73 <none> 80/TCP 1m
9
10 NAME DESIRED CURRENT READY AGE
11 rs/kube-dns-778415672 1 1 1 4h
12 rs/kubernetes-dashboard-latest-2375448378 1 1 1 4m
13
14 NAME READY STATUS RESTARTS AGE
15 po/kube-dns-778415672-f9ssw 4/4 Running 8 4h
16 po/kubernetes-dashboard-latest-2375448378-34m4f 1/1 Running 0 4m
17 [root@k8s-master dashboard]# kubectl get all --namespace=kube-system -o wide
18 NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
19 deploy/kube-dns 1 1 1 1 4h
20 deploy/kubernetes-dashboard-latest 1 1 1 1 4m
21
22 NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
23 svc/kube-dns 10.254.230.254 <none> 53/UDP,53/TCP 4h k8s-app=kube-dns
24 svc/kubernetes-dashboard 10.254.141.73 <none> 80/TCP 1m k8s-app=kubernetes-dashboard
25
26 NAME DESIRED CURRENT READY AGE CONTAINER(S) IMAGE(S) SELECTOR
27 rs/kube-dns-778415672 1 1 1 4h kubedns,dnsmasq,dnsmasq-metrics,healthz myhub.fdccloud.com/library/kubedns-amd64:1.9,myhub.fdccloud.com/library/kube-dnsmasq-amd64:1.4,myhub.fdccloud.com/library/dnsmasq-metrics-amd64:1.0,myhub.fdccloud.com/library/exechealthz-amd64:1.2 k8s-app=kube-dns,pod-template-hash=778415672
28 rs/kubernetes-dashboard-latest-2375448378 1 1 1 4m kubernetes-dashboard 192.168.110.133:5000/kubernetes-dashboard-amd64:v1.10.0 k8s-app=kubernetes-dashboard,kubernetes.io/cluster-service=true,pod-template-hash=2375448378,version=latest
29
30 NAME READY STATUS RESTARTS AGE IP NODE
31 po/kube-dns-778415672-f9ssw 4/4 Running 8 4h 172.16.32.3 k8s-node3
32 po/kubernetes-dashboard-latest-2375448378-34m4f 1/1 Running 0 4m 172.16.59.3 k8s-node2
33 [root@k8s-master dashboard]#
此時,就可以進行通路了,服務已經Running了。
2、首先,可以通路一下api-server,可以使用8080端口号。通路位址http://192.168.110.133:8080/。
接下來通路倒數第二行的/ui/,通路的效果,如下所示:
報錯,如下所示:
1 the server could not find the requested resource
這裡檢視k8s的版本,使用kubectl version。
1 [root@k8s-master ~]# kubectl version
2 Client Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"269f928217957e7126dc87e6adfa82242bfe5b1e", GitTreeState:"clean", BuildDate:"2017-07-03T15:31:10Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
3 Server Version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.2", GitCommit:"269f928217957e7126dc87e6adfa82242bfe5b1e", GitTreeState:"clean", BuildDate:"2017-07-03T15:31:10Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
4 [root@k8s-master ~]#
注意:k8s v1.5 web界面,kubernetes-dashboard v1.5 ,k8s的安裝版本和kubernetes-dashboard的版本對應,此時對k8s了解還不是很深,隻能一點點摸索了。
kubernetes dashboard鏡像擷取:docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/kubernetes-dashboard-amd64:v1.5.0。
這裡重新tag,并push到自己的私有鏡像倉庫了,指令如下所示:
1 [root@k8s-master dashboard]# docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/kubernetes-dashboard-amd64:v1.5.0
2 Trying to pull repository registry.cn-hangzhou.aliyuncs.com/google-containers/kubernetes-dashboard-amd64 ...
3 sha256:3bccb9256e8b14ae895d40d829ea45992389af3c1767a21eefbd4b3bf723f325: Pulling from registry.cn-hangzhou.aliyuncs.com/google-containers/kubernetes-dashboard-amd64
4 33a12e3650c8: Pull complete
5 Digest: sha256:3bccb9256e8b14ae895d40d829ea45992389af3c1767a21eefbd4b3bf723f325
6 Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/google-containers/kubernetes-dashboard-amd64:v1.5.0
7 [root@k8s-master dashboard]# docker images
8 REPOSITORY TAG IMAGE ID CREATED SIZE
9 192.168.110.133:5000/tomcat latest 2eb5a120304e 8 days ago 647 MB
10 docker.io/tomcat latest 2eb5a120304e 8 days ago 647 MB
11 192.168.110.133:5000/mysql 5.7.30 9cfcce23593a 9 days ago 448 MB
12 docker.io/mysql 5.7.30 9cfcce23593a 9 days ago 448 MB
13 docker.io/busybox latest 1c35c4412082 2 weeks ago 1.22 MB
14 docker.io/registry latest 708bc6af7e5e 4 months ago 25.8 MB
15 192.168.110.133:5000/nginx 1.15 53f3fd8007f7 13 months ago 109 MB
16 docker.io/nginx 1.15 53f3fd8007f7 13 months ago 109 MB
17 192.168.110.133:5000/kubernetes-dashboard-amd64 v1.10.0 9e12bc435ba6 15 months ago 122 MB
18 registry.cn-qingdao.aliyuncs.com/wangxiaoke/kubernetes-dashboard-amd64 v1.10.0 9e12bc435ba6 15 months ago 122 MB
19 docker.io/nginx 1.13 ae513a47849c 2 years ago 109 MB
20 192.168.110.133:5000/nginx 1.13 ae513a47849c 2 years ago 109 MB
21 registry.access.redhat.com/rhel7/pod-infrastructure latest 99965fb98423 2 years ago 209 MB
22 192.168.110.133:5000/pod-infrastructure latest 34d3450d733b 3 years ago 205 MB
23 registry.cn-hangzhou.aliyuncs.com/google-containers/kubernetes-dashboard-amd64 v1.5.0 e5133bac8024 3 years ago 88.9 MB
24 [root@k8s-master dashboard]# docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/kubernetes-dashboard-amd64:v1.5.0 192.168.110.133:5000/kubernetes-dashboard-amd64:v1.5.0
25 [root@k8s-master dashboard]# docker push 192.168.110.133:5000/kubernetes-dashboard-amd64:v1.5.0
26 The push refers to a repository [192.168.110.133:5000/kubernetes-dashboard-amd64]
27 0341ae9b0004: Pushed
28 v1.5.0: digest: sha256:ddd3454819c089517b434a3ea42abf3c184fce9bf45704abf22513082d900eba size: 529
29 [root@k8s-master dashboard]#
然後将建立的Pod删除掉,修改deployment配置檔案dashboard-deploy.yaml。
1 [root@k8s-master dashboard]# vim dashboard-deploy.yaml
修改内容,如下所示:
删除建立的delpoyment、svc。
1 [root@k8s-master dashboard]# vim dashboard-deploy.yaml
2 [root@k8s-master dashboard]# kubectl get svc
3 NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
4 kubernetes 10.254.0.1 <none> 443/TCP 14d
5 [root@k8s-master dashboard]# kubectl get svc --namespace=kube-system
6 NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
7 kube-dns 10.254.230.254 <none> 53/UDP,53/TCP 7h
8 kubernetes-dashboard 10.254.141.73 <none> 80/TCP 2h
9 [root@k8s-master dashboard]# kubectl delete svc --namespace=kube-system kubernetes-dashboard
10 service "kubernetes-dashboard" deleted
11 [root@k8s-master dashboard]# kubectl get svc --namespace=kube-system
12 NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
13 kube-dns 10.254.230.254 <none> 53/UDP,53/TCP 7h
14 [root@k8s-master dashboard]# kubectl get deployment --namespace=kube-system
15 NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
16 kube-dns 1 1 1 1 7h
17 kubernetes-dashboard-latest 1 1 1 1 2h
18 [root@k8s-master dashboard]# kubectl delete deployment --namespace=kube-system kubernetes-dashboard-latest
19 deployment "kubernetes-dashboard-latest" deleted
20 [root@k8s-master dashboard]#
再次建立delpoyment、svc。
1 [root@k8s-master dashboard]# kubectl get deployment --namespace=kube-system
2 NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
3 kube-dns 1 1 1 1 7h
4 kubernetes-dashboard-latest 1 1 1 1 2h
5 [root@k8s-master dashboard]# kubectl delete deployment --namespace=kube-system kubernetes-dashboard-latest
6 deployment "kubernetes-dashboard-latest" deleted
7 [root@k8s-master dashboard]# kubectl get all -o wide --namespace=kube-system
8 NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
9 deploy/kube-dns 1 1 1 1 7h
10
11 NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
12 svc/kube-dns 10.254.230.254 <none> 53/UDP,53/TCP 7h k8s-app=kube-dns
13
14 NAME DESIRED CURRENT READY AGE CONTAINER(S) IMAGE(S) SELECTOR
15 rs/kube-dns-778415672 1 1 1 7h kubedns,dnsmasq,dnsmasq-metrics,healthz myhub.fdccloud.com/library/kubedns-amd64:1.9,myhub.fdccloud.com/library/kube-dnsmasq-amd64:1.4,myhub.fdccloud.com/library/dnsmasq-metrics-amd64:1.0,myhub.fdccloud.com/library/exechealthz-amd64:1.2 k8s-app=kube-dns,pod-template-hash=778415672
16
17 NAME READY STATUS RESTARTS AGE IP NODE
18 po/kube-dns-778415672-f9ssw 4/4 Running 12 7h 172.16.32.3 k8s-node3
19 [root@k8s-master dashboard]# ls
20 dashboard-deploy.yaml dashboard-svc.yaml
21 [root@k8s-master dashboard]# kubectl create -f dashboard-deploy.yaml
22 deployment "kubernetes-dashboard-latest" created
23 [root@k8s-master dashboard]# kubectl create -f dashboard-svc.yaml
24 service "kubernetes-dashboard" created
25 [root@k8s-master dashboard]# kubectl get all -o wide --namespace=kube-system
26 NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
27 deploy/kube-dns 1 1 1 1 7h
28 deploy/kubernetes-dashboard-latest 1 1 1 1 15s
29
30 NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
31 svc/kube-dns 10.254.230.254 <none> 53/UDP,53/TCP 7h k8s-app=kube-dns
32 svc/kubernetes-dashboard 10.254.12.102 <none> 80/TCP 9s k8s-app=kubernetes-dashboard
33
34 NAME DESIRED CURRENT READY AGE CONTAINER(S) IMAGE(S) SELECTOR
35 rs/kube-dns-778415672 1 1 1 7h kubedns,dnsmasq,dnsmasq-metrics,healthz myhub.fdccloud.com/library/kubedns-amd64:1.9,myhub.fdccloud.com/library/kube-dnsmasq-amd64:1.4,myhub.fdccloud.com/library/dnsmasq-metrics-amd64:1.0,myhub.fdccloud.com/library/exechealthz-amd64:1.2 k8s-app=kube-dns,pod-template-hash=778415672
36 rs/kubernetes-dashboard-latest-3333846798 1 1 1 15s kubernetes-dashboard 192.168.110.133:5000/kubernetes-dashboard-amd64:v1.5.0 k8s-app=kubernetes-dashboard,kubernetes.io/cluster-service=true,pod-template-hash=3333846798,version=latest
37
38 NAME READY STATUS RESTARTS AGE IP NODE
39 po/kube-dns-778415672-f9ssw 4/4 Running 12 7h 172.16.32.3 k8s-node3
40 po/kubernetes-dashboard-latest-3333846798-j8zjc 1/1 Running 0 15s 172.16.59.3 k8s-node2
41 [root@k8s-master dashboard]#
通路路徑,檢視界面。http://192.168.110.133:8080/ui/
k8s的dashboard是k8s的一個web界面的工具,可以建立多種資源或者删除資源。注意,如果三台機器挂起之後,第二次直接啟動,你的dashboard好像不能通路耶,我直接重新開機了三台機器就行了,因為我的所有元件服務都是設定的開機自啟動,避免了一些麻煩。
使用k8s的dashboard建立資源來建立一個資源,有兩種方式,第一種是按照規則填寫,第二種是上傳Json格式的檔案。
可以看到,預設是Deployment,這個很多東西估計和自己的dashboard的版本有關,是以根據自己的情況進行判斷即可。
接下來,可以多這個Deployment進行删除或者編輯配置檔案,這裡将它删除掉。
然後,可以将建立的Service删除掉,如下所示:
這裡Replica Sets也删除掉,deployment并不像RC直接去啟動Pod,它們之間的差別是deployment會啟動一個RS,RS擁有RC的百分之九十的功能,比RC的功能還多一些。
1 [root@k8s-master ~]# kubectl get pod -o wide --namespace=kube-system
2 NAME READY STATUS RESTARTS AGE IP NODE
3 kube-dns-778415672-q23st 4/4 Running 4 44m 172.16.92.4 k8s-master
4 kubernetes-dashboard-latest-3333846798-j8zjc 1/1 Running 1 3d 172.16.19.3 k8s-node2
5 nginx-2392975400-kmmth 1/1 Running 0 7m 172.16.93.3 k8s-node3
6 nginx-2392975400-xcfcc 1/1 Running 0 7m 172.16.19.4 k8s-node2
7 [root@k8s-master ~]# kubectl get pod -o wide --namespace=kube-system
8 NAME READY STATUS RESTARTS AGE IP NODE
9 kube-dns-778415672-q23st 4/4 Running 4 47m 172.16.92.4 k8s-master
10 kubernetes-dashboard-latest-3333846798-j8zjc 1/1 Running 1 3d 172.16.19.3 k8s-node2
11 [root@k8s-master ~]#