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.25453/UDP,53/TCP 4h 8 svc/kubernetes-dashboard 10.254.141.73 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 53/UDP,53/TCP 4h k8s-app=kube-dns 24 svc/kubernetes-dashboard 10.254.141.73 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.1443/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 53/UDP,53/TCP 7h 8 kubernetes-dashboard 10.254.141.73 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 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.25453/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 53/UDP,53/TCP 7h k8s-app=kube-dns 32 svc/kubernetes-dashboard 10.254.12.102 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的功能还多一些。
此时,可以看到创建的两个Pod也就删除掉了。
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 ~]#