K8s dashborad
1.部署
要部署仪表板,请执行以下命令:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
2.验证
#查看pod运行状态
kubectl get pod -n kube-system | grep dashboard
kubernetes-dashboard-569fc6bc94-5chns 1/1 Running 0 14d
#查看dashborad service
kubectl get svc -n kube-system|grep dashboard
kubernetes-dashboard NodePort 10.107.9.126 <none> 443:30000/TCP 14d
#查看pod运行日志,关注有没有错误
kubectl logs kubernetes-dashboard-569fc6bc94-5chns -n kube-system
3.访问
因为dashboard 作为k8s 原生UI,能够展示各种资源信息,甚至可以有修改、增加、删除权限,所以有必要对访问进行认证和控制:
启用 TLS认证 RBAC授权等安全特性
关闭 apiserver非安全端口8080的外部访问--insecure-bind-address=127.0.0.1
关闭匿名认证--anonymous-auth=false
补充启用基本密码认证 --basic-auth-file=/etc/kubernetes/ssl/basic-auth.csv,密码文件模板中按照每行(密码,用户名,序号)的格式,可以定义多个用户
新版本dashboard登陆可以分为两步,类似流行的双因子登陆系统:
- 第一步通过api-server本身安全认证流程,与之前1.6.3版本相同
- 第二步通过dashboard自带的登陆流程,使用Kubeconfig Token等方式登陆
1) 临时访问:使用https://NodeIP:NodePort方式直接访问dashborad(建议使用火狐浏览器)
如果dashborad-service类型为ClusterIP,建议修改为NodePort:
kubectl -n kube-system edit svc kubernetes-dashboard
输出:
将上面的type: ClusterIP修改为type: NodePort,保存后使用kubectl get service命令来查看自动生产的端口:
打开页面出现dashboard 新版本自带的登陆页面。Kubernetes仪表盘支持两种登录方式:Kubeconfig、令牌
令牌登录 选择“令牌(Token)”方式登陆:
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
Kubeconfig登录 Kubeconfig文件默认位置:/root/.kube/config,该文件中默认没有token字段,使用Kubeconfig方式登录,还需要将token追加到该文件中,完整的文件格式如下:
把这个配置复制一份,编辑添加token这个字段然后把token值粘贴过来
2) 授予admin权限,跳过登录
kubectl create -f dashboard-admin.yaml
Dashboard-admin.yaml:
apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata:
name: kubernetes-dashboard
labels:
k8s-app: kubernetes-dashboardroleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-adminsubjects:
- kind: ServiceAccount
name: kubernetes-dashboard
namespace: kube-system