[BIN] kube-proxy

[BIN] kube-proxy #

下载二进制程序到Node节点 #

ARCH=amd64
if [ "$(uname -i)" = "aarch64" ]; then ARCH=arm64; fi

VERSION=v1.29.1
wget https://cdn.dl.k8s.io/release/${VERSION}/bin/linux/${ARCH}/kube-proxy -O /usr/bin/kube-proxy
chmod +x /usr/bin/kube-proxy

创建证书 #

source ~/.k8s.env

# 创建kube-proxy访问kube-apiserver的证书
openssl genrsa -out ${CERTDIR}/kube-proxy.key 2048
openssl req -new -key ${CERTDIR}/kube-proxy.key \
    -out ${CERTDIR}/kube-proxy.csr \
    -subj "/CN=system:kube-proxy"
openssl x509 -req -days 36500 \
    -in ${CERTDIR}/kube-proxy.csr \
    -CA ${CERTDIR}/ca.crt \
    -CAkey ${CERTDIR}/ca.key \
    -CAcreateserial \
    -out ${CERTDIR}/kube-proxy.crt
rm -fr ${CERTDIR}/kube-proxy.csr

生成kubeconfig #

source ~/.k8s.env
KUBECONFIG=${K8SDIR}/kube-proxy.conf

## 设置集群参数
kubectl config set-cluster kubernetes \
  --certificate-authority=${CERTDIR}/ca.crt \
  --embed-certs=true \
  --server=https://${NODEIP}:6443 \
  --kubeconfig=${KUBECONFIG}

## 设置客户端认证参数
kubectl config set-credentials kube-proxy \
  --client-certificate=${CERTDIR}/kube-proxy.crt \
  --client-key=${CERTDIR}/kube-proxy.key \
  --embed-certs=true \
  --kubeconfig=${KUBECONFIG}

## 设置上下文参数
kubectl config set-context kubernetes \
  --cluster=kubernetes \
  --user=kube-proxy \
  --kubeconfig=${KUBECONFIG}

## 设置默认上下文
kubectl config use-context kubernetes --kubeconfig=${KUBECONFIG}

配置systemd的服务 #

cat > /etc/systemd/system/kube-proxy.service << EOF
[Unit]
Description=Kubernetes Proxy Service
After=network.target

[Service]
ExecStart=/usr/bin/kube-proxy --kubeconfig=/etc/kubernetes/kube-proxy.conf \
    --proxy-mode=ipvs

Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

启动kube-proxy #

systemctl daemon-reload && systemctl start kube-proxy