Kube-Proxy 是 Kubernetes 集群中的核心网络组件之一,运行在每个节点(Node)上。它的主要职责是实现 Kubernetes Service 的网络代理功能,确保集群内的 Pod 可以通过 Service 进行通信,同时支持外部流量访问 Service。负责监听 Kubernetes API Server,获取 Service 和 Endpoint 的变化,当 Service 或 Pod 发生变化时,Kube-Proxy 会动态更新节点上的网络规则(如 iptables 或 IPVS 规则),当流量到达 Service 的 ClusterIP 时,Kube-Proxy 根据配置的规则将流量转发到后端 Pod。下面我们一步步跟着搭建k8s中的kube-proxy搭建过程;
准备
在工作节点创建工作目录
mkdir -p /var/lib/kube-proxy
创建kube-proxy证书请求文件
其中证书中的names信息最后与前面创建的相关证书信息保持一致
cat > kube-proxy-csr.json <<"EOF"
{
"CN": "system:kube-proxy",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [{
"C":"CN",
"ST":"zhejiang",
"L":"hangzhou",
"O":"eyinfo",
"OU":"CN"
}]
}
EOF
生成kube-proxy证书
证书配置文件创建好了之后,下面使用 CFSSL(CloudFlare’s PKI/TLS toolkit)为 Kubernetes 的 kube-proxy 组件生成 TLS 证书
- cfssl gencert:CFSSL 工具的核心命令,用于生成证书;
- -ca=ca.pem:指定 CA(证书颁发机构)的证书文件(ca.pem),该证书包含CA公钥用于验证签发的证书;
- -ca-key=ca-key.pem:指定ca私钥文件用于对签发的证书进行签名;
- -config=ca-config.json :指定CA证书的配置文件,包含证书的默认配置和签名文件;
- -profile=kubernetes:使用ca-config.json配置中的某个模版
- kube-proxy-csr.json:指定证书请求CSR文件,包含Common Name(CN)、Organization(O)、Alt Names(SANs);
- cfssljson -bare kube-proxy:CFSSL 的辅助工具,用于处理 CFSSL 输出的 JSON 格式数据;
cfssl gencert \
-ca=ca.pem \
-ca-key=ca-key.pem \
-config=ca-config.json \