Kubernetes系列之六:安装k8s通用的Web UI(Dashboard)
系列链接Kubernetes系列之一:在Ubuntu上快速搭建一个集群DemoKubernetes系列之二:将Slave节点加入集群Kubernetes系列之三:部署你的第一个应用程序到k8s集群Kubernetes系列之四:使用yaml文件创建deployment来部署一个应用程序到k8s集群Kubernetes系列之五:使用yaml文件创建service向外暴露服务Ku...
系列链接
Kubernetes系列之一:在Ubuntu上快速搭建一个集群Demo
Kubernetes系列之三:部署你的第一个应用程序到k8s集群
Kubernetes系列之四:使用yaml文件创建deployment来部署一个应用程序到k8s集群
Kubernetes系列之五:使用yaml文件创建service向外暴露服务
Kubernetes系列之六:安装k8s通用的Web UI(Dashboard)
安装k8s通用的Web UI(Dashboard)
这篇文章我们打算安装k8s官方的UI界面,这个界面能显示所有的工作负载(workload),包括运行的Nodes,Services,Pods,Jobs,Relica sets等k8s资源。
首先你需要连接VPN,不然的话,运行接下来的 kubectl create命令后,你会发现新建的pod会报ImagePullBackOff的错误。
kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
这里是我踩过的坑,如下:
root@kube-master:/home/cong# kubectl describe pods/kubernetes-dashboard-6948bdb78-w9452 --namespace=kube-system
Name: kubernetes-dashboard-6948bdb78-w9452
Namespace: kube-system
Priority: 0
PriorityClassName: <none>
Node: kube-master/192.168.29.138
Start Time: Mon, 20 Aug 2018 05:25:50 -0700
Labels: k8s-app=kubernetes-dashboard
pod-template-hash=250468634
Annotations: cni.projectcalico.org/podIP=10.244.0.30/32
Status: Pending
IP: 10.244.0.30
Controlled By: ReplicaSet/kubernetes-dashboard-6948bdb78
Containers:
kubernetes-dashboard:
Container ID:
Image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3
Image ID:
Port: 8443/TCP
Host Port: 0/TCP
Args:
--auto-generate-certificates
State: Waiting
Reason: ImagePullBackOff
Ready: False
Restart Count: 0
Liveness: http-get https://:8443/ delay=30s timeout=30s period=10s #success=1 #failure=3
Environment: <none>
Mounts:
/certs from kubernetes-dashboard-certs (rw)
/tmp from tmp-volume (rw)
/var/run/secrets/kubernetes.io/serviceaccount from kubernetes-dashboard-token-5t4vr (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
kubernetes-dashboard-certs:
Type: Secret (a volume populated by a Secret)
SecretName: kubernetes-dashboard-certs
Optional: false
tmp-volume:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium:
kubernetes-dashboard-token-5t4vr:
Type: Secret (a volume populated by a Secret)
SecretName: kubernetes-dashboard-token-5t4vr
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node-role.kubernetes.io/master:NoSchedule
node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning Failed 37m (x94 over 20h) kubelet, kube-master Error: ErrImagePull
Normal BackOff 2m (x2100 over 20h) kubelet, kube-master Back-off pulling image "k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.3" # 这里可以看出来镜像拉取不下来
在发现这个问题前,我怀疑是不是我执行kubectl create命令有问题,所以之后,把创建的service给删掉了,然后我又发现这条创建命令不仅仅只创建一个service那么简单,这样一下子就乱掉了。然后机智我的发现K8s中所有的配置都是通过API对象的spec去设置的,也就是用户通过配置系统的理想状态来改变系统,这是k8s重要设计理念之一,即所有的操作都是声明式(Declarative)的而不是命令式(Imperative)的。
所以,接下执行了apply 命令
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
然后运行命令
kubectl proxy
访问 http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ ,然后你会看到这样的一个界面(来源其他网站,因为我配过token 后看不到此界面了)
创建一个cluster-admin角色的service account , 和一个clusterrolebinding, 以便访问所有的k8s资源
kubectl create serviceaccount cluster-admin-dashboard-sa
kubectl create clusterrolebinding cluster-admin-dashboard-sa \
--clusterrole=cluster-admin \
--serviceaccount=default:cluster-admin-dashboard-sa
Copy产生的Token,并使用此Token登录到dashboard中
root@kube-master:/home/cong# kubectl get secret | grep cluster-admin-dashboard-sa
cluster-admin-dashboard-sa-token-6thzn kubernetes.io/service-account-token 3 2m
root@kube-master:/home/cong# kubectl describe secrets/cluster-admin-dashboard-sa-token-6thzn
Name: cluster-admin-dashboard-sa-token-6thzn
Namespace: default
Labels: <none>
Annotations: kubernetes.io/service-account.name=cluster-admin-dashboard-sa
kubernetes.io/service-account.uid=4948b3f7-a524-11e8-8b23-000c29dbad4f
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1025 bytes
namespace: 7 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImNsdXN0ZXItYWRtaW4tZGFzaGJvYXJkLXNhLXRva2VuLTZ0aHpuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImNsdXN0ZXItYWRtaW4tZGFzaGJvYXJkLXNhIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNDk0OGIzZjctYTUyNC0xMWU4LThiMjMtMDAwYzI5ZGJhZDRmIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OmRlZmF1bHQ6Y2x1c3Rlci1hZG1pbi1kYXNoYm9hcmQtc2EifQ.OTweFHvblKXdX4AOwYydfvZojsdPKDXHFfXvy9YPjdX47x0aSNFEq93l-MnLmt2o55QpKM-ipXxyXojbMvrZYNoaID3JVJWBumg_U9ORq3sSZbI0x_0rNQAWDbsJNwfj73sWs47hSaLINJD7cT3BaFEqvi8F46kb2Cm7RdEyz_-4mKQk4Urhg9Xq7zWZ8UEQihp2XRREaMc15m4H2r8XhTGN_Xv_KFmh_sZy27XktzYxFEh03lIS-pZYzd98o2RLT2oJjup6mtVqzDGJ-jZKuF4g4tEpvLgEFXuPp2mwKDfgGAbewUBb-AjXkimoCltE_WrL_wz-KqqfzzpvjhVjKw
root@kube-master:/home/cong# kubectl proxy
Starting to serve on 127.0.0.1:8001
好了,终于看到界面了。。。
延伸阅读:
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
https://docs.giantswarm.io/guides/install-kubernetes-dashboard/#
更多推荐
所有评论(0)