具体步骤如下:
以下步骤在其中一个 master 上操作即可,
1、参数配置
export VIP=192.168.0.110
export INTERFACE=ens33
export KVVERSION=v0.8.7
- VIP 是虚拟IP地址,和主机同一个网段,且未被占用。
- INTERFACE 是你当前主机的网络接口名称,通过 ip a 命令来找到它。
- KVVERSION 为需要部署的kube-vip的版本号,可以点击https://github.com/kube-vip/kube-vip/releases来获取。
2、获取Kube-Vip镜像
对于 containerd,在线拉取镜像并运行以下命令:
alias kube-vip="ctr image pull ghcr.io/kube-vip/kube-vip:$KVVERSION; ctr run --rm --net-host ghcr.io/kube-vip/kube-vip:$KVVERSION vip /kube-vip"
对于 Docker,在线拉取镜像并运行以下命令:
alias kube-vip="docker run --network host --rm ghcr.io/kube-vip/kube-vip:$KVVERSION"
执行以上的其中一种方式时,会去拉取镜像,这个过程会很慢。
或者离线下载后导入,比如:
# 在有外网的机器上拉取并打成tar包
docker pull ghcr.io/kube-vip/kube-vip:v0.8.7
docker save -o kube-vip-v0-8-7.tar ghcr.io/kube-vip/kube-vip:v0.8.7
# containerd方式导入并运行
ctr images import kube-vip-v0-8-7.tar
ctr run --rm --net-host ghcr.io/kube-vip/kube-vip:v0.8.7 vip /kube-vip
# docker方式导入并运行
docker load -i kube-vip-v0-8-7.tar
docker run --network host --rm ghcr.io/kube-vip/kube-vip:v0.8.7
3、获取并执行 rabc 的yaml文件
只需在某个 master 节点上运行一次就行。
# 获取文件
curl -o rbac.yaml https://kube-vip.io/manifests/rbac.yaml
# 执行文件
kubectl apply -f rbac.yaml
4、启动Kube-Vip
1、生成 kube-vip.yaml 的yaml文件
kube-vip manifest daemonset \
--interface $INTERFACE \
--address $VIP \
--inCluster \
--taint \
--controlplane \
--services \
--bgp \
--localAS 65000 \
--bgpRouterID 192.168.0.2 \
--bgppeers 192.168.0.10:65000::false,192.168.0.11:65000::false | tee kube-vip-ds.yaml
- bgpRouterID 填写当前 master 的ip
- bgppeers 填写其余 master 的ip
2、运行 kube-vip-.yaml 文件
kubectl apply -f kube-vip-ds.yaml
重要建议:执行yaml文件过程中,会在各个 master 节点上拉取 ghcr.io/kube-vip/kube-vip::$KVVERSION 镜像,所以建议先将该镜像传到自己的私有镜像仓库上,然后修改 kube-vip-ds.yaml 中的镜像地址,再去 apply 该yaml文件会好一点。
3、查看kube-vip运行状况
kubectl get pods -A | grep kube-vip-ds
5、测试 Vip 是否可用
telnet 192.168.0.110 6443
显示
Trying 192.168.0.110...
Connected to 192.168.0.110.
Escape character is '^]'.
即为成功。
.
.
.
.
文章参考:
1、https://kube-vip.io/docs/installation/daemonset/
2、https://blog.csdn.net/catoop/article/details/122061611
3、https://www.luyouli.com/?p=694
4、https://www.cnblogs.com/-k8s/p/17991520