K8S核心知识点

K8S核心概念

Pod

K8S最小调度单元,包含一个或多个容器,共享网络和存储。Pod设计为临时性,通常由控制器管理生命周期。

Deployment

声明式管理Pod副本集的控制器,支持滚动更新、回滚和扩缩容。通过定义replicas确保应用高可用。

Service

为一组Pod提供稳定访问入口,通过标签选择器关联Pod。支持ClusterIP、NodePort、LoadBalancer等类型。

Namespace

逻辑隔离集群资源,适用于多租户环境。系统默认创建kube-systemdefault等命名空间。


核心架构组件

Master节点

  • API Server:集群操作入口,RESTful接口交互
  • Scheduler:根据资源需求将Pod调度到Node
  • Controller Manager:运行副本控制、节点监控等核心控制器
  • etcd:分布式键值存储,保存集群状态

Node节点

K8S的架构图

  • kubelet:与API Server通信,管理容器生命周期
  • kube-proxy:维护网络规则,实现Service负载均衡
  • 容器运行时:如Docker、containerd,负责运行容器

网络模型

CNI插件

实现Pod跨节点通信,常见方案包括Calico、Flannel、Cilium。需满足以下要求:

  • 所有Pod可不经NAT直接通信
  • 节点与Pod可不经NAT直接通信
  • Pod看到的自身IP与其他Pod看到的IP一致

Ingress

管理外部访问的API对象,通过规则定义HTTP/HTTPS路由。通常配合Ingress Controller(如Nginx)使用。


存储管理

Volume

提供Pod级持久化存储,支持emptyDir、hostPath、NFS等类型。生命周期与Pod绑定。

PV/PVC

  • PersistentVolume (PV):集群存储资源,由管理员配置
  • PersistentVolumeClaim (PVC):用户存储请求,动态绑定PV

StorageClass

定义动态供给存储的模板,支持按需创建PV(如AWS EBS、GCE PD)。


运维关键点

资源配额

通过ResourceQuota限制Namespace级别的CPU、内存等资源使用量,避免资源抢占。

HPA

Horizontal Pod Autoscaler基于CPU/内存或自定义指标自动扩缩容,示例配置:

yaml 复制代码
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

RBAC

基于角色的访问控制,通过RoleRoleBinding定义细粒度权限。示例:

yaml 复制代码
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: default
  name: pod-reader
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

调试命令

基础诊断

bash 复制代码
kubectl get pods -n <namespace>  # 查看Pod状态
kubectl describe pod <pod-name>  # 获取详细事件
kubectl logs <pod-name> -c <container>  # 查看容器日志

网络测试

bash 复制代码
kubectl exec -it <pod-name> -- curl <service-name>  # 测试Service连通性
kubectl run busybox --image=busybox --rm -it --restart=Never -- ping <ip>  # 临时诊断容器

资源监控

bash 复制代码
kubectl top nodes  # 查看节点资源使用
kubectl top pods   # 查看Pod资源消耗
相关推荐
恬静的小魔龙3 分钟前
【群晖Nas】群晖Nas中实现SVN Server功能、Docker/ContainerManager等
docker·svn·容器
Zfox_1 小时前
CANN Catlass 算子模板库深度解析:高性能 GEMM 融合计算、Cube Unit Tiling 机制与编程范式实践
docker·云原生·容器·eureka
农民工老王1 小时前
K8s 1.31 私有化部署实战:从 Calico 崩溃到 NFS 挂载失败的排坑全记录
云原生·kubernetes
灰子学技术1 小时前
istio从0到1:如何解决分布式配置同步问题
分布式·云原生·istio
广州中轴线1 小时前
OpenStack on Kubernetes 生产部署实战(十四)
kubernetes·智能路由器·openstack
春日见2 小时前
如何创建一个PR
运维·开发语言·windows·git·docker·容器
DARLING Zero two♡2 小时前
告别 Docker 命令行!Portainer+cpolar 让容器管理从局域网走向公网
运维·docker·容器
小马爱打代码2 小时前
ZooKeeper:入门实战
分布式·zookeeper·云原生
liu****3 小时前
2.深入浅出理解虚拟化与容器化(含Docker实操全解析)
运维·c++·docker·容器·虚拟化技术
logocode_li4 小时前
OCI/CRI 双标准下:从 dockerd 到 containerd 的 K8s 运行时迭代史
docker·云原生·容器·k8s