CentOS Overlay在Kubernetes中的应用
CentOS作为常见的Linux发行版,在Kubernetes集群中通过Overlay网络与OverlayFS存储技术,实现跨节点容器通信及高效存储管理。以下从配置前提、网络应用、存储应用三方面展开说明:
一、Overlay应用的前提配置
在CentOS上使用Overlay技术前,需完成内核模块加载与系统参数调整,确保底层支持:
- 加载内核模块:Overlay网络依赖
overlay模块(支持联合文件系统),桥接网络依赖br_netfilter模块(实现桥接与防火墙集成)。通过以下命令加载并设置开机自启:cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter - 配置sysctl参数:调整网络转发与桥接规则,允许Pod间跨节点通信:
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 # 桥接流量调用iptables规则 net.ipv4.ip_forward = 1 # 开启IPv4转发 net.bridge.bridge-nf-call-ip6tables = 1 # IPv6桥接流量调用ip6tables规则 EOF sudo sysctl --system # 生效配置
以上步骤是CentOS上使用Overlay技术的基础,需在所有集群节点执行。
二、Overlay网络在Kubernetes中的应用
Kubernetes通过CNI(容器网络接口)插件实现Overlay网络,常用插件包括Calico、Flannel等,核心作用是为Pod提供跨节点的虚拟网络,使Pod间可通过IP直接通信。
1. 安装CNI插件(以Calico为例)
Calico支持Overlay(VXLAN)与Underlay模式,适用于大多数场景。通过以下命令部署:
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml
部署后,检查插件状态:
kubectl get pods -n kube-system | grep calico
# 正常状态应为Running
2. 验证Overlay网络功能
通过创建Pod并测试跨节点通信,验证网络是否正常:
# 创建测试命名空间
kubectl create namespace overlay-test
# 部署两个Nginx Pod
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-overlay
namespace: overlay-test
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
EOF
# 获取Pod IP(需等待Pod状态为Running)
POD1_IP=$(kubectl get pod -n overlay-test -l app=nginx -o jsonpath='{.items[0].status.podIP}')
POD2_IP=$(kubectl get pod -n overlay-test -l app=nginx -o jsonpath='{.items[1].status.podIP}')
# 进入Pod1并ping Pod2
kubectl exec -it -n overlay-test $(kubectl get pod -n overlay-test -l app=nginx -o jsonpath='{.items[0].metadata.name}') -- ping $POD2_IP
若能ping通,说明Overlay网络配置成功。
三、OverlayFS存储在Kubernetes中的应用
OverlayFS是Kubernetes默认的容器存储驱动,用于管理镜像层与容器可写层,特点是通过分层存储减少磁盘占用,提升启动速度。
1. OverlayFS作为容器运行时存储
CentOS上推荐使用containerd作为容器运行时(Kubernetes原生支持),配置overlay存储驱动:
# 生成containerd默认配置
sudo mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
# 修改配置(启用systemd cgroup驱动,设置镜像仓库镜像)
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sed -i 's|k8s.gcr.io/pause:3.9|registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9|' /etc/containerd/config.toml
# 重启containerd
sudo systemctl restart containerd
sudo systemctl enable containerd
2. OverlayFS作为持久卷(PV)
Kubernetes支持将OverlayFS作为持久卷,但需依赖存储插件(如local-path-provisioner或第三方OverlayFS存储服务)。以下是使用local-path-provisioner的示例:
# 安装local-path-provisioner(需提前部署)
kubectl apply -f https://github.com/k3s-io/k3s/releases/latest/download/local-path-storage.yaml
# 创建PersistentVolumeClaim(PVC)
kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: overlay-pvc
namespace: overlay-test
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: local-path # 使用local-path存储类
EOF
# 创建使用PVC的Pod
kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: overlay-pod
namespace: overlay-test
spec:
containers:
- name: overlay-container
image: busybox
command: ["sleep", "3600"]
volumeMounts:
- mountPath: "/data"
name: overlay-volume
volumes:
- name: overlay-volume
persistentVolumeClaim:
claimName: overlay-pvc
EOF
Pod启动后,/data目录即为OverlayFS存储路径,数据会持久化到节点本地。
注意事项
- CentOS版本兼容性:CentOS 7已停止官方支持,建议迁移至AlmaLinux或Rocky Linux,以获得更好的安全更新与Kubernetes兼容性。
- 网络插件选择:Flannel的VXLAN模式适合小型集群,Calico的IPIP模式适合跨子网通信,可根据场景选择。
- 性能优化:Overlay网络可能带来一定性能开销,可通过调整内核参数(如
net.core.rmem_max、net.core.wmem_max)或使用高速存储(SSD)缓解。
以上就是关于“CentOS Overlay在Kubernetes中的应用”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm