如何部署kubernates dashboard

85次阅读
没有评论

共计 3069 个字符,预计需要花费 8 分钟才能阅读完成。

如何部署 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

如何部署 kubernates dashboard

输入命令查看 Service,会发现 dashboard 的 IP 地址是一个自动分配的 Cluster IP 地址

$ kubectl -n kube-system get svc

如何部署 kubernates dashboard

在不配置任何网络策略的情况下,我们可以启动 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, 端口映射也完成了。

如何部署 kubernates dashboard

使用 dashboard 所在 node 的 IP 地址加上映射到 Node 的端口号可以直接访问 Dashboard

https://192.168.7.87:31195/

身份认证

登陆 dashboard 的时候支持 kubeconfig 和 token 两种认证方式,kubeconfig 中也依赖 token 字段,所以生成 token 这一步是必不可少的。

下文分两块来讲解两种登陆认证方式:

为 brand 命名空间下的 brand 用户创建 kubeconfig 文件

为集群的管理员(拥有所有命名空间的 amdin 权限)创建 token

使用 kubeconfig

登陆 dashboard 的时候可以指定 kubeconfig 文件来认证用户权限,如何生成登陆 dashboard 时指定的 kubeconfig 文件请参考创建用户认证授权的 kubeconfig 文件。

注意我们生成的 kubeconfig 文件中没有 token 字段,需要手动添加该字段。

比如我们为 brand namespace 下的 brand 用户生成了名为  brand.kubeconfig  的 kubeconfig 文件,还要再该文件中追加一行  token  的配置(如何生成 token 将在下文介绍),如下所示:

如何部署 kubernates dashboard

这样就可以使用 brand.kubeconfig 文件来登陆 dashboard 了,而且只能访问和操作 brand 命名空间下的对象。

生成 token

需要创建一个 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

如何部署 kubernates dashboard

执行命令

$ kubectl -n kube-system describe secret admin-token-78bfl

如何部署 kubernates dashboard

拷贝 token 在登录页面进行登录,可以以管理员身份进入 dashboard

也可以用命令直接提取 token

$ kubectl -n kube-system get secret admin-token-78bfl -o jsonpath={.data.token}|base64 -d

看完上述内容,你们掌握如何部署 kubernates dashboard 的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计3069字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)