fix(content): harden Docker practice guide

This commit is contained in:
yeasy
2026-06-16 21:23:21 -07:00
parent f4e684afeb
commit 9fdffa9d91
67 changed files with 343 additions and 278 deletions
+1 -1
View File
@@ -171,13 +171,13 @@ $ sudo systemctl enable containerd
$ sudo systemctl start containerd
$ sudo kubeadm init \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--pod-network-cidr 10.244.0.0/16 \
--cri-socket unix:///run/containerd/containerd.sock \
--v 5
```
* `--pod-network-cidr 10.244.0.0/16` 参数与后续 CNI 插件有关这里以 `flannel` 为例若后续部署其他类型的网络插件请更改此参数
* kubeadm 默认使用 `registry.k8s.io` 拉取 Kubernetes 控制平面镜像受限网络环境可通过 kubeadm 配置文件中的 `imageRepository` 指向受信任镜像仓库不要把第三方镜像仓库当成通用默认值
> `kubeadm` 预检失败应按提示修复缺失依赖内核参数swap 或运行时配置实验环境确需忽略预检时只忽略明确理解且可接受的单项检查不建议使用 `--ignore-preflight-errors=all`
+2 -2
View File
@@ -197,14 +197,14 @@ $ sudo systemctl daemon-reload
#### master
```bash
$ sudo kubeadm init --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--pod-network-cidr 10.244.0.0/16 \
$ sudo kubeadm init --pod-network-cidr 10.244.0.0/16 \
--cri-socket unix:///var/run/cri-dockerd.sock \
--v 5
```
* `--cri-socket unix:///var/run/cri-dockerd.sock` 参数指定使用 cri-dockerd 作为容器运行时接口
* `--pod-network-cidr 10.244.0.0/16` 参数与后续 CNI 插件有关这里以 `flannel` 为例若后续部署其他类型的网络插件请更改此参数
* kubeadm 默认使用 `registry.k8s.io` 拉取 Kubernetes 控制平面镜像受限网络环境可通过 kubeadm 配置文件中的 `imageRepository` 指向受信任镜像仓库不要把第三方镜像仓库当成通用默认值
> `kubeadm` 预检失败应按提示修复缺失依赖内核参数swap 或运行时配置实验环境确需忽略预检时只忽略明确理解且可接受的单项检查不建议使用 `--ignore-preflight-errors=all`
+5 -3
View File
@@ -4,15 +4,17 @@
### 14.3.1 启用 Kubernetes
Docker Desktop 设置页面点击 `Kubernetes`选择 `Enable Kubernetes`稍等片刻看到左下方 `Kubernetes` 变为 `running`Kubernetes 启动成功
Docker Desktop 设置页面进入 `Kubernetes`创建或启用集群较新的 Docker Desktop 可选择 `kind` `kubeadm` 作为集群创建方式日常本地开发优先选择 `kind`因为它支持多节点和版本选择
![](../_images/settings-kubernetes.png)
> 注意Kubernetes 的镜像存储在 `registry.k8s.io`如果国内网络无法直接访问可以在 Docker Desktop 配置中 `Docker Engine` 处配置镜像加速器或者利用国内云服务商的镜像仓库手动拉取镜像并 retag
> 注意Docker Desktop Kubernetes 的控制平面镜像默认从 Docker Hub 拉取例如 `docker.io/docker/desktop-*` `docker.io/kindest/node:<tag>`如果企业网络不能访问 Docker Hub应按 Docker Desktop `KubernetesImagesRepository` 设置镜像仓库并用 `docker desktop kubernetes images list`Docker Desktop 4.44+ `docker ps` 确认实际镜像标签普通 Docker Engine `registry-mirrors` 不会自动改写这些控制平面镜像
### 14.3.2 测试
```bash
$ kubectl version
$ kubectl config use-context docker-desktop
$ kubectl get nodes
```
如果正常输出信息则证明 Kubernetes 成功启动
如果 `kubectl get nodes` 显示节点为 `Ready`则证明 Kubernetes 成功启动
+22 -11
View File
@@ -1,12 +1,27 @@
## 14.7 部署 Dashboard
## 14.7 可视化管理界面
[Kubernetes Dashboard](https://github.com/kubernetes/dashboard) 是基于网页的 Kubernetes 用户界面
[Kubernetes Dashboard](https://github.com/kubernetes-retired/dashboard) 是历史上常用的 Kubernetes Web UI,但项目已停止维护
> **注意** `kubernetes/dashboard` 项目已于 2026 1 21 日归档停止维护推荐使用 [Headlamp](https://headlamp.dev/) 等替代方案。以下内容仅供历史参考,基于归档前的最新 Helm 安装方式
> **注意**Kubernetes 官方文档已将 Dashboard 标记为 deprecated and unmaintained新安装建议考虑 [Headlamp](https://headlamp.dev/) 等仍在维护的替代方案。以下 Dashboard 内容仅供历史迁移或存量环境参考
![](../_images/kubernetes-dashboard-ui.png)
### 14.7.1 部署
### 14.7.1 推荐替代Headlamp
Headlamp Kubernetes SIG UI 下的现代 Web UI可通过 Helm 安装
```bash
$ helm repo add headlamp https://kubernetes-sigs.github.io/headlamp/
$ helm install headlamp headlamp/headlamp --namespace kube-system
```
本地访问时优先使用端口转发避免直接把管理界面暴露到公网
```bash
$ kubectl -n kube-system port-forward svc/headlamp 4466:80
```
### 14.7.2 历史 Dashboard 部署
Dashboard 7.0+ 版本仅支持通过 Helm 安装
@@ -17,7 +32,7 @@ $ helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-da
--create-namespace --namespace kubernetes-dashboard
```
### 14.7.2 访问
### 14.7.3 访问
通过端口转发访问 Dashboard
@@ -27,19 +42,15 @@ $ kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-pro
然后在浏览器打开 `https://localhost:8443` 即可访问
### 14.7.3 登录
### 14.7.4 登录
为历史 Dashboard 创建只读服务账户并获取短期登录令牌不要为 Dashboard 创建 `cluster-admin` 绑定如果确实需要临时管理员权限应走单独的 break-glass 审批和审计流程
```bash
$ kubectl create sa dashboard-readonly -n kubernetes-dashboard
$ kubectl create clusterrole dashboard-readonly \
--verb=get,list,watch \
--resource=pods,deployments,services,configmaps,namespaces,nodes
$ kubectl create clusterrolebinding dashboard-readonly \
--clusterrole=dashboard-readonly \
--clusterrole=view \
--serviceaccount=kubernetes-dashboard:dashboard-readonly
$ kubectl create token dashboard-readonly -n kubernetes-dashboard --duration=1h
+2 -2
View File
@@ -1,6 +1,6 @@
# 第十四章 部署 Kubernetes
目前Kubernetes 支持在多种环境下使用包括本地主机 (UbuntuDebianCentOSFedora )云服务 ([腾讯云](https://cloud.tencent.com/act/cps/redirect?redirect=10058&cps_key=3a5255852d5db99dcd5da4c72f05df61)、[阿里云](https://www.aliyun.com/product/kubernetes?source=5176.11533457&userCode=8lx5zmtu&type=copy)、[百度云](https://cloud.baidu.com/product/cce.html)等)。
目前Kubernetes 支持在多种环境下使用包括本地主机 (UbuntuDebianCentOSFedora )云服务 ([腾讯云 TKE](https://cloud.tencent.com/product/tke)、[阿里云 ACK](https://cn.aliyun.com/product/ack)、[百度云](https://cloud.baidu.com/product/cce.html)等)。
你可以使用以下几种方式部署 Kubernetes接下来的小节会对各种方式进行详细介绍
@@ -11,7 +11,7 @@
* [Kind - Kubernetes IN Docker](14.4_kind.md)
* [K3s - 轻量级 Kubernetes](14.5_k3s.md)
* [一步步部署 Kubernetes 集群](14.6_systemd.md)
* [部署 Dashboard](14.7_dashboard.md)
* [可视化管理界面Headlamp 与历史 Dashboard](14.7_dashboard.md)
* [Kubernetes 命令行 kubectl](14.8_kubectl.md)
除了上述方式企业生产环境中还有两个常见的部署工具值得关注
+1 -1
View File
@@ -13,7 +13,7 @@
### 延伸阅读
- [容器编排基础](../13_kubernetes_concepts/README.md)Kubernetes 核心概念
- [Dashboard](14.7_dashboard.md)部署可视化管理界面
- [可视化管理界面](14.7_dashboard.md)Headlamp 与历史 Dashboard 迁移参考
- [kubectl](14.8_kubectl.md)命令行工具使用指南
---