基于 Docker for MAC 的 Kubernetes 本地环境搭建
基于 Docker for MAC 的 Kubernetes 本地环境搭建
hiriki版本选择
Docker Desktop:4.34.2 (167172)
Kubernetes:v1.30.2
下载 Docker Desktop
https://hub.docker.com/?uuid=1E11669E-3462-47D4-B114-8CE9405EE842
Docker Desktop 开启 Kubernetes
配置镜像加速
1 | { |
为 Kubernetes 配置 CPU 和 内存资源,建议分配 4GB 或更多内存
开启 Kubernetes,并等待 Kubernetes 开始运行
验证 Kubernetes 集群状态
1 | kubectl cluster-info |
部署和访问 Kubernetes 仪表板(Dashboard)
Kubernetes Dashboard 目前仅支持基于 Helm 的安装,因为它速度更快, 并且可以让我们更好地控制 Dashboard 运行所需的所有依赖项。
安装 Helm
https://helm.sh/zh/docs/intro/install/
部署 Dashboard UI
1 | # 添加 kubernetes-dashboard 仓库 |
访问 Dashboard UI
https://github.com/kubernetes/dashboard/blob/master/docs/user/accessing-dashboard/README.md
kubectl port-forward
1 | kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-proxy 8443:443 |
kubectl proxy
1 | kubectl proxy --port=8001 |
kubectl 会使得 Dashboard 可以通过 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard-kong-proxy:443/proxy/#/login 访问。
身份认证
https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/authentication
https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md
创建服务账号 ServiceAccount
当前的 namespace 中生成一个服务账号
1 | kubectl -n kubernetes-dashboard create serviceaccount hiriki |
1 | apiVersion: v1 |
1 | kubectl apply -f serviceAccount.yaml |
创建集群角色绑定 ClusterRoleBinding
在大多数情况下,在使用kops、kubeadm或任何其他流行的工具配置集群之后,集群中已经存在ClusterRole cluster-admin。我们可以使用它,并仅为我们的 ServiceAccount 创建一个ClusterRoleBinding。如果不存在,则需要先创建此角色,然后手动授予所需的权限。
1 | apiVersion: rbac.authorization.k8s.io/v1 |
1 | kubectl apply -f clusterRoleBinding.yaml |
生成服务账号token
1 | kubectl -n kubernetes-dashboard create token admin-user |
1 | eyJhbGciOiJSUzI1NiIsImtpZCI6InNYZWtrSXFfU0wtanNlNURfT3BzR1UtTGYteHp6R3pLNGFCckxOSzdzZ00ifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzI3MTkzNTY0LCJpYXQiOjE3MjcxODk5NjQsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwianRpIjoiZGY3MDBkYmQtZTQxZS00ZWU1LWE2YTctY2Q0Y2JhYjg0NjcyIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiN2VmN2Y4NWItOWNhNC00Yzk4LWJiMTQtMDMwZTZhZTc3MDU2In19LCJuYmYiOjE3MjcxODk5NjQsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.gbdJcDu3n17qXWIilqTuoDcQILNY0QK4k42Q1eY2JYK7Sl0i4kO3gwaQb4--qLyxZuDVsaoMvpDJL_lO3uBmvkRWfZmZTeWTtz7CWYPE1CWGa5S1aIoQrQtEJdA4J76LMmExigINfTW1oJgPbz1l9P16UY2ft4brHVFrrKC0-s1HXSuPqZb9ESAmKwiAyn_Dsm_TA6EakJJXM_Gbd1n1bnf-tFyw6Ejjs5S-Zs7ZFe6bTQUta3_oX2HwmS-tsB32TtONNk7PD7O3F9kvwuEuCwoQAzhq8uCe-r3X25PsUO6VBJZzvCoNqSqcJwC7wHzEoAT7PmzYTNsfIfmr12Jodg |
生成长时间的服务账号token
使用绑定服务帐户的 secret 创建令牌,将令牌保存在 secret 中
1 | apiVersion: v1 |
1 | kubectl apply -f secret.yaml |
创建 Secret 后,执行以下命令来获取保存在 Secret 中的令牌
1 | kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"} | base64 -d |
欢迎界面
填写 token 登录访问空集群的 Dashboard 的欢迎界面。
该页面包含一个指向此文档的链接,以及一个用于部署第一个应用程序的按钮。 此外,可以看到在默认情况下有哪些默认系统应用运行在 kube-system
命名空间中,比如 Dashboard 。