K8S-Dashbord部署、Token、Kubeconfig认证登录

K8S-Dashbord部署、Token、Kubeconfig认证登录

一、部署Dashbord

1.1、下载yaml文件

$wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml

1.2、修改端口资源类型

默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部30001端口
打开yaml文件找到这一段

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard

往里面添加nodePort:30001 以及type:NodePort
在这里插入图片描述

1.3、创建Pod

$kubectl apply -f recommended.yaml

$kubectl get pods,svc -n kubernetes-dashboard

在这里插入图片描述

1.4、浏览器访问dashboard

集群内访问:curl https://10.0.0.71:443
集群外访问: https://192.168.91.132:30001

在这里插入图片描述

二、登录dashboard

Dashboard提供两种认证方式:

2.1、Token

2.1.1、创建账号

在master node中创建service account并绑定默认cluster-admin管理员集群角色

#创建用户
$kubectl create serviceaccount dashboard-admin -n kube-system

# 用户授权
$kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

# 获取用户Token
$kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

在这里插入图片描述

复制打印出来的token到页面就可以登录了

2.2、Kubeconfig

同样需先创建用户以及分配角色,其实这种方式更像是Token的续集,

# 创建用户
$kubectl create serviceaccount dashboard-admin -n kube-system

# 用户授权
$kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

# 获取用户Token
$kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

获取到token后,生成dashbord.kubeconfig文件

#获取token文件名dashboard-admin-token-dc7tz
$kubectl get secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')
#将上一步获取到的token文件名替换到这里
$DASH_TOKEN=$(kubectl get secret -n kube-system dashboard-admin-token-dc7tz -o jsonpath={.data.token}|base64 -d)

# 生成dashboard-admin.kubeconfig配置文件
$kubectl config set-cluster kubernetes \
--certificate-authority=/opt/kubernetes/ssl/ca.pem \
--embed-certs=true \
--server=https://192.168.91.132:6443 \
--kubeconfig=dashboard-admin.kubeconfig

$kubectl config set-credentials dashboard-admin \
--token=$DASH_TOKEN \
--kubeconfig=dashboard-admin.kubeconfig

$kubectl config set-context dashboard-admin@kubernetes \
--cluster=kubernetes \
--user=dashboard-admin \
--kubeconfig=dashboard-admin.kubeconfig

$kubectl config use-context dashboard-admin@kubernetes --kubeconfig=dashboard-admin.kubeconfig

最后把生成的dashboard-admin.kubeconfig文件下载到本地,再通过浏览器选择此文件进行登录

在这里插入图片描述

Kubernetesk8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。为了安全地访问Kubernetesdashbord,通常需要通过安全的网络连接,例如使用HTTPS协议和认证令牌。以下是通过命令行部署并访问Kubernetes dashbord的基本步骤: 1. 部署Kubernetes dashbord: 首先,你需要安装并配置好kubectl(Kubernetes的命令行工具)。然后,你可以使用以下命令部署dashbord: ```bash kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml ``` 2. 创建一个用户并分配角色: 为了访问dashbord,你需要创建一个用户并为其分配相应的角色。以下是一个例子,用于创建一个名为`admin-user`的用户,并分配一个管理员角色: ```yaml apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kube-system --- 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: kube-system ``` 应用该配置文件: ```bash kubectl apply -f <配置文件.yaml> ``` 3. 获取认证令牌: 一旦用户创建并分配了角色,你需要获取该用户的认证令牌以供登录dashbord时使用。可以通过以下命令获取: ```bash kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}') ``` 4. 访问Kubernetes dashbord: 最后,你可以通过端口转发或者设置一个安全代理来访问dashbord。这里以端口转发为例: ```bash kubectl proxy ``` 打开浏览器访问`http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/`,并在登录界面输入步骤3中获取的令牌。 请务必确保在访问dashbord时采用安全的连接,避免直接开放 dashbord 到互联网,因为这可能会带来安全风险。建议使用反向代理和SSL/TLS证书来保护访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值