系列目录html
kubernetes dashboard是kubernetes官方提供的web管理界面,经过dashboard能够很方便地查看集群的各类资源.以及修改资源编排文件,对集群进行扩容操做,查看日志等.功能很是强大.虽然dashboard是官方提供的web管理界面,可是并无默认安装,须要额外安装.下面将介绍如何安装kubernetes dashboard以及如何访问.node
使用以下命令:linux
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
在windows平台在浏览器直接输入网址便可下载git
把dashboard的yaml编排文件下载下来到本地,而后进入下载目录,修改刚下载的kubernetes-dashboard.yaml
文件,找到image
栏,删除它的值(不要把键删了,即删除image:后面的值,保留键),而后替换为:registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.0
github
注意,有些网上的教程直接使用kubernetes的官方提供的安装命令,即
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
这是不科学的,由于这个yml文件使用的镜像存放在gcr.io
上,不少用户是没法访问的,所以须要修改镜像源.web
修改完yml文件后,咱们在kubernetes-dashboard.yaml
所在目录执行kubectl apply -f kubernetes-dashboard.yaml
便可完成安装.docker
这里先介绍一个坑,就是不少互联网上的教程照般官网上的示例教程,即便用kubectl proxy
而后在浏览器输入http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/.
,这种方式只能用在windows或者mac上的docker.而linux服务器每每是没有图形界面的,无法直接经过浏览器访问,机智的你可能立刻会想到,把localhost换成对应主机的ip,便可以在局域网访问了.然而实际状况并无这么美好,你们能够试一下改为ip后也是访问不了的.json
正确的姿式是执行如下命令:bootstrap
kubectl proxy --address='0.0.0.0' --accept-hosts='^*$'
这时候就能够经过其它主机访问dashboard了.(以上地址中localhost改成ip地址)windows
若是没有登录,则会默认定向到登录页面,可使用config或者token方式登录.咱们这里使用token方式登录.
通常状况下,登录的token默认都以secret对象的形式存在kube-system
名称空间下,咱们执行kubectl get secret -n=kube-system
attachdetach-controller-token-zzdbv kubernetes.io/service-account-token 3 37d bootstrap-signer-token-kn7mv kubernetes.io/service-account-token 3 37d certificate-controller-token-ck4bp kubernetes.io/service-account-token 3 37d clusterrole-aggregation-controller-token-gd8sq kubernetes.io/service-account-token 3 37d coredns-token-tm8nw kubernetes.io/service-account-token 3 37d cronjob-controller-token-4p64q kubernetes.io/service-account-token 3 37d daemon-set-controller-token-dhl8h kubernetes.io/service-account-token 3 37d dashboard-admin-token-sg6bp kubernetes.io/service-account-token 3 23h default-token-tl6cs kubernetes.io/service-account-token 3 37d deployment-controller-token-bs8zp kubernetes.io/service-account-token 3 37d disruption-controller-token-snpvq kubernetes.io/service-account-token 3 37d endpoint-controller-token-4kgz8 kubernetes.io/service-account-token 3 37d expand-controller-token-6j57x kubernetes.io/service-account-token 3 37d flannel-token-f857v kubernetes.io/service-account-token 3 37d generic-garbage-collector-token-2j6zz kubernetes.io/service-account-token 3 37d horizontal-pod-autoscaler-token-l7gt5 kubernetes.io/service-account-token 3 37d job-controller-token-57rtv kubernetes.io/service-account-token 3 37d kube-proxy-token-bf969 kubernetes.io/service-account-token 3 37d kubernetes-dashboard Opaque 0 36d kubernetes-dashboard-key-holder Opaque 2 36d kubernetes-dashboard-token-8z4v2 kubernetes.io/service-account-token 3 36d namespace-controller-token-zp4vx kubernetes.io/service-account-token 3 37d node-controller-token-9kbmx kubernetes.io/service-account-token 3 37d persistent-volume-binder-token-knjs7 kubernetes.io/service-account-token 3 37d pod-garbage-collector-token-p7xhk kubernetes.io/service-account-token 3 37d pv-protection-controller-token-9rsjc kubernetes.io/service-account-token 3 37d pvc-protection-controller-token-5z68z kubernetes.io/service-account-token 3 37d replicaset-controller-token-gsfhs kubernetes.io/service-account-token 3 37d replication-controller-token-pvgrh kubernetes.io/service-account-token 3 37d resourcequota-controller-token-pmtsh kubernetes.io/service-account-token 3 37d service-account-controller-token-6zvnc kubernetes.io/service-account-token 3 37d service-controller-token-dnw2d kubernetes.io/service-account-token 3 37d statefulset-controller-token-zn6tn kubernetes.io/service-account-token 3 37d tiller-token-7lpwt kubernetes.io/service-account-token 3 10d token-cleaner-token-df7n5 kubernetes.io/service-account-token 3 37d ttl-controller-token-kfsh5 kubernetes.io/service-account-token 3 37d [centos@k8s-master dashboard]$
这些secrets中的大部分均可以用来访问dashboard的,只有不一样的帐户权限不一样,不少帐户被限制不能进行操做.好比咱们使用名称为default-token-tl6cs
的secret包含的token进行登录
注意,不一样的机器上secret的名称是不同的,读者以本身实际状况为主.
咱们使用如下命令来查看这个secret包含的token的值
[centos@k8s-master dashboard]$ kubectl describe secret -n=kube-system default-token-tl6cs Name: default-token-tl6cs Namespace: kube-system Labels: <none> Annotations: field.cattle.io/projectId: c-tms4q:p-5bmgn kubernetes.io/service-account.name: default kubernetes.io/service-account.uid: f760bf27-44ab-11e9-a5c4-0050568417a2 Type: kubernetes.io/service-account-token Data ==== ca.crt: 1025 bytes namespace: 11 bytes token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZWZhdWx0LXRva2VuLXRsNmNzIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImRlZmF1bHQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJmNzYwYmYyNy00NGFiLTExZTktYTVjNC0wMDUwNTY4NDE3YTIiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06ZGVmYXVsdCJ9.yVU85i5naX14TimIlQL0jgTv0oFsEFix7l55Wo09_Q9KbTavL2cjpdu26fHF7OtMCgGAsqxO0R_vOy_vVaPav6AvRWmCBPUEBr_oG_AcJCzdWvmCQkClAGaoZjGNx_qAbuJ3ZD9CG7C_QzjIIqMtjN7DVWjop2vQbByZL2yqkavMchuatr_LYkb_EsaGSKXFAZfDlqt7IO9IqGULl5Ri99fojCD230ji9QRO7x5g75Z6nBT1xf1g7txSAOppEn9S_J90CJ30tt0c9pEAhQ1qisLWpw0sZTBjjq4XcTjAszKe2u3G-ed5XLwEe_0xylbubRhT68XKWKUgBYx8IaqxIA [centos@k8s-master dashboard]$
咱们复制以上token值,而后粘贴到登录页面的token里,就能够登录了.
能够看到已经登录进来了,可是这个用户没有任何权限,甚至连查看权限都没有.
咱们使用一个叫做replicaset-controller-token-gsfhs
的secret里包含的token来登录,根据名字能够大概能够知道它是用来管理replicaset用的.实际上也确实是的,咱们用它的token登录来看一下web界面展现的内容
这里仅展现内容,操做方法与以上同样,这里就略过了
下面展现的还有replicaset的信息,这里我就没有截这么多.
因为replicaset包含的是pod的集合,所以这里展现出的有pod的信息
初次接触的朋友可能并不知道以上是否是展现的所有信息,由于并无见过完整信息是什么样子的,这里先展现一下一个拥有完整权限的用户登录后展现的信息是什么样子的.
从图形概览上能够看到,展现的信息比以上多.
下面咱们来说解如何配置一个拥有完整权限的token.
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
执行完以上操做后,因为管理用户的名称为dashboard-admin
,生成的对应的secret的值则为dashboard-admin-token-随机字符串
个人机器上完整名称为dashboard-admin-token-sg6bp
[centos@k8s-master dashboard]$ kubectl get secret -n=kube-system |grep dashboard-admin-token dashboard-admin-token-sg6bp kubernetes.io/service-account-token 3 23h [centos@k8s-master dashboard]$
能够看到这个secret的完整名称,或者不使用grep管道,列出全部的secrets,而后从中寻找须要的.
经过上面介绍过的kubectl describe secret
命令查看token
[centos@k8s-master dashboard]$ kubectl describe -n=kube-system secret dashboard-admin-token-sg6bp Name: dashboard-admin-token-sg6bp Namespace: kube-system Labels: <none> Annotations: kubernetes.io/service-account.name: dashboard-admin kubernetes.io/service-account.uid: c60d2a65-619e-11e9-a627-0050568417a2 Type: kubernetes.io/service-account-token Data ==== ca.crt: 1025 bytes namespace: 11 bytes token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tc2c2YnAiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYzYwZDJhNjUtNjE5ZS0xMWU5LWE2MjctMDA1MDU2ODQxN2EyIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.Ai8UqLHNbwVFf4QRq1p0JdVVy-KuguSTrsJRYmh-TEArH-Bkp0yBWNPpsP8fKL8MRMwlZEyJml-GZEoWvEbInvrgLHtMgA0A6Xbq89fvXqnLQBWsjEnrdIBSHmksLk4v_ldvVrnr6XXK8LGB34TVWxeYvSfv8aF35hXAV_r5-p18t7m9GFxU0_z1Gq1Af9GMA4wotERaWd1hHqNIcrDF8UpgUw2952nIu_VxGSV6eCagPxlpjbyAPrcEjSBK7O7QACtKXnG0bW8MqNaNYiLksYpvtJS7f0GlTeTpDZoj--5gJqAcNanCy7eQU8LuF-fiUaZIfXe0ZaWH0M1mjcAskA [centos@k8s-master dashboard]$
咱们把以上token复制到登录页面的token栏里,就能够登录了.登录之后就能够看到如上面最后展现的有完整信息的界面.
这里只记录下命令,不作详细介绍,在dashboard 1.10.1里尝试了数次以及按照官网设置--authentication-mode=config
也不行,这里就再也不作详细介绍了.
DASH_TOCKEN=$(kubectl get secret -n kube-system dashboard-admin-token-sg6bp -o jsonpath={.data.token}|base64 -d) kubectl config set-cluster kubernetes --server=192.168.124.59:6443 --kubeconfig=/root/dashbord-admin.conf kubectl config set-credentials dashboard-admin --token=$DASH_TOCKEN --kubeconfig=/root/dashbord-admin.conf kubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/dashbord-admin.conf kubectl config user-context dashboard-admin@kubernets --kubeconfig=/root/dashbord-admin.conf 生成的dashbord-admin.conf便可用于登陆dashboard
跳过
登录根据使用的版本不一样,可能有的版本包含skip
按钮,有的则不包含,在1.10.1里面默认再也不显然skip按钮,其实dashboard安装有不少坑,若是有读者按照以上设置仍然不能正常成功登录,可是仍然想要体验dashboard,能够开启默认关闭的skip
按钮,这样就能够进入到dashboard管理界面了.
注意,生产环境强烈不建议这样作.
执行命令
kubectl edit deploy -n=kube-system kubernetes-dashboard
在containers下面的args栏里输入
- --enable-skip-login
内容以下
而后保存便可.刷新web页面,登录界面就会多出一个skip按钮.