K8s网络全解析:从基础模型到实战应用,轻松掌握Kubernetes网络配置技巧

2026-11-07 0 阅读

Kubernetes(简称K8s)是现代云计算中不可或缺的一部分,它为容器化应用提供了强大的编排和管理能力。而在K8s中,网络配置是确保容器间通信和外部访问的关键。本文将带你从基础模型出发,深入浅出地了解Kubernetes网络配置,让你轻松掌握实战技巧。

一、Kubernetes网络基础模型

1.1 pod与node

在Kubernetes中,pod是调度和运行应用的基本单位。每个pod都可以拥有自己的IP地址,并且同一pod内的容器共享网络命名空间。node则是集群中的计算节点,负责运行pod。

1.2 网络模型

Kubernetes的网络模型主要分为两种:扁平网络模型和 overlay 网络。

  • 扁平网络模型:所有pod都在同一个子网内,通过IP地址直接通信。
  • overlay 网络:使用 overlay 技术,将不同子网的pod连接起来,实现跨网络通信。

二、Kubernetes网络组件

2.1 flannel

flannel 是一个常用的 overlay 网络,它将不同的子网通过虚拟网络连接起来。在 flannel 中,每个 node 都会运行一个 flanneld 进程,负责管理本地的网络命名空间。

2.2 Calico

Calico 是另一个流行的 overlay 网络,它使用 BGP 协议来实现跨网络通信。Calico 需要在每个 node 上运行一个 calico-kube-router 进程和一个 calico-node 进程。

2.3 Weave

Weave 是一个简单的 overlay 网络,它使用 VxLAN 技术实现跨网络通信。Weave 需要在每个 node 上运行 weave 进程。

三、Kubernetes网络配置实战

3.1 创建网络

在 Kubernetes 中,可以使用 kubectl 命令创建网络。以下是一个使用 flannel 创建网络的示例:

kubectl apply -f flannel.yaml

其中,flannel.yaml 文件内容如下:

apiVersion: v1
kind: Pod
metadata:
  name: flannel
  namespace: kube-system
spec:
  containers:
  - name: flannel
    image: quay.io/coreos/flannel
    command:
    - /bin/sh
    - -c
    - "set -x; ip link add cni0 type veth peer name cni0; ip link set cni0 up; ip addr add 10.244.0.1/16 dev cni0; ip link add flannel0 type flannel; ip link set flannel0 up; sleep 10; while true; do ip a; sleep 10; done"

3.2 配置服务

在 Kubernetes 中,可以使用 Service 来暴露 pod 的服务。以下是一个使用 NodePort 暴露 pod 的示例:

kubectl expose deployment myapp --type=NodePort --port=80

其中,myapp 是一个 deployment 的名称。

3.3 配置 Ingress

在 Kubernetes 中,可以使用 Ingress 来实现外部访问。以下是一个使用 Nginx Ingress 控制器配置 Ingress 的示例:

kubectl apply -f nginx-ingress.yaml

其中,nginx-ingress.yaml 文件内容如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - host: myapp.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: myapp
            port:
              number: 80

四、总结

通过本文的学习,相信你已经对 Kubernetes 网络配置有了深入的了解。在实际应用中,可以根据需求选择合适的网络模型和组件,并掌握相应的配置技巧。希望本文能帮助你轻松掌握 Kubernetes 网络配置,为你的项目带来便利。

分享到: