Kubernetes(k8s)中dashboard的部署。

1、k8s的dashboard的安裝部署,首先需要將壓縮包下載下來,然後進行解壓縮操作。

 1 [[email protected] ~]# cd k8s/
 2 [[email protected]master k8s]# ls
 3 book-master.war  deploy  health  pod  rc  skydns  skydns.zip  svc  tomcat_demo  tomcat_demo.zip
 4 [[email protected] 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 [[email protected]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 [[email protected] k8s]# 

查看配置文件dashboard-deploy.yaml,並對配置進行修改。

1 [[email protected] dashboard]# vim dashboard-deploy.yaml

首先,需要將kubernetes-dashboard-amd64下載下來,然後上傳到私有倉庫裏面,方便使用。

 1 [[email protected] ~]# 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 [[email protected] ~]# 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 [[email protected] ~]# 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 [[email protected] ~]# 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 [[email protected] ~]# 

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 [[email protected] dashboard]# kubectl create -f dashboard-deploy.yaml 
2 deployment "kubernetes-dashboard-latest" created

修改dashboard-svc.yaml配置文件,其中port是VIP的端口,targetPort是容器的端口,訪問vip的端口80就會跳轉到targetPort的9090端口。

[[email protected] 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 [[email protected] dashboard]# kubectl create -f dashboard-svc.yaml 
2 service "kubernetes-dashboard" created
3 [[email protected] dashboard]# 

創建完畢,查看是否已經正常啓動了。

 1 [[email protected] 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 [[email protected] 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 [[email protected] 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 [[email protected] ~]# 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 [[email protected] ~]# 

注意: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 [[email protected] 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 [[email protected]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 [[email protected] 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 [[email protected] 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 [[email protected] dashboard]# 

然後將創建的Pod刪除掉,修改deployment配置文件dashboard-deploy.yaml。

1 [[email protected] dashboard]# vim dashboard-deploy.yaml 

修改內容,如下所示:

刪除創建的delpoyment、svc。

 1 [[email protected] dashboard]# vim dashboard-deploy.yaml 
 2 [[email protected]8s-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 [[email protected] 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 [[email protected] dashboard]# kubectl delete svc --namespace=kube-system kubernetes-dashboard 
10 service "kubernetes-dashboard" deleted
11 [[email protected] 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 [[email protected] 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 [[email protected] dashboard]# kubectl delete deployment --namespace=kube-system kubernetes-dashboard-latest 
19 deployment "kubernetes-dashboard-latest" deleted
20 [[email protected] dashboard]# 

再次新建delpoyment、svc。

 1 [[email protected] 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 [[email protected] dashboard]# kubectl delete deployment --namespace=kube-system kubernetes-dashboard-latest 
 6 deployment "kubernetes-dashboard-latest" deleted
 7 [[email protected] 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 [[email protected]master dashboard]# ls
20 dashboard-deploy.yaml  dashboard-svc.yaml
21 [[email protected] dashboard]# kubectl create -f dashboard-deploy.yaml 
22 deployment "kubernetes-dashboard-latest" created
23 [[email protected] dashboard]# kubectl create -f dashboard-svc.yaml 
24 service "kubernetes-dashboard" created
25 [[email protected] 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 [[email protected] 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的功能還多一些。

此時,可以看到創建的兩個Pod也就刪除掉了。

 1 [[email protected] ~]# 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 [[email protected] ~]# 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 [[email protected] ~]#