哈尔滨市网站建设_网站建设公司_自助建站_seo优化
2026/1/7 4:28:50 网站建设 项目流程

文章目录

    • 一、Kubernetes 网络方案
      • 1. Flannel 方案(轻量级,适合小型集群)
        • 核心定位
        • 核心原理:Overlay 叠加网络
        • 关键补充
      • 2. Calico 方案(高性能,适合大型/复杂集群)
        • 核心定位
        • 核心组件
        • 工作原理
        • 核心优势
      • 方案选型总结
    • 二、Kubernetes 资源管理
      • 1. 管理操作分类
      • 2. 核心基础命令(陈述式)
        • (1)基础信息查看
        • (2)命名空间操作
        • (3)Pod/Deployment 操作
        • (4)Service 暴露(Pod 访问入口)
      • 3. 项目生命周期管理
    • 三、核心总结
      • 1. 网络方案核心
      • 2. 资源管理核心
      • 3. 关键命令记忆

一、Kubernetes 网络方案

1. Flannel 方案(轻量级,适合小型集群)

核心定位

Flannel 是 Kubernetes 主流的 Overlay 网络插件,核心功能是为集群内所有 Pod 分配全集群唯一的虚拟 IP,解决跨节点 Pod 通信问题,适合小型网络、无高并发的简单集群场景。

核心原理:Overlay 叠加网络

在底层物理网络之上封装虚拟隧道,将 Pod 报文封装后通过主机物理网卡转发,本质是「隧道通信」,支持以下 3 种转发模式(常用 UDP、VXLAN):

模式转发层级实现位置性能核心原理
UDP三层(IP)用户态(flanneld 进程)较差(多一次用户态/内核态切换)1. Pod 报文经 docker0/cni0 到 flannel0 虚拟网卡;
2. flanneld 进程封装 UDP 报文,通过 Etcd 路由表找到目标节点;
3. 目标节点 flanneld 解包,转发到目标 Pod。
VXLAN二层(MAC)内核态较好(内核直接处理)1. Pod 报文经 docker0/cni0 到 flannel.1(VXLAN 网卡);
2. 内核添加 VXLAN 头部封装 UDP 报文,通过物理网卡发送;
3. 目标节点 flannel.1 解包,转发到目标 Pod(默认端口 4789)。
关键补充
  • Etcd 作用:存储 Flannel 可分配的 IP 段、维护 Pod 节点路由表;
  • VXLAN vs VLAN:VXLAN 支持 1677 万+ 虚拟网络(VLAN 仅 4096),可跨物理网络/数据中心,是当前主流模式。

2. Calico 方案(高性能,适合大型/复杂集群)

核心定位

Calico 不依赖隧道/NAT,而是将每个节点当作「路由器」,通过 BGP 协议同步路由规则,结合 iptables 实现安全策略,性能损耗极低,适合大型、复杂网络架构的集群。

核心组件
组件作用
Calico CNI 插件与 Kubernetes 对接,供 kubelet 调用创建 Pod 网络
Felix维护宿主机路由规则、转发信息库(FIB)
BIRD基于 BGP 协议分发路由规则(类似路由器)
Confd配置管理组件
工作原理
  1. Calico 为每个 Pod 创建 veth pair 设备(一端在 Pod 内,一端在宿主机);
  2. Felix 在宿主机为每个 veth pair 配置路由规则;
  3. Pod 报文通过 veth pair 到宿主机,宿主机根据路由规则(BIRD 同步)转发到目标节点;
  4. 目标节点接收报文后,转发到目标 Pod。
核心优势
  • 无报文封装,性能损耗最低;
  • 支持复杂网络策略(如 Pod 间访问控制);
  • 适合集群扩容、多设备接入的复杂场景。

方案选型总结

场景推荐方案
小型集群、简单网络、无高并发Flannel(VXLAN 模式)
大型集群、复杂网络策略、高性能需求Calico

二、Kubernetes 资源管理

1. 管理操作分类

Kubernetes 资源管理分为两类,核心区别如下:

类型特点适用场景
陈述式(命令式)直接通过kubectl命令操作资源,简单直观快速调试、临时操作(如查看资源、创建测试 Pod)
声明式(配置清单式)通过 YAML/JSON 文件定义资源最终状态,k8s 自动校准生产环境、批量管理、版本控制

2. 核心基础命令(陈述式)

(1)基础信息查看
kubectl version# 查看 k8s 版本kubectl cluster-info# 查看集群信息kubectl api-resources# 查看资源对象简写(如 pod/Po、deployment/Deploy)kubectl get nodes# 查看节点状态(Ready/NotReady)kubectl get ns# 查看所有命名空间(namespace)kubectl get all -n<命名空间># 查看指定命名空间所有资源kubectl describe<资源类型>/<名称>-n<命名空间># 查看资源详细信息(如 kubectl describe pod nginx-xxx)
(2)命名空间操作
kubectl create ns<名称># 创建命名空间(如 kubectl create ns app)kubectl delete ns<名称># 删除命名空间
(3)Pod/Deployment 操作
# 创建 Deployment(副本控制器,管理 Pod 生命周期)kubectl create deployment<名称>--image=<镜像>--port=<端口>--replicas=<副本数>-n<命名空间># 示例:创建 3 个 nginx 1.14 副本,暴露 80 端口kubectl create deployment nginx --image=nginx:1.14 --port=80--replicas=3# 扩缩容 Deploymentkubectl scale deployment<名称>--replicas=<数量>-n<命名空间># 示例:缩容为 2 个副本kubectl scale deployment nginx --replicas=2# 删除 Deployment(会自动删除关联 Pod)kubectl delete deployment<名称>-n<命名空间># 登录 Pod 容器kubectlexec-it<Pod 名称>-n<命名空间>-- /bin/bash# 查看 Pod 日志kubectl logs<Pod 名称>-n<命名空间>
(4)Service 暴露(Pod 访问入口)

Service 是 Pod 的访问代理,解决 Pod 动态 IP 问题,核心类型及端口说明:

Service 类型用途端口说明
ClusterIP(默认)集群内部访问port:集群内访问 Service 的端口(如 ClusterIP:80)
NodePort集群外部访问nodePort:节点端口(范围 30000-32767),外部通过节点IP:nodePort访问
LoadBalancer云平台负载均衡基于云厂商提供的 LB 暴露服务
ExternalName映射外部域名将 Service 映射到外部域名

核心端口关系

  • nodePort(外部)→port(集群内)→targetPort(Pod 端口)→containerPort(容器端口)

暴露 Service 命令

# 暴露 Deployment 为 NodePort 类型 Servicekubectl expose deployment<名称>--type=NodePort --port=<集群端口>--target-port=<Pod 端口>-n<命名空间># 示例:暴露 nginx Deployment,集群内端口 80,映射 Pod 80 端口,外部节点端口随机分配kubectl expose deployment nginx --type=NodePort --port=80--target-port=80# 查看 Service 信息kubectl get svc -n<命名空间>-o wide

3. 项目生命周期管理

完整生命周期:创建 → 发布 → 更新 → 回滚 → 删除

阶段核心操作示例命令
创建创建 Deployment 管理 Podkubectl create deployment nginx --image=nginx:1.14 --replicas=3
发布暴露 Service 提供访问入口kubectl expose deployment nginx --type=NodePort --port=80
更新修改 Pod 镜像版本(滚动更新)kubectl set image deployment/nginx nginx=nginx:1.15
回滚回滚到历史版本kubectl rollout undo deployment/nginx(回滚上一版本)
kubectl rollout history deployment/nginx(查看更新历史)
删除删除 Deployment 和 Servicekubectl delete deployment nginx
kubectl delete svc nginx

关键补充

  • 滚动更新:更新时先创建新 Pod,再删除旧 Pod,无服务中断;
  • 动态监听 Pod 状态:kubectl get pods -w(实时查看更新/扩缩容过程)。

三、核心总结

1. 网络方案核心

  • Flannel:轻量级 Overlay 网络,通过隧道(VXLAN 为主)实现 Pod 通信,适合小型集群;
  • Calico:基于 BGP 路由的无隧道方案,性能高、支持复杂策略,适合大型/复杂集群。

2. 资源管理核心

  • 陈述式命令(kubectl)适合快速操作,声明式(YAML)适合生产环境;
  • Deployment 是管理 Pod 的核心控制器,Service 是 Pod 的稳定访问入口;
  • 项目生命周期核心:通过 Deployment 管理 Pod 版本,Service 暴露访问,支持滚动更新/回滚,保证服务高可用。

3. 关键命令记忆

  • 查看资源:kubectl get <资源类型>(如 pod、svc、deployment);
  • 创建/更新:kubectl create deployment/kubectl set image
  • 暴露服务:kubectl expose deployment
  • 扩缩容/回滚:kubectl scale/kubectl rollout undo

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询