在上一篇文章里我们主要介绍worker组件kubelet的安装,这里我们开始介绍安装另一个worker组件kube-proxy,这里我们采用下载二进制binary制作linux systemd的方式安装。这个组件也在下载的kubenetes包里(1.15.1版本),在以前文章里已经下载过,这里就不再重复。另外kube-proxy与kube-apiserver交互我们开启ssl,所以请提前制作好相关ssl证书(可以参考以前文章里制作docker的证书),并copy到配置目录里。
copy二进制文件:
cp /opt/sw/kubernetes/install/kubernetes/server/bin/kube-proxy /usr/bin/
whereis kube-proxy
创建配置目录:
mkdir -p /etc/kubernetes/kube-proxy
touch /etc/kubernetes/kube-proxy/k8s-kube-proxy.conf
创建配置文件:
kube-proxy需要和kube-apiserver交互,这个交互可以利用kubeconfig文件做为配置文件。所以与kube-controller-manager一样,我们可以利用在kubectl安装过程中我们创建的kubeconfig文件。另外kube-proxy负责从kube-apiserver读取service和endpoints的信息,在host上创建iptable规则来实现k8s集群内部的负载均衡。对于kube-proxy的工作模式有iptable模式和ipvs模式,这里我们配置采用iptable模式。当然ipvs模式对于k8s内部service非常多的时候效率更高,对于实际应用具体选用那种模式请根据实际需求来定。对这块感兴趣的同学可以多了解一下iptable,ipvs(LVS负载均衡就是用的这个),以及在k8s里创建的相应规则,这里就不展开细节,扩展起来也可以写一个系列了。
cat > /etc/kubernetes/kube-proxy/k8s-kube-proxy.conf<<EOF
KUBE_CONFIG_FILE="--kubeconfig=/etc/kubernetes/kubeconfig/config"
KUBE_PROXY_ARGS=""
EOF
source /etc/kubernetes/kube-proxy/k8s-kube-proxy.conf
创建systemd unit文件:
touch /usr/lib/systemd/system/kube-proxy.service
cat > /usr/lib/systemd/system/kube-proxy.service<<EOF
[Unit]
Description=Kubernetes Proxy Service
After=network.target network-online.target docker.service
Wants=network-online.target docker.service
[Service]
Type=simple
EnvironmentFile=-/etc/kubernetes/kube-proxy/k8s-kube-proxy.conf
ExecStartPre=-source /etc/kubernetes/kube-proxy/k8s-kube-proxy.conf
ExecStart=/usr/bin/kube-proxy ${KUBE_CONFIG_FILE} ${KUBE_PROXY_ARGS}
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
cat /usr/lib/systemd/system/kube-proxy.service
reload服务并设置开机启动:
systemctl daemon-reload
systemctl enable kube-proxy
启动服务并检查状态:
systemctl start kube-proxy
systemctl status kube-proxy