Kubernetes(二):从零开始理解容器编排
一、Kubernetes 基础管理方式
两种管理方法
-
陈述式管理:像跟K8s聊天一样,直接告诉它要做什么
kubectl create deployment nginx --image=nginx # 创建 kubectl get pods # 查看 kubectl delete pod nginx-xxx # 删除-
优点:简单直接,适合日常操作
-
缺点:修改配置比较麻烦
-
-
声明式管理:像写愿望清单一样,把想要的状态写在文件里
apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 3-
优点:配置可追溯,适合复杂管理
-
命令:
kubectl apply -f config.yaml
-
二、Pod:K8s的最小工作单元
Pod是什么?
想象Pod就像一个小型办公室:
-
基础容器(Pause):像办公室的房屋结构,提供网络和存储空间
-
业务容器:像办公室里的工作人员,在房屋里工作
-
初始化容器(Init):像办公室开业前的准备工作,必须完成才能正式营业
Pod的三种特殊容器
-
基础容器:默默提供基础设施的"房主"
-
初始化容器:做事认真必须成功的"装修队"
-
业务容器:真正干活的"员工"
健康检查(探针)
就像定期体检,确保服务健康:
-
存活探针:检查是否"活着",不行就重启
-
就绪探针:检查是否"准备好上班",没准备好就不分配工作
-
启动探针:针对启动慢的应用,等它完全启动再检查
三、项目生命周期管理
五大阶段
-
创建:
kubectl create- 项目立项 -
发布:
kubectl expose- 正式开业 -
更新:
kubectl set image- 版本升级 -
回滚:
kubectl rollout undo- 出现问题回退 -
删除:
kubectl delete- 项目结束
三种发布策略
-
滚动发布:像电梯一样逐层更新,不影响服务
-
蓝绿发布:准备两套环境,一键切换
-
金丝雀发布:先让少量用户试用新版本,没问题再全面推广
四、端口概念详解
四种端口类型
想象成公司的联系方式:
-
containerPort:公司内部分机号(容器内部端口)
-
targetPort:员工工位号(Pod内容器端口)
-
port:公司总机号(Service在集群内的端口)
-
nodePort:公司对外公开电话(节点端口,30000-32767)
Service类型
-
ClusterIP:内部电话,只在公司内使用
-
NodePort:有对外号码,客户可以拨打
-
LoadBalancer:有总机转接,适合云环境
-
ExternalName:相当于呼叫转移到外部
五、资源配置和限制
资源管理
像给员工分配办公资源:
-
requests:最低保障资源(基本工资)
-
limits:最多可用资源(奖金上限)
resources:
requests:
memory: "64Mi" # 至少64M内存
cpu: "250m" # 至少0.25个CPU
limits:
memory: "128Mi" # 最多128M内存
cpu: "500m" # 最多0.5个CPU
镜像拉取策略
-
IfNotPresent:本地有就用,没有才下载
-
Always:每次都重新下载
-
Never:只用本地镜像
六、YAML文件编写技巧
快速生成模板
# 生成Pod模板
kubectl run nginx --image=nginx --dry-run=client -o yaml > pod.yaml
# 生成Deployment模板
kubectl create deployment web --image=nginx --dry-run=client -o yaml > deploy.yaml
核心结构
apiVersion: apps/v1 # API版本
kind: Deployment # 资源类型
metadata: # 元数据
name: my-app # 名称
spec: # 规格说明
replicas: 3 # 副本数量
template: # Pod模板
spec:
containers: # 容器定义
- name: nginx
image: nginx:1.14
七、实用命令总结
基础查看命令
kubectl get pods # 查看Pod
kubectl get svc # 查看服务
kubectl get all # 查看所有资源
kubectl describe pod pod-name # 查看详细信息
故障排查
kubectl logs pod-name # 查看日志
kubectl exec -it pod-name bash # 进入容器
kubectl get events # 查看事件
八、核心要点记住
-
Pod是最小单位,像办公室容纳多个紧密相关的容器
-
Service是服务发现,像公司的通讯录
-
Deployment管理Pod生命周期,像人力资源部门
-
健康检查确保服务可用,像定期体检
-
资源限制防止过度消耗,像预算管理
记住这些核心概念,就能理解Kubernetes的基本工作原理了!
更多推荐
所有评论(0)