文章目錄
- 1. 典型環境層次結構
- 2. Kubernetes 生態三大類
- 2.1 核心組件
- 2.2 集群管理工具
- 2.3 生態輔助工具
- 2.4 資源管理關系
- 3. Docker 容器技術與實踐
- 3.1 鏡像拉取加速
- 3.2 認證與登錄
- 3.3 常用命令
- 3.4 存儲掛載方式對比
- 3.5 docker-compose 啟動
- 3.6 容器化應用部署示例
- 4. kind 快速啟動
- 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 能夠簡化應用部署與運維的核心所在。
參考:Kubernetes官方文檔
2.4 資源管理關系
- Node:物理機或虛擬機
- Pod:容器的運行單元
- ReplicaSet:管理 Pod 的副本數量
- Deployment:管理 ReplicaSet,實現應用升級、回滾
- Service:為 Pod 提供統一入口,負責流量分發
3. Docker 容器技術與實踐
3.1 鏡像拉取加速
- 鏡像加速配置參考:Docker Hub 國內鏡像源配置
- 配置文件(macOS):
~/docker/daemon.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 解析,例如:
dig @114.114.114.114 registry-1.docker.io
- 支持從私有倉庫拉取鏡像,例如:
docker pull 10.132.17.6:28443/nginx
3.2 認證與登錄
- 推薦使用代理或科學上網
- 阿里云鏡像倉庫登錄示例:
sudo docker login --username=xxx registry.cn-hangzhou.aliyuncs.com
- docker login 會將認證憑據存儲在配置文件(如 ~/.docker/config.json),拉取鏡像時自動使用。
- 認證和鏡像加速配置均可在 config.json 查看。
安全提示:config.json 中的 auths 字段內容為 base64 編碼的用戶名和密碼,注意保護,不要泄露。
參考:Docker CLI config reference
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"
- 批量刪除某類容器:
docker 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 啟動
docker-compose --compatibility up -d
如使用代理,需確保 Docker Desktop 已開啟代理。
3.6 容器化應用部署示例
PostgreSQL 15 容器部署:
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 快速啟動
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 是否正常響應:
kubectl --context kind-kind get --raw /
5. 參考資料
- Kubernetes官方文檔
- Docker Hub國內鏡像源配置
- minikube常見問題解答
- Docker萬字教程:從入門到掌握
- Docker CLI config reference