K8s回顾

Jan 于 2025-11-12 发布 浏览量

一、Kubernetes 组件概述

1. 控制平面组件(Control Plane)

控制平面是整个集群的“大脑”,负责集群的决策、调度、状态维护等核心功能。

2. 节点组件(Node Components)

节点层是应用运行的“计算层”,负责实际的容器运行与网络转发。

3. 核心组件功能速览

组件名称 核心作用
kube-apiserver 集群 API 入口,协调各组件通信
etcd 存储集群配置与状态,提供一致性数据存储
kube-scheduler 基于策略调度 Pod 到合适节点
kube-controller-manager 运行控制器,维持集群期望状态
cloud-controller-manager 对接云平台 API,管理负载均衡与存储等资源
kubelet 管理 Pod 生命周期并上报节点状态
kube-proxy 维护网络规则,实现通信与负载均衡
容器运行时(CRI) 运行容器的底层环境

二、常用命令汇总

1.命令解释

top         # 查看节点 CPU、内存使用情况
drain       # 排空节点
taint       # 给节点添加/移除污点
describe    # 查看资源详细信息
logs        # 查看容器日志
exec        # 在容器中执行命令
cp          # 在本地与 Pod 间复制文件
apply       # 通过配置文件创建或更新资源
label       # 添加或修改标签

2.简写速查表

命令用途 常用缩写形式 示例命令 主要作用
查看 Pod kubectl get po kubectl get po -n kube-system 查看 Pod 状态
查看详细信息 kubectl describe kubectl describe po nginx-xxx 查看资源详细状态
查看日志 kubectl logs kubectl logs -f nginx-xxx 查看容器运行日志
进入容器 kubectl exec kubectl exec -it nginx-xxx -- sh 进入 Pod 内部执行命令
打标签 kubectl label kubectl label node node1 env=prod 给节点或 Pod 添加标签
打污点 kubectl taint kubectl taint nodes node1 key=value:NoSchedule 设置调度限制(防止调度)
容忍污点 YAML中 tolerations 在 Pod spec 中添加容忍配置 允许 Pod 调度到被污点节点
查看事件 kubectl get ev kubectl get ev --sort-by=.metadata.creationTimestamp 查看集群事件变化
应用配置 kubectl apply -f kubectl apply -f deploy.yaml 创建或更新资源
删除资源 kubectl delete kubectl delete po nginx-xxx 删除资源对象

如果只记快捷命令,可以掌握以下常用别名(适合高频操作):

kubectl get po        # 获取Pod
kubectl describe po   # 查看详情
kubectl logs po       # 查日志
kubectl exec -it po   # 进容器
kubectl label node    # 打标签
kubectl taint node    # 加污点
kubectl apply -f xxx  # 应用配置
kubectl delete po     # 删除资源

三、Namespace(命名空间)

命名空间用于在逻辑上隔离资源,方便多用户、多项目协作。

Kubernetes 启动后会创建以下默认命名空间:

kubectl create ns test
kubectl delete ns test

四、Pod(最小部署单元)

Pod 是 Kubernetes 中最小的调度与运行单元,可包含一个或多个容器。 同一个 Pod 内的容器共享网络与存储命名空间。

# 创建 Pod
kubectl run my-pod --image=nginx:latest

# 查看 Pod
kubectl get po -A
kubectl get po -n kube-system

# 查看详情与日志
kubectl describe pod my-pod
kubectl logs my-pod

# 删除 Pod
kubectl delete pod my-pod

五、Deployment(部署控制器)

Deployment 负责应用的部署与更新,提供副本管理、自愈、滚动升级等能力。

kubectl create deploy my-tomcat --image=tomcat
kubectl get deploy
kubectl delete deploy my-tomcat

1. 自愈机制

删除一个 Pod 后,Deployment 会自动拉起新的 Pod:

kubectl delete pod my-tomcat-xxxx

2. 多副本与扩缩容

kubectl create deploy my-tomcat --replicas=3
kubectl scale deploy my-tomcat --replicas=5

六、Service(服务抽象)

Service 用于为一组 Pod 提供统一访问入口,支持内部通信或外部暴露。

kubectl expose deployment my-tomcat --port=8080 --type=NodePort
kubectl get svc -o wide

1. 四类 Service 类型

类型 说明 访问方式 适用场景
ClusterIP(默认) 仅在集群内访问 <ClusterIP>:<Port> 集群内部通信
NodePort 在节点端口暴露服务 <NodeIP>:<NodePort> 内外网测试、简易暴露
LoadBalancer 云负载均衡器方式暴露 云 LB 公网地址 云端生产环境
ExternalName 映射外部域名 通过 DNS 访问外部域名 外部数据库或 API 接入

七、Pod 与 Deployment 区别

对比项 kubectl create pod kubectl create deployment
创建对象 Pod Deployment(包含 ReplicaSet 与 Pod)
管理方式 命令式,一次性创建 声明式,自动维持期望状态
自愈能力 有(Pod 异常会自动重建)
扩缩容 不支持 支持 scale 命令
滚动更新与回滚 不支持 支持
适用场景 临时测试 长期运行服务
最佳实践 开发调试阶段使用 生产部署推荐使用

八、更新与回滚机制

1. 滚动重启

kubectl rollout restart deployment/my-app
kubectl rollout status deployment/my-app

2. 滚动升级

kubectl set image deployment/my-app my-container=my-image:v2
kubectl rollout status deployment/my-app

3. 回退历史版本

kubectl rollout history deployment/my-app
kubectl rollout undo deployment/my-app

4. 重建更新(Recreate)

kubectl patch deployment/my-app -p '{"spec":{"strategy":{"type":"Recreate"}}}'
kubectl set image deployment/my-app my-container=my-image:v2

5. 蓝绿部署(Blue-Green)

# 旧版本(蓝)
kubectl create deploy my-app-blue --image=my-image:v1 --replicas=3
kubectl expose deploy my-app-blue --port=80 --name=my-service

# 新版本(绿)
kubectl create deploy my-app-green --image=my-image:v2 --replicas=3
kubectl patch svc my-service -p '{"spec":{"selector":{"app":"my-app-green"}}}'

6. 金丝雀发布(Canary)

kubectl create deploy my-app --image=my-image:v1 --replicas=3
kubectl create deploy my-app-canary --image=my-image:v2 --replicas=1
kubectl label deploy/my-app-canary app=my-app

7. 更新方式对比表

特性 滚动重启 滚动升级 回退历史版本 重建更新 蓝绿部署 金丝雀发布
核心逻辑 重建 Pod 不改配置 逐步替换 Pod 恢复历史版本 删除后重建 双环境切换流量 少量新版本灰度
服务中断
资源消耗
操作复杂度
典型场景 重启服务 正常升级 快速回滚 停机更新 高可用验证 灰度验证