九析带你轻松完爆 kubernates dashboard v2.0.0

网友投稿 291 2022-10-30

九析带你轻松完爆 kubernates dashboard v2.0.0

目录

1 介绍 dashboard

2 部署 dashboard

3 修改 dashboard service type

4 获取 dashboard token

5 登录 dashboard

6 提权 service account

7 trouble shooting

8 ingress 设置

8.1 生成自签名证书

8.2 创建 ingress 资源文件

8.3 创建 secret

8.4 编辑 hosts 文件

1 介绍 dashboard

2 部署 dashboard

kubectl apply -f 修改 dashboard 服务类型

部署完 dashboard,镜像都下载完毕之后,还需要修改一下 kubernetes-dashboard 的 service 类型才可以直接访问。默认情况下,kubernetes-dashboard 的服务类型为 ClusterIP,执行如下语句修改为 NodePort 类型:

kubectl patch svc -n kubernetes-dashboard kubernetes-dashboard -p '{"spec": {"type" : "NodePort"}}'

4 获取 dashboard token

dashboard 控制台使用了鉴权机制,因此如果要访问,必须获取其登录 token。执行如下语句查找 token 所在的 secret 资源:

kubectl get secrets -n kubernetes-dashboard

执行如下语句从 secret 资源查找 token:

为了安全,secret 的 token 经过了 base64 的编码处理,不能直接使用。如果要使用,需要进行解码,解码语句如下。注意 token 一定要拷贝完整,看仔细。

5 登录 dashboard

获取 dashboard service 暴露的端口号,本人是 30501,注意不是 443。

kubectl get svc -n kubernetes-dashboard

6 提权 service account

默认 service account 为 kubernetes-dashboard,权限范围是 default 命名空间。如果想具有管理员权限,需要重新进行角色绑定。先将默认 service account 导出:

kubectl get clusterrolebindings.rbac.authorization.k8s.io kubernetes-dashboard -o yaml > clusterrolebinding.yaml

修改 clusterrolebinding.yaml 文件,将 role 名改为 cluster-admin(此角色就是集群管理员角色):

删除旧的 clusterrolebindings:

kubectl delete clusterrolebindings.rbac.authorization.k8s.io kubernetes-dashboard

生成新的 clusterrolebindings:

kubectl apply -f clusterrolebinding.yaml

7 touble shooting

dashboard 默认情况下使用的 service type 是 ClusterIP,上面的教程中将其改造成了 NodePort,如果你仍然想采用 ClusterIP 方式的话,可以使用如下命令来开启代理,代理默认会开启当前主机端口 8001。

kubectl proxy

你可以通过访问当前主机上的 firefox 来访问 dashboard 控制台。

如果你远程访问代理,则会报 Forbidden(403)。可以通过添加如下启动参数来解决:

kubectl proxy --address=0.0.0.0 --disable-filter=true

自此,已经轻松完爆了 kubernetes dashboard v2.0.0-beta6 的安装。

8 Ingress 设置

上面介绍了 dashboard 基于 NodePort 的设置。如果想集成 Ingress,需要引入 nginx-ingress。可参阅本人《helm 轻松完爆 nginx-ingress》。

8.1 自签名证书

使用 openssl 生成自签名证书。

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ./tls.key -out ./tls.crt -subj "/CN=jiuxi.dashboard.org"

8.2 创建 Ingress 资源文件

apiVersion: extensions/v1beta1kind: Ingressmetadata:  annotations:    nginx.ingress.kubernetes.io/ssl-redirect: "true"    nginx.ingress.kubernetes.io/rewrite-target: /    nginx.ingress.kubernetes.io/secure-backends: "true"  name: kubernetes-dashboard-ingress  namespace: kubernetes-dashboardspec:  tls:  - hosts:    - jiuxi.dashboard.org    secretName: kubernetes-dashboard-tls  rules:  - host: jiuxi.dashboard.org        paths:      - backend:          serviceName: kubernetes-dashboard          servicePort: 443        path: /

注意 annotation 必须要写。否则会报证书问题。

8.3 创建 secret

kubectl -n kubernetes-dashboard create secret tls kubernetes-dashboard-tls --key ./tls.key --cert ./tls.crt

8.4 编辑 hosts 文件

编辑 hosts 文件,添加域名解析记录。切记,IP 必须是 nginx-ingress controller pod 主机的 ip,并不是 dashboard pod 所在主机的 ip。

编辑完毕,打开浏览器,访问 jiuxi.dashboard.org:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:FPGA与ADSP TS201的总线接口设计
下一篇:SDN网络架构的三个接口
相关文章

 发表评论

暂时没有评论,来抢沙发吧~