一、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的三种特殊容器

  1. ​基础容器​​:默默提供基础设施的"房主"

  2. ​初始化容器​​:做事认真必须成功的"装修队"

  3. ​业务容器​​:真正干活的"员工"

健康检查(探针)

就像定期体检,确保服务健康:

  • ​存活探针​​:检查是否"活着",不行就重启

  • ​就绪探针​​:检查是否"准备好上班",没准备好就不分配工作

  • ​启动探针​​:针对启动慢的应用,等它完全启动再检查

三、项目生命周期管理

五大阶段

  1. ​创建​​:kubectl create- 项目立项

  2. ​发布​​:kubectl expose- 正式开业

  3. ​更新​​:kubectl set image- 版本升级

  4. ​回滚​​:kubectl rollout undo- 出现问题回退

  5. ​删除​​:kubectl delete- 项目结束

三种发布策略

  1. ​滚动发布​​:像电梯一样逐层更新,不影响服务

  2. ​蓝绿发布​​:准备两套环境,一键切换

  3. ​金丝雀发布​​:先让少量用户试用新版本,没问题再全面推广

四、端口概念详解

四种端口类型

想象成公司的联系方式:

  • ​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                # 查看事件

八、核心要点记住

  1. ​Pod是最小单位​​,像办公室容纳多个紧密相关的容器

  2. ​Service是服务发现​​,像公司的通讯录

  3. ​Deployment管理Pod生命周期​​,像人力资源部门

  4. ​健康检查确保服务可用​​,像定期体检

  5. ​资源限制防止过度消耗​​,像预算管理

记住这些核心概念,就能理解Kubernetes的基本工作原理了!

更多推荐