前言
在《使用Kubeadm搭建Kubernetes(1.13.1)集群》 中我们已经学习了如何搭建Kubernetes(1.13.1)集群,并安装了kubernetes-dashboard UI管理工具,并在《创建kube-dashboard管理员》 中学习了如何创建一个管理员账号,并使用token登录kubernetes-dashboard,用于管理Kubernetes集群。
但实际使用中,每次登录kubernetes-dashboard都要输入token,非常的麻烦。使用token虽然安全,但内网环境很多时候不需要那么高的安全等级,我们就可以考虑开启http免密登录来方便我们的工作。这一节我就和大家一起学习kubernetes-dashboard如何开启http免密登录。
操作
在《使用Kubeadm搭建Kubernetes(1.13.1)集群》 中我们是通过kubernetes-dashboard.yaml
来安装kubernetes-dashboard的,要开启http免密登录,也需要用到这个文件。
1. 修改Deployment
- 1.1 增加 9090端口, 原本镜像中就是有9090 非安全端口的,只是yaml文件没有暴露出来
- 1.2 args 下面 ‘- --auto-generate-certificates’ 注释掉, 前面添加 #
spec:
containers:
- name: kubernetes-dashboard
image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0
ports:
- containerPort: 8443
protocol: TCP
name: https
- containerPort: 9090
protocol: TCP
name: http
args:
# - --auto-generate-certificates
# Uncomment the following line to manually specify Kubernetes API server Host
# If not specified, Dashboard will attempt to auto discover the API server and connect
# to it. Uncomment only if the default does not work.
# - --apiserver-host=http://my-address:port
- 1.3 修改健康检查规则
将scheme改为HTTP,port改成9090,否则过一段时间后你就会看到kubernetes-dashboard挂掉了。
livenessProbe:
httpGet:
scheme: HTTP
path: /
port: 9090
initialDelaySeconds: 30
timeoutSeconds: 30
2. 修改Service
-
2.1 增加端口,target指向9090
-
2.2 配置nodeport,方便通过节点ip+nodeport 访问,即输入 k8s节点ip:32000 就可以访问到dashboard
注意记得添加 ‘ type: NodePort’
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
ports:
- port: 443
targetPort: 8443
nodePort: 32001
name: https
- port: 80
targetPort: 9090
nodePort: 32000
name: http
type: NodePort
selector:
k8s-app: kubernetes-dashboard
3. 绑定管理员角色
默认情况下,我们访问kubernetes-dashboard时使用的账户是kubernetes-dashboard,但该账户所绑定的角色kubernetes-dashboard-minimal的权限非常有限,访问http://master-host:32000
会出现如图片中的提示:
我们可以直接把《创建kube-dashboard管理员》 中创建的cluster-admin
角色的权限赋给kubernetes-dashboard
,方法是将RoleBinding修改成下面的形式:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard-minimal
namespace: kube-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard
namespace: kube-system
之后我们在浏览器中访问http://master-host:32000
就一切正常了。
网友评论