Kubernetes入门教程
1. 什么是Kubernetes?
Kubernetes(简称K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它最初由Google设计,现在由云原生计算基金会(CNCF)维护。Kubernetes的主要功能包括:
自动化容器部署和复制
容器间的负载均衡
存储管理
服务发现和路由
自动扩缩容
滚动更新和回滚
2. 准备工作
安装kubectl(Kubernetes命令行工具)
# 在macOS上使用Homebrew安装
brew install kubectl
# 在Windows上使用Chocolatey安装
choco install kubernetes-cli
# 验证安装
kubectl version --client
安装Minikube(本地Kubernetes环境)
# 安装Minikube
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
chmod +x minikube
sudo mv minikube /usr/local/bin/
# 启动Minikube集群
minikube start
安装Docker(容器运行时)
# 在Ubuntu上安装Docker
sudo apt update
sudo apt install -y docker.io
sudo usermod -aG docker $USER
# 验证Docker安装
docker --version
3. 核心概念
**Pod**:Kubernetes中最小的部署单元,包含一个或多个容器
**Deployment**:管理Pod的部署和更新
**Service**:为一组Pod提供统一的访问入口
**Namespace**:将集群资源划分为多个虚拟集群
**ConfigMap & Secret**:管理应用配置和敏感数据
4. 创建第一个应用
创建Pod
# pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx-container
image: nginx:1.21
ports:
- containerPort: 80
# 创建Pod
kubectl apply -f pod.yaml
# 查看Pod状态
kubectl get pods
创建Deployment
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
# 创建Deployment
kubectl apply -f deployment.yaml
# 查看Deployment和Pod
kubectl get deployment
kubectl get pods -l app=nginx
5. 暴露服务
创建Service
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort
# 创建Service
kubectl apply -f service.yaml
# 获取服务访问地址
minikube service nginx-service --url
6. 扩缩容应用
# 扩容到5个副本
kubectl scale deployment nginx-deployment --replicas=5
# 查看扩容结果
kubectl get pods -l app=nginx
# 缩容到2个副本
kubectl scale deployment nginx-deployment --replicas=2
7. 滚动更新
# 更新镜像版本
kubectl set image deployment/nginx-deployment nginx=nginx:1.22
# 查看更新状态
kubectl rollout status deployment/nginx-deployment
# 查看更新历史
kubectl rollout history deployment/nginx-deployment
# 回滚到上一个版本
kubectl rollout undo deployment/nginx-deployment
8. 配置管理
创建ConfigMap
# configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_COLOR: "blue"
APP_MODE: "production"
在Pod中使用ConfigMap
# pod-with-configmap.yaml
apiVersion: v1
kind: Pod
metadata:
name: configmap-pod
spec:
containers:
- name: myapp
image: busybox
command: ["sh", "-c", "echo $APP_COLOR && sleep 3600"]
env:
- name: APP_COLOR
valueFrom:
configMapKeyRef:
name: app-config
key: APP_COLOR
# 创建ConfigMap和Pod
kubectl apply -f configmap.yaml
kubectl apply -f pod-with-configmap.yaml
9. 使用Secret管理敏感数据
# 创建Secret
kubectl create secret generic db-secret --from-literal=password='mysecretpassword'
# secret-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: secret-pod
spec:
containers:
- name: myapp
image: busybox
command: ["sh", "-c", "echo $DB_PASSWORD && sleep 3600"]
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: password
# 创建Pod
kubectl apply -f secret-pod.yaml
10. 常用调试命令
# 查看Pod详细信息
kubectl describe pod <pod-name>
# 查看Pod日志
kubectl logs <pod-name>
# 在Pod中执行命令
kubectl exec -it <pod-name> -- /bin/bash
# 查看集群事件
kubectl get events
# 删除资源
kubectl delete -f <file.yaml>
11. 总结
Kubernetes是一个强大的容器编排平台,通过本教程,我们学习了:
Kubernetes的核心概念(Pod、Deployment、Service等)
如何创建和管理容器化应用
应用的扩缩容和滚动更新
使用ConfigMap和Secret管理配置
常用的调试和故障排除命令
Kubernetes的学习曲线较陡峭,但掌握它能极大提升应用部署和管理的效率。建议继续深入学习Kubernetes的高级特性如Ingress、PersistentVolume、StatefulSet等,并探索云原生生态系统中的其他工具如Helm、Prometheus等。持续实践是掌握Kubernetes的关键,可以尝试将更多应用部署到Kubernetes环境中,逐步积累经验。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。





