您好,登录后才能下订单哦!
如何部署kubernates dashboard,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
直接部署官方默认的dashboard:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
官方默认的replica是1,可以下载官方的yaml文件,按需修改后部署
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
部署成功后输入命令查看Pod可以看到dashboard已经部署成功
$ kubectl -n kube-system get pods
输入命令查看Service,会发现dashboard的IP地址是一个自动分配的Cluster IP地址
$ kubectl -n kube-system get svc
在不配置任何网络策略的情况下,我们可以启动kube-proxy,用localhost进行访问。也可以修改service增加node port后通过node的IP地址进行访问。
在这里我修改了type为nodePort和指定了port
$ kubectl -n kube-system edit svc kubernetes-dashboard
apiVersion: v1 kind: Service metadata: annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"k8s-app":"kubernetes-dashboard"},"name":"kubernetes-dashboard","namespace":"kube-system"},"spec":{"ports":[{"port":443,"targetPort":8443}],"selector":{"k8s-app":"kubernetes-dashboard"}}} creationTimestamp: "2019-06-25T08:32:58Z" labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kube-system resourceVersion: "131106" selfLink: /api/v1/namespaces/kube-system/services/kubernetes-dashboard uid: d65ea8d9-9723-11e9-beba-08002777dcd3 spec: clusterIP: 10.105.212.27 ports: - nodePort: 31195 port: 443 protocol: TCP targetPort: 8443 selector: k8s-app: kubernetes-dashboard sessionAffinity: None type: NodePort status: loadBalancer: {}
修改后保存,可以看到service的TYPE已经变成NodePort,端口映射也完成了。
使用dashboard所在node的IP地址加上映射到Node的端口号可以直接访问Dashboard
https://192.168.7.87:31195/
登陆 dashboard 的时候支持 kubeconfig 和 token 两种认证方式,kubeconfig 中也依赖 token 字段,所以生成 token 这一步是必不可少的。
下文分两块来讲解两种登陆认证方式:
为 brand 命名空间下的 brand 用户创建 kubeconfig 文件
为集群的管理员(拥有所有命名空间的 amdin 权限)创建 token
登陆dashboard的时候可以指定kubeconfig
文件来认证用户权限,如何生成登陆dashboard时指定的kubeconfig
文件请参考创建用户认证授权的kubeconfig文件。
注意我们生成的 kubeconfig 文件中没有 token 字段,需要手动添加该字段。
比如我们为 brand namespace 下的 brand 用户生成了名为 brand.kubeconfig
的 kubeconfig 文件,还要再该文件中追加一行 token
的配置(如何生成 token 将在下文介绍),如下所示:
这样就可以使用brand.kubeconfig
文件来登陆dashboard了,而且只能访问和操作brand
命名空间下的对象。
需要创建一个 admin 用户并授予 admin 角色绑定,使用下面的 yaml 文件创建 admin 用户并赋予他管理员权限,然后可以通过 token 登陆 dashbaord,该文件见 dashboard-admin.yaml。这种认证方式本质上是通过 Service Account 的身份认证加上 Bearer token 请求 API server 的方式实现,参考 Kubernetes 中的认证。
kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: admin annotations: rbac.authorization.kubernetes.io/autoupdate: "true" roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io subjects: - kind: ServiceAccount name: admin namespace: kube-system --- apiVersion: v1 kind: ServiceAccount metadata: name: admin namespace: kube-system labels: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile
执行命令
$ kubectl create -f dashboard-admin.yaml
执行命令
$ kubectl -n kube-system describe secret admin-token-78bfl
拷贝token在登录页面进行登录,可以以管理员身份进入dashboard
也可以用命令直接提取token
$ kubectl -n kube-system get secret admin-token-78bfl -o jsonpath={.data.token}|base64 -d
看完上述内容,你们掌握如何部署kubernates dashboard的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。