警告
本文最后更新于 2021-06-23 18:22,文中内容可能已过时。
一、安装kubelet 1
2
3
# 安装kubelet
for i in { 201..203} ; do scp /server/packages/kubernetes/server/bin/kube-proxy root@172.17.20.$i :/usr/local/bin/ ; done
for i in { 210..212} ; do scp /server/packages/kubernetes/server/bin/kube-proxy root@172.17.20.$i :/usr/local/bin/ ; done
二、配置kube-config master节点执行 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd /etc/kubernetes/
# 设置集群信息
kubectl config set-cluster kubernetes --kubeconfig= kube-proxy.conf --server= https://172.17.20.200:6443 --certificate-authority= /etc/kubernetes/pki/ca/ca.pem --embed-certs= true
# 设置用户信息
kubectl config set-credentials kube-proxy --kubeconfig= kube-proxy.conf --client-certificate= /etc/kubernetes/pki/kube-proxy.pem --client-key= /etc/kubernetes/pki/kube-proxy-key.pem --embed-certs= true
# 设置上下文
kubectl config set-context kube-proxy --kubeconfig= kube-proxy.conf --cluster= kubernetes --user= kube-proxy
# 设置默认上下文
kubectl config use-context kube-proxy --kubeconfig= kube-proxy.conf
# 分发到其他节点
for i in 202 203 210 211 212; do scp /etc/kubernetes/kube-proxy.conf 172.17.20.$i :/etc/kubernetes/ ; done
三、kube-proxy配置文件 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
cat > /etc/kubernetes/kube-proxy.yaml <<EOF
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
bindAddress: 0.0.0.0
healthzBindAddress: 0.0.0.0:10256
metricsBindAddress: 0.0.0.0:10249
bindAddressHardFail: true
enableProfiling: false
clusterCIDR: 10.244.0.0/16
hostnameOverride: 172.17.20.201
clientConnection:
kubeconfig: /etc/kubernetes/kube-proxy.conf
qps: 100
burst: 200
mode: "ipvs"
EOF
# 分发到其他机器
for i in 202 203 210 211 212; do scp /etc/kubernetes/kube-proxy.yaml 172.17.20.$i :/etc/kubernetes/ ; done
# 修改hostnameOverride信息
for i in 202 203 210 211 212; do ssh 172.17.20.$i 'sed -i "s#hostnameOverride.*#hostnameOverride: $(ip a s eth0 | grep -o 172\.17\.20.*/ | tr -d /)#" /etc/kubernetes/kube-proxy.yaml' ; done
参数说明:
bindAddress
: 监听地址
healthzBindAddress
: 健康检查服务的监听地址和端口,默认0.0.0.0:10256
metricsBindAddress
: metrics指标服务的监听地址和端口,默认127.0.0.1:10249
bindAddressHardFail
: 端口绑定失败视为严重错误,直接退出程序
enableProfiling
: 启用性能分析
clusterCIDR
: pod的ip范围
hostnameOverride
: 参数值必须与 kubelet 的值一致,否则 kube-proxy 启动后会找不到该 Node,从而不会创建任何 ipvs 规则
clientConnection
: kube-proxy客户端的配置
kubeconfig
: kubeconfig文件路径qps
: 每秒允许的查询数burst
: 与apiserver通信时的并发数mode
: 使用的网络代理模式,可选项userspace、iptables、ipvs
四、配置systemd启动脚本 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
cat > /etc/systemd/system/kube-proxy.service <<EOF
[Unit]
Description=Kubernetes Kube-Proxy Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target
[Service]
ExecStart=/usr/local/bin/kube-proxy \\
--config=/etc/kubernetes/kube-proxy.yaml \\
--logtostderr=false \\
--log-file=/var/log/kube-proxy.log \\
--v=2
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
# 分发到其他机器
for i in 202 203 210 211 212; do scp /etc/systemd/system/kube-proxy.service 172.17.20.$i :/etc/systemd/system/ ; done
五、启动服务 1
2
systemctl start kube-proxy
systemctl enable kube-proxy
六、查看状态 1
for i in 201 202 203 210 211 212; do echo -e "172.17.20. $i :" ; ssh 172.17.20.$i 'systemctl status kube-proxy|grep Active' ; done
08048-t8btv6tuquh.png