1. 通过yaml文件创建对象
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml
通过下面的命令查看创建的Pod
:
kubectl get pod -n kubenertes-dashboard
2. 访问
2.1 通过API访问
https://10.10.10.112:6443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy
这时访问报403
解决方案如下
2.1.1 首先执行下面的命令:
mkdir dashboard_cert
2.1.2 创建kubernetes集群整数
grep 'client-certificate-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.crt```
**2.1.3 创建kubernetes私钥文件**
grep ‘client-key-data’ ~/.kube/config | head -n 1 | awk ‘{print $2}’ | base64 -d >> kubecfg.key```
2.1.4 执行
openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-client"
2.1.5 将导出的kubecfg.p12文件导入浏览器
2.2 通过NodePort访问
** 修改recommended.yaml
文件中的service
的spec
, 添加type: NodePort nodePort: 31003
**
然后执行
Kubectl apply -f recommended.yaml
查看创建的Pod
:
kubectl get pod -n kubenertes-dashboard
2.3 创建账户
- 创建名为
dashboard-admin
的账户
kubectl create serviceaccount dashboard-admin -n kube-system
- 关联授权
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
###2.4 使用Token
登录方式
获取创建账户的Secret
的名称
kubectl get secret --all-namespaces | grep -I dashboard-admin
** 通过名称获取token
**
kubectl describe secret/dashboard-admin-token-xxxx -n kube-system
2.5 使用kubeconfig文件
登录
2.5.1 定义相关变量
server=https://10.10.10.112:6443
name=dashboard-admin
secretname=$(kubectl get serviceaccount $name -o jsonpath="{.secrets[0].name}" -n kube-system)
ca= $(kubectl get secret $secretname -o jsonpath='{.data.ca\crt}' -n kube-system)
token=$(kubectl get secret $secretname -n kube-system -o jsonpath='{.data.token}' | base64 --decode)
namespace=kube-system
2.5.2 导出kubeconfig
文件
echo "
apiVersion: v1
kind: Config
clusters:
- name: default-cluster
cluster:
certificate-authority-data: ${ca}
server: ${server}
contexts:
- name: default-context
context:
cluster: default-cluster
namespace: ${namespace}
user: default-user
current-context: default-context
users:
- name: default-user
user:
token: ${token}
" > admin.kubeconfig
2.5.3 下载生成的文件, 登录时勾选即可
2.6 设置用户名、密码登录
** 2.6.1 备份kube-apiserver.yaml(重要)**
cp /etc/kubernetes/manifests/kube-apiserver.yaml /etc/kubernetes/manifests/kube-apiserver.yaml-bake-20230131
2.6.2 新增密码
账户admin
密码luckserver
,唯一id是1
每行写一个账号,id不能重复
echo "admin,luckserver,1" > /etc/kubernetes/pki/basic_auth_file
** 2.6.3 修改apiserver.yaml**
vim /etc/kubernetes/manifests/kube-apiserver.yaml
加入这一行
- --token-auth-file=/etc/kubernetes/pki/basic_auth_file
保存退出
2.6.4 查看状态
apiserver.yaml
被修改后会自动重启(十秒左右),查看状态有无报错
2.6.5 为admin用户绑定权限
- admin绑定权限
kubectl create clusterrolebinding login-on-dashboard-with-cluster-admin --clusterrole=cluster-admin --user=admin
- 查看绑定结果
kubectl get clusterrolebinding login-on-dashboard-with-cluster-admin
** 2.6.6 修改recommended.yaml
**
recommended.yaml
是dashboard相关部署文件。
- --token-ttl=21600
- --authentication-mode=basic
然后执行下面的命令更新对象
kubectl replace -f recommended.yaml
- 浏览器查看