深入浅出Kubernetes:第一天学习指南
DescomplicandoKubernetes 项目地址: https://gitcode.com/gh_mirrors/de/DescomplicandoKubernetes
前言
Kubernetes作为当今最流行的容器编排平台,已经成为云原生技术栈的核心组件。本文将基于"DescomplicandoKubernetes"项目的第一天学习内容,系统性地介绍Kubernetes的基础知识,帮助初学者快速入门。
学习目标
在第一天的学习中,我们将重点掌握以下内容:
- 容器引擎和容器运行时的基本概念
- Kubernetes的核心架构和工作原理
- 本地Kubernetes集群的搭建方法
- 基本的Kubernetes操作实践
容器技术基础
容器引擎(Container Engine)
容器引擎是管理容器生命周期的重要组件,负责:
- 镜像和卷的管理
- 资源隔离保障
- 容器网络配置
- 存储管理
目前主流的容器引擎包括:
- Docker(最流行的选择)
- CRI-O(专为Kubernetes设计)
- Podman(无需守护进程的替代方案)
OCI(Open Container Initiative)
OCI是一个由Docker、CoreOS、Google等公司共同创立的标准化组织,主要贡献包括:
- 制定了容器镜像规范
- 开发了runc(低层容器运行时)
- 促进了容器技术的互操作性
容器运行时(Container Runtime)
容器运行时负责在节点上实际执行容器,可分为四种类型:
-
低层运行时:直接与内核交互
- runc(Docker默认使用)
- crun
- runsc
-
高层运行时:通过容器引擎调用
- containerd
- CRI-O
-
沙箱运行时:提供额外的安全隔离
- gVisor
-
虚拟化运行时:基于虚拟机技术
- Kata Containers
Kubernetes核心概念
什么是Kubernetes?
Kubernetes(简称k8s)是Google开源的容器编排系统,其设计基于Google内部系统Borg的经验。主要特点包括:
- 自动化部署、扩展和管理容器化应用
- 声明式配置
- 自我修复能力
- 服务发现和负载均衡
架构解析
Kubernetes采用控制平面/工作节点(control plane/workers)架构:
控制平面组件:
- API Server:集群操作的唯一入口
- etcd:分布式键值存储,保存集群状态
- Scheduler:负责Pod的节点调度
- Controller Manager:确保集群状态符合预期
工作节点组件:
- Kubelet:节点上的代理,管理Pod生命周期
- Kube-proxy:网络代理和负载均衡器
关键端口
了解Kubernetes使用的关键端口对运维和故障排查至关重要:
控制平面端口:
- 6443:Kubernetes API服务器
- 2379-2380:etcd客户端API
- 10250:Kubelet API
工作节点端口:
- 10250:Kubelet API
- 30000-32767:NodePort服务范围
本地环境搭建
工具选择
对于学习和开发,推荐以下本地Kubernetes解决方案:
-
Minikube:
- 单节点集群
- 支持多种驱动(Docker、VirtualBox等)
- 适合快速验证概念
-
Kind:
- 使用Docker容器模拟多节点集群
- 轻量级,启动快速
- 适合CI/CD测试
Minikube安装与使用
安装步骤
Linux系统安装示例:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
基本操作
启动集群:
minikube start --driver=docker
检查状态:
minikube status
访问仪表盘:
minikube dashboard
Kind安装与使用
安装步骤
Linux系统安装示例:
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
创建集群
单节点集群:
kind create cluster
多节点集群(使用配置文件):
# kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
kind create cluster --config kind-config.yaml
基础操作实践
kubectl配置
kubectl是操作Kubernetes集群的主要命令行工具。
安装kubectl
Linux系统安装示例:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
实用配置
启用命令自动补全:
echo 'source <(kubectl completion bash)' >> ~/.bashrc
创建常用别名:
alias k=kubectl
complete -F __start_kubectl k
第一个Pod
运行Nginx Pod:
kubectl run nginx --image=nginx
查看Pod状态:
kubectl get pods
服务暴露
创建Service暴露Pod:
kubectl expose pod nginx --port=80 --type=NodePort
获取服务访问地址:
minikube service nginx --url
清理资源
删除Pod和服务:
kubectl delete pod nginx
kubectl delete service nginx
总结
通过第一天的学习,我们掌握了Kubernetes的基础架构和核心概念,学会了如何在本地搭建开发环境,并完成了第一个Pod的创建和管理。这些知识为后续深入学习Kubernetes打下了坚实基础。
建议学习者在实践中逐步熟悉这些概念和操作,通过不断尝试来加深理解。在接下来的学习中,我们将探索更复杂的Kubernetes资源和高级功能。
DescomplicandoKubernetes 项目地址: https://gitcode.com/gh_mirrors/de/DescomplicandoKubernetes
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考