安装 Kubernetes Dashboard
安装 Kubernetes Dashboard
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
但是由于国内的环境,实际上镜像是下载不下来的。所以需要稍稍麻烦一下。
$ wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
$ vim kubernetes-dashboard.yaml
将其中的
image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
改成
image: registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1
然后继续
$ kubectl apply -f kubernetes-dashboard.yaml
这样之后我们的 Kubernetes Dashboard 就运行起来了。
然后可以使用kubectl get pods命令来查看部署状态:
$ kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE calico-node-892sq 2/2 Running 0 172m coredns-fb8b8dccf-ss6vw 1/1 Running 0 3h coredns-fb8b8dccf-tnhrf 1/1 Running 0 3h etcd-k8s-master 1/1 Running 0 179m kube-apiserver-k8s-master 1/1 Running 0 179m kube-controller-manager-k8s-master 1/1 Running 0 179m kube-proxy-dv6xg 1/1 Running 0 3h kube-scheduler-k8s-master 1/1 Running 0 179m kubernetes-dashboard-78f989899d-qnrd6 1/1 Running 0 43m
如果 Kubernetes 是本地的,那么直接输入下面命令
$ kubectl proxy
就可以访问 Dashboard 了
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
如果是远程的,需要外网访问,那么可以输入下面命令
$ kubectl proxy --address='0.0.0.0' --accept-hosts='^*$'
然后访问
http(s): //MasterIP:8001/api/v1/namespaces/kube-system/services/http(s):kubernetes-dashboard:/proxy/
这样会发现,我们还需要登录
生成用户 Token
参考官方的例子 https://github.com/kubernetes/dashboard/wiki/Creating-sample-user
创建一个用户
# admin-user.yaml apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kube-system
执行kubectl create命令
$ kubectl create -f admin-user.yaml
绑定权限
默认情况下,kubeadm创建集群时已经创建了admin角色,我们直接绑定即可:
# admin-user-role-binding.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kube-system
执行kubectl create命令:
$ kubectl create -f admin-user-role-binding.yaml
生成 Token
现在我们需要找到新创建的用户的Token,以便用来登录dashboard:
$ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}') Name: admin-user-token-jhr7k Namespace: kube-system Labels: <none> Annotations: kubernetes.io/service-account.name: admin-user kubernetes.io/service-account.uid: 5135e54c-6feb-11e9-93ab-fa163e67e1f7 Type: kubernetes.io/service-account-token Data ==== ca.crt: 1025 bytes namespace: 11 bytes token: (这里假装有一个很长的 Token)
然后把 Token 复制到登录界面的 Token 输入框中,就可以进入 Dashboard 了
这样实际上还是很麻烦,因为默认好像是 https 的,所以你点击的登录仍然不会有反应。
最简单的方式是NodePort
NodePort
NodePort是将节点直接暴露在外网的一种方式,不过只建议在开发环境,单节点的安装方式中使用。
启用NodePort很简单,只需执行kubectl edit命令进行编辑:
$ kubectl -n kube-system edit service kubernetes-dashboard
然后我们将其中的type: ClusterIP修改为type: NodePort,保存后使用kubectl get service命令来查看自动生产的端口:
$ kubectl -n kube-system get service kubernetes-dashboard NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes-dashboard NodePort 10.102.85.53 <none> 443:30943/TCP 3h45m
然后,可以访问
http(s): //MasterIP:30943
并且用之前生成的 Token 登录即可