文章目录
-
- [1. 典型环境层次结构](#1. 典型环境层次结构)
- [2. Kubernetes 生态三大类](#2. Kubernetes 生态三大类)
-
- [2.1 核心组件](#2.1 核心组件)
- [2.2 集群管理工具](#2.2 集群管理工具)
- [2.3 生态辅助工具](#2.3 生态辅助工具)
- [2.4 资源管理关系](#2.4 资源管理关系)
- [3. Docker 容器技术与实践](#3. Docker 容器技术与实践)
-
- [3.1 镜像拉取加速](#3.1 镜像拉取加速)
- [3.2 认证与登录](#3.2 认证与登录)
- [3.3 常用命令](#3.3 常用命令)
- [3.4 存储挂载方式对比](#3.4 存储挂载方式对比)
- [3.5 docker-compose 启动](#3.5 docker-compose 启动)
- [3.6 容器化应用部署示例](#3.6 容器化应用部署示例)
- [4. kind 快速启动](#4. kind 快速启动)
- [5. 参考资料](#5. 参考资料)
1. 典型环境层次结构
- 物理机/宿主机:运行虚拟化或容器化环境的基础硬件。
- 虚拟机(可选):部分场景下,容器运行在虚拟机之上,增强隔离性和资源管理。
- Docker(或其他容器引擎):负责容器的创建、运行和管理。
- Kubernetes:在容器引擎之上,负责容器集群的编排与调度。
2. Kubernetes 生态三大类
Kubernetes 生态可分为三大类:
- 核心组件:实现集群基本功能,构成 Kubernetes 的分布式系统本体。
- 集群管理工具:用于集群的安装、模拟、管理和测试。
- 生态辅助工具:提升开发、部署、运维效率,简化复杂操作。
2.1 核心组件
组件 | 作用简介 |
---|---|
kube-apiserver | 集群 API 服务入口,所有操作都通过它进行。 |
etcd | 分布式键值存储,保存集群所有数据。 |
kube-scheduler | 负责 Pod 的调度。 |
kube-controller-manager | 负责各种控制器(如副本、节点、命名空间等)。 |
kubelet | 每个节点上的代理,负责 Pod 的生命周期管理。 |
kube-proxy | 负责服务的网络代理和负载均衡。 |
container runtime | 容器运行时(如 Docker、containerd),负责容器的创建和管理。 |
注意:Kubernetes(K8s)不是一个单一可执行程序,而是由多个核心组件(如 kube-apiserver、kubelet、etcd 等)和生态工具协同组成的分布式系统,kubectl 只是常用的客户端入口。
2.2 集群管理工具
工具 | 作用与简要描述 |
---|---|
kubeadm | 官方主流的生产级集群安装和生命周期管理工具,适合自建高可用生产集群。 |
Kind | 基于 Docker 容器的本地多节点 Kubernetes 集群工具,便于本地模拟和测试。 |
Minikube | 在本地 VM 或容器中运行单节点 Kubernetes,适合个人开发和测试。 |
2.3 生态辅助工具
工具 | 作用与简要描述 |
---|---|
Docker | 主流的容器运行时,负责容器的打包、分发、运行和隔离。 |
kubectl | Kubernetes 官方命令行工具,管理和操作集群资源。 |
Helm | Kubernetes 的包管理器,将应用及其所有相关资源打包为 Chart,简化安装、升级和回滚。 |
Skaffold | 持续开发工具,自动化构建、部署并同步本地代码到集群,支持多种构建和部署后端。 |
- Docker:一切容器化的基础,Kind/Minikube等本地K8s方案都依赖于 Docker 或兼容容器引擎。
- Kind/Minikube:本地快速搭建 Kubernetes 集群,适合开发、测试和学习。
- kubectl:与 Kubernetes 集群直接交互的 CLI,所有集群操作的标准入口。
- Helm:K8s 应用的包管理与部署标准,提升运维效率。
- Skaffold:本地开发到集群的自动化桥梁,适合持续集成与敏捷开发。
以上工具均为主流开源方案,广泛应用于开发、测试和生产环境。
Chart 就是 Helm 的"打包格式",负责描述、版本化、分享和管理一组 Kubernetes 资源,是 Helm 能够简化应用部署与运维的核心所在。
2.4 资源管理关系
- Node:物理机或虚拟机
- Pod:容器的运行单元
- ReplicaSet:管理 Pod 的副本数量
- Deployment:管理 ReplicaSet,实现应用升级、回滚
- Service:为 Pod 提供统一入口,负责流量分发
3. Docker 容器技术与实践
3.1 镜像拉取加速
-
镜像加速配置参考:Docker Hub 国内镜像源配置
-
配置文件(macOS):
~/docker/daemon.json
-
示例:
json{ "registry-mirrors": [ "https://mi0m0nd3.mirror.aliyuncs.com", "https://dockerproxy.com", "https://mirror.baidubce.com", "https://docker.m.daocloud.io", "https://docker.nju.edu.cn", "https://docker.mirrors.ustc.edu.cn" ] }
-
如遇镜像拉取失败,可用 dig 命令测试 DNS 解析,例如:
bashdig @114.114.114.114 registry-1.docker.io
-
支持从私有仓库拉取镜像,例如:
bashdocker pull 10.132.17.6:28443/nginx
3.2 认证与登录
-
推荐使用代理或科学上网
-
阿里云镜像仓库登录示例:
bashsudo docker login --username=xxx registry.cn-hangzhou.aliyuncs.com
-
docker login 会将认证凭据存储在配置文件(如 ~/.docker/config.json),拉取镜像时自动使用。
-
认证和镜像加速配置均可在 config.json 查看。
安全提示:config.json 中的 auths 字段内容为 base64 编码的用户名和密码,注意保护,不要泄露。
3.3 常用命令
-
查看所有容器:
docker ps -a
-
启动容器:
docker start <容器名>
-
停止容器:
docker stop <容器名>
-
重启容器:
docker restart <容器名>
-
查看日志:
docker logs <容器名>
-
进入容器:
docker exec -it <容器名> /bin/bash
-
删除容器:
docker rm <容器名>
-
查看挂载:
docker inspect <容器ID> | grep -A 5 "Mounts"
-
批量删除某类容器:
bashdocker ps --filter "name=llm" --format '{{.ID}}' | xargs docker rm -f
-
其他常用命令:
- 查看卷:
docker volume ls
- 查看详细信息:
docker inspect <容器名或ID>
- 保存镜像为文件:
docker save <镜像ID> -o <文件名>
- 构建镜像:
docker build -t <镜像名> .
- 查看卷:
3.4 存储挂载方式对比
特性 | 命名卷(-v volume_name:/container/path) | 宿主机目录挂载(-v /host/path:/container/path) |
---|---|---|
可移植性 | 更好,不依赖宿主机路径 | 较差,依赖宿主机目录结构 |
备份管理 | 由 Docker 集中管理 | 需手动管理宿主机目录 |
访问便捷性 | 不易直接访问内容 | 可直接在宿主机上查看和修改 |
性能 | 取决于 Docker 存储驱动 | 直接访问宿主机文件系统 |
用途 | 应用数据、数据库存储 | 代码开发、配置文件、日志输出 |
3.5 docker-compose 启动
bash
docker-compose --compatibility up -d
如使用代理,需确保 Docker Desktop 已开启代理。
3.6 容器化应用部署示例
PostgreSQL 15 容器部署:
bash
docker run --name postgres15 \
-p 5432:5432 \
-e POSTGRES_PASSWORD=your_password \
-v postgres_data:/var/lib/postgresql/data \
-d postgres:15-alpine
4. kind 快速启动
bash
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.27.0/kind-linux-amd64
chmod +x kind && sudo mv kind /usr/local/bin/
kind create cluster
验证 API Server 是否正常响应:
bash
kubectl --context kind-kind get --raw /