当前位置: 首页> 文旅> 酒店 > 北京建站工具_虾皮跨境电商网站_北京计算机培训机构前十名_长沙优化科技

北京建站工具_虾皮跨境电商网站_北京计算机培训机构前十名_长沙优化科技

时间:2025/7/11 19:22:27来源:https://blog.csdn.net/admin_233/article/details/144931203 浏览次数:0次
北京建站工具_虾皮跨境电商网站_北京计算机培训机构前十名_长沙优化科技

k8s集群部署 - Dashboard v2.7

文章目录

  • k8s集群部署 - Dashboard v2.7
  • 部署 Kubernetes Dashboard
  • 查看 Dashboard 服务
    • 验证
  • 创建访问权限(RBAC)
    • 作用
  • 获取访问 Token
  • 更改kubernetes-dashboard的网络为集群外可访问
  • 访问 Dashboard
  • 登录 Dashboard
  • 持久化用户token到Secret中(可选)

  • 介绍
    Dashboard是官方提供的一个UI,可用于基本管理K8s资源。

部署 Kubernetes Dashboard

运行以下命令来部署kubernetes-dashboard:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

这将会创建一个kubernetes-dashboard服务以及所需的相关资源(如deployment、service等)。

查看 Dashboard 服务

你可以通过以下命令查看是否部署成功:

kubectl get pods -n kubernetes-dashboard

验证

如果部署成功,你应该能够看到类似下面的输出:

NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-5657497c4c-7b8zj   1/1     Running   0          25m
kubernetes-dashboard-78f87ddfc-vlgkq         1/1     Running   0          25m

创建访问权限(RBAC)

为了安全起见,通常需要为kubernetes-dashboard创建访问权限。可以创建一个ClusterRoleBinding,为dashboard-admin用户授权。
创建一个dashboard-admin的YAML文件,dashboard-admin.yaml

sudo vi dashboard-admin.yaml
apiVersion: v1
kind: ServiceAccount
metadata:name: dashboard-adminnamespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: dashboard-admin
subjects:- kind: ServiceAccountname: dashboard-adminnamespace: kubernetes-dashboard
roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: kubernetes-dashboard-full-access
subjects:- kind: ServiceAccountname: kubernetes-dashboardnamespace: kubernetes-dashboard
roleRef:kind: ClusterRolename: kubernetes-dashboard-full-accessapiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: kubernetes-dashboard-full-access
rules:- apiGroups: [""]resources: ["pods", "services", "endpoints", "secrets", "configmaps", "namespaces"]verbs: ["get", "list", "watch"]- apiGroups: ["apps"]resources: ["deployments", "replicasets", "statefulsets"]verbs: ["get", "list", "watch"]- apiGroups: ["extensions"]resources: ["ingresses"]verbs: ["get", "list", "watch"]

执行以下命令创建dashboard-admin:

kubectl apply -f ./dashboard-admin.yaml

作用

  • ServiceAccount (dashboard-admin):
    创建了一个服务账户 dashboard-admin,用于为 kubernetes-dashboard 提供认证。

  • ClusterRoleBinding (dashboard-admin):
    为 dashboard-admin 服务账户绑定 cluster-admin 角色,从而使其拥有集群管理员权限。

  • ClusterRoleBinding (kubernetes-dashboard-full-access):
    为 kubernetes-dashboard 服务账户绑定 kubernetes-dashboard-full-access 角色,授予其对多个资源(如 pods、services、endpoints、secrets 等)的完全访问权限。

  • ClusterRole (kubernetes-dashboard-full-access):
    定义了一个角色,允许访问 Kubernetes 集群中与 Dashboard 相关的资源,包括:Pods、Services、Endpoints、Secrets、ConfigMaps、Namespaces、Deployments、ReplicaSets、StatefulSets 和 Ingresses。

获取访问 Token

要登录到Dashboard,你需要获取dashboard-admin的Token,运行以下命令:

kubectl -n kubernetes-dashboard create token dashboard-admin

该命令将返回一个Token,复制该Token备用。

更改kubernetes-dashboard的网络为集群外可访问

Kubernetes Dashboard 默认是通过 ClusterIP 类型的服务暴露的,这意味着它只能在集群内部访问。你可以将其更改为 NodePort 或 LoadBalancer 类型,使其能够被外部机器访问。

# 运行以下命令来编辑 Dashboard 的服务:
[root@swarm03 ~]# kubectl -n kubernetes-dashboard edit svc kubernetes-dashboard

修改完后保存并退出编辑,Kubernetes 将自动应用更改。

# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Service
metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"k8s-app":"kubernetes-dashboard"},"name":"kubernetes-dashboard","namespace":"kubernetes-dashboard"},"spec":{"ports":[{"port":443,"targetPort":8443}],"selector":{"k8s-app":"kubernetes-dashboard"}}}creationTimestamp: "2024-12-16T09:18:13Z"labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboardresourceVersion: "266985"uid: 15a16dab-17c0-4d09-acd5-129c264cd885
spec:
#  clusterIP: 10.106.149.44
#  clusterIPs:
#  - 10.106.149.44internalTrafficPolicy: ClusteripFamilies:- IPv4ipFamilyPolicy: SingleStackports:- port: 443protocol: TCPtargetPort: 8443nodePort: 30001  # 根据需要设置 NodePortselector:k8s-app: kubernetes-dashboardsessionAffinity: Nonetype: NodePort  # 将类型更改为 NodePort
status:loadBalancer: {}

访问 Dashboard

现在,你可以通过集群节点的 IP 地址和暴露的端口来访问 Dashboard。
例如,如果你的集群控制平面节点 IP 地址是 192.168.10.52,那么在集群外部的机器上,使用以下 URL 访问 Kubernetes Dashboard:
https://192.168.10.52:30001

登录 Dashboard

打开浏览器并访问上述地址,选择“Token”登录方式,并粘贴之前获取的Token进行登录。

持久化用户token到Secret中(可选)

Kubernetes v1.24.0 及更高版本在创建 ServiceAccount 时不会自动生成 Secret(包含 API 访问令牌),就会导致刚生成的token没过多久就失效了,想要登录还得重新生成token。如果需要,请手动创建或更新 Secret。

  • 创建 dashboard-admin 的Secret
    该Secret用于存储ServiceAccount 中 dashboard-admin 的token等信息,创建后从 Secret 的 token 字段拿就可以了,不用重新生成token。
# 创建secret部署yaml文件
sudo vi secret-dashboard-token.yaml

将下面的内容复制粘贴到dashboard-token-secret.yaml中
由于ServiceAccount “dashboard-admin” 位于 kubernetes-dashboard 中,所以yaml中的定义也要对应

apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:name: secret-dashboard-token   # 修改为 kubernetes-dashboard 命名空间namespace: kubernetes-dashboardannotations:kubernetes.io/service-account.name: "dashboard-admin"   # 关联到 dashboard-admin ServiceAccount
# 应用secret的部署yaml文件
kubectl create -f ./secret-dashboard-token.yaml[root@swarm03 ~]# kubectl create -f secret-dashboard-token.yaml
secret/secret-dashboard-token created
  • 查看 dashboard-admin 的 Secret 信息及token
# 创建完 Secret 后,你可以使用以下命令查看 Secret 的详细信息,并提取其中的 token:
kubectl get secret secret-dashboard-token -n kubernetes-dashboard  -o yaml# 仅查看secret中的token
kubectl get secret secret-dashboard-token -n kubernetes-dashboard  -o jsonpath='{.data.token}' | base64 --decode
关键字:北京建站工具_虾皮跨境电商网站_北京计算机培训机构前十名_长沙优化科技

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: