kubernetes实战篇之dashboard搭建
系列目录
kubernetes dashboard是kubernetes官方提供的web管理界面,通过dashboard可以很方便地查看集群的各种资源.以及修改资源编排文件,对集群进行扩容操作,查看日志等.功能非常强大.虽然dashboard是官方提供的web管理界面,但是并没有默认安装,需要额外安装.下面将介绍如何安装kubernetes dashboard以及如何访问.
dashboard安装
使用如下命令:
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
在windows平台在浏览器直接输入网址即可下载
把dashboard的yaml编排文件下载下来到本地,然后进入下载目录,修改刚下载的kubernetes-dashboard.yaml
文件,找到image
栏,删除它的值(不要把键删了,即删除image:后面的值,保留键),然后替换为:registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.0
注意,有些网上的教程直接使用kubernetes的官方提供的安装命令,即
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended/kubernetes-dashboard.yaml
这是不科学的,因为这个yml文件使用的镜像存放在gcr.io
上,很多用户是无法访问的,因此需要修改镜像源.
修改完yml文件后,我们在kubernetes-dashboard.yaml
所在目录执行kubectl apply -f kubernetes-dashboard.yaml
即可完成安装.
使用proxy方式访问 dashboard
这里先介绍一个坑,就是很多互联网上的教程照般官网上的示例教程,即使用kubectl proxy
然后在浏览器输入http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/.
,这种方式只能用在windows或者mac上的docker.而linux服务器往往是没有图形界面的,没法直接通过浏览器访问,机智的你可能马上会想到,把localhost换成对应主机的ip,即可以在局域网访问了.然而实际情况并没有这么美好,大家可以试一下改成ip后也是访问不了的.
正确的姿势是执行以下命令:
kubectl proxy --address='0.0.0.0' --accept-hosts='^*$'
这时候就可以通过其它主机访问dashboard了.(以上地址中localhost改为ip地址)
如果没有登陆,则会默认定向到登陆页面,可以使用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-5bmgnkubernetes.io/service-account.name: defaultkubernetes.io/service-account.uid: f760bf27-44ab-11e9-a5c4-0050568417a2Type: kubernetes.io/service-account-tokenData
====
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.
- 创建一个dashboard管理用户
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-adminkubernetes.io/service-account.uid: c60d2a65-619e-11e9-a627-0050568417a2Type: kubernetes.io/service-account-tokenData
====
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栏里,就可以登陆了.登陆以后就可以看到如上面最后展示的有完整信息的界面.
使用kubeconfig文件访问
这里只记录下命令,不做详细介绍,在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.confkubectl config set-credentials dashboard-admin --token=$DASH_TOCKEN --kubeconfig=/root/dashbord-admin.confkubectl config set-context dashboard-admin@kubernetes --cluster=kubernetes --user=dashboard-admin --kubeconfig=/root/dashbord-admin.confkubectl 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按钮.
转载于:https://www.cnblogs.com/tylerzhou/p/11117956.html
kubernetes实战篇之dashboard搭建相关推荐
- kubernetes实战篇之Dashboard的访问权限限制
前面我们的示例中,我们创建的ServiceAccount是与cluster-admin 绑定的,这个用户默认有最高的权限,实际生产环境中,往往需要对不同运维人员赋预不同的权限.而根据实际情况也可能会赋 ...
- kubernetes实战篇之通过api-server访问dashboard
系列目录 前面一节我们介绍了如何使用kube-proxy搭建代理访问dashboard,这样做缺点非常明显,第一可以通过http访问,第二是这种方式要启动一个后台进程,如果进程关闭了则不能够访问了,还 ...
- kubernetes实战篇之创建密钥自动拉取私服镜像
系列目录 前面我们讲解了如何搭建nexus服务器,以及如何使用nexus搭建docker私有镜像仓库,示例中我们都是手动docker login登陆私服,然后通过命令拉取镜像然后运行容器.然而这种做法 ...
- kubernetes实战篇之helm示例yaml文件文件详细介绍
前面完整示例里,我们主要讲解helm打包,部署,升级,回退等功能,关于这里面的文件只是简单介绍,这一节我们详细介绍一下这里面的文件,以方便我们参照创建自己的helm chart. Helm Chart ...
- kubernetes实战篇之windows添加自签ca证书信任
系列目录 由于服务端设置了https访问,因此如果通过浏览器访问时会提示证书不被信任,但是仍然可以通过处理继续访问.但是在自动化环境中,都是通过命令来请求的,这样不受信任的https就会报错误,这样我 ...
- 【云原生 | Kubernetes 实战】01、K8s-v1.25集群搭建和部署基于网页的 K8s 用户界面 Dashboard
目录 一.K8s 概述 可以查看官方文档:概述 | Kubernetes 组件交互逻辑: 二.kubeadm 安装 K8s-v1.25高可用集群 k8s 环境规划: 1.初始化环境 2.安装 Dock ...
- 阿里云Kubernetes实战2–搭建基础服务
前言: 在系列的第一篇文章中,我已经介绍过如何在阿里云基于kubeasz搭建K8S集群,通过在K8S上部署gitlab并暴露至集群外来演示服务部署与发现的流程.文章写于4月,忙碌了小半年后,我才有时间 ...
- 使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇
使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用Cloudera Manager搭建zo ...
- Vue实战篇一: 使用Vue搭建注册登录界面
系列文章目录 Vue基础篇一:编写第一个Vue程序 Vue基础篇二:Vue组件的核心概念 Vue基础篇三:Vue的计算属性与侦听器 Vue基础篇四:Vue的生命周期(秒杀案例实战) Vue基础篇五:V ...
最新文章
- CloudCompare基础架构介绍(PPT)
- AI真的会杀人?DeepMind开发了二维网格游戏来做测试
- 笔记-信息系统开发基础-uml-uml类图关系
- MFC CListCtrl
- oracle10客户端tnsname,连接Oracle RAC 的tnsname.ora设置
- docker安装es+kibana
- 智慧城市是什么?为什么要建智慧城市?
- 2020年度十大高薪岗位出炉!程序员霸榜!
- perf_event 事件类型与分类
- 用python写一个文字版单机斗地主
- 【samba】Wodows同步Linux文件|搭建共享文件服务器——在windows上映射网络驱动器...
- 热议:CSS为什么这么难学?一定是你的方法不对
- 降本增效这九个月,爱奇艺从“穿越火线”,到“冷静增长”
- 成功鲜有偶然:一览IT名人的教育成长经历
- 科罗拉多州奥罗拉市用基于磁盘的ExaGrid系统取代磁带备份
- vue中xlsx导出多个sheet页
- 鲎试剂停产,内毒素检测大地震!重组C因子法了解一下
- 不再贩卖「情怀」的锤子手机
- Android 调用系统照相机拍照和录像
- php注册验证用户名已存在,php ajax注册验证用户名是否存在代码_PHP教程