1.部署 Dashboard UI
默认情况下不会部署 Dashboard。
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 下载文件
在下载下来的recommended.yaml#大概在40行处添加一个type: NodePort,注意剧本的语法格式 type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30001 #添加此句定义对外的访问端口为30001
可以通过以下命令部署:
kubectl apply -f recommended.yaml
2、访问 Dashboard 用户界面
2.1 创建访问用户
Creating sample user
In this guide, we will find out how to create a new user using the Service Account mechanism of Kubernetes, grant this user admin permissions and login to Dashboard using a bearer token tied to this user.
IMPORTANT: Make sure that you know what you are doing before proceeding. Granting admin privileges to Dashboard's Service Account might be a security risk.
For each of the following snippets for ServiceAccount
and ClusterRoleBinding
, you should copy them to new manifest files like dashboard-adminuser.yaml
and use kubectl apply -f dashboard-adminuser.yaml
to create them.
cat dashboard-adminuser.yaml(内容如下)再执行kubectl apply -f dashboard-adminuser.yaml
创建ServiceAccount和ClusterRoleBinding
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
也可以按下面的步骤分开创建ServiceAccount、ClusterRoleBinding
Creating a Service Account
We are creating Service Account with the name admin-user
in namespace kubernetes-dashboard
first.
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
Creating a ClusterRoleBinding
In most cases after provisioning the cluster using kops
, kubeadm
or any other popular tool, the ClusterRole
cluster-admin
already exists in the cluster. We can use it and create only a ClusterRoleBinding
for our ServiceAccount
. If it does not exist then you need to create this role first and grant required privileges manually.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
2.2 获取 ServiceAccount 不记名token
Getting a Bearer Token for ServiceAccount
Now we need to find the token we can use to log in. Execute the following command:
#若之前生成的ServiceAccount 不记名token不能访问dashboard,执行下面命令生成新的ServiceAccount 不记名token
kubectl -n kubernetes-dashboard create token admin-user
It should print something like:
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXY1N253Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIwMzAzMjQzYy00MDQwLTRhNTgtOGE0Ny04NDllZTliYTc5YzEiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.Z2JrQlitASVwWbc-s6deLRFVk5DWD3P_vjUFXsqVSY10pbjFLG4njoZwh8p3tLxnX_VBsr7_6bwxhWSYChp9hwxznemD5x5HLtjb16kI9Z7yFWLtohzkTwuFbqmQaMoget_nYcQBUC5fDmBHRfFvNKePh_vSSb2h_aYXa8GV5AcfPQpY7r461itme1EXHQJqv-SN-zUnguDguCTjD80pFZ_CmnSE1z9QdMHPB8hoB4V68gtswR1VLa6mSYdgPwCHauuOobojALSaMc3RH7MmFUumAgguhqAkX3Omqd3rJbYOMRuMjhANqd08piDC3aIabINX6gP5-Tuuw2svnV6NYQ
Check Kubernetes docs for more information about API tokens for a ServiceAccount.
2.3 获取 ServiceAccount 的不记名长期token
Getting a long-lived Bearer Token for ServiceAccount
We can also create a token with the secret which bound the service account and the token will be saved in the Secret:
apiVersion: v1
kind: Secret
metadata:
name: admin-user
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: "admin-user"
type: kubernetes.io/service-account-token
After Secret is created, we can execute the following command to get the token which saved in the Secret:
kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"} | base64 -d
Check Kubernetes docs for more information about long-lived API tokens for a ServiceAccount.
2.3 Accessing Dashboard(访问Dashboard)
Now copy the token and paste it into the Enter token
field on the login screen.
Click the Sign in
button and that's it. You are now logged in as an admin.
Clean up and next steps
Remove the admin ServiceAccount
and ClusterRoleBinding
.
kubectl -n kubernetes-dashboard delete serviceaccount admin-user
kubectl -n kubernetes-dashboard delete clusterrolebinding admin-user
In order to find out more about how to grant/deny permissions in Kubernetes read the official authentication & authorization documentation.