kubespray部署Kubernetes高可用集群

前言

kubespray基于ansible-playbook完成集群部署,可以自动完成操作系统层面配置,利用了kubeadm作为集群管理工具,这里介绍一下是如何使用的。

实验环境

本机mac      部署节点
192.168.0.61   k8s-master
192.168.0.62   k8s-master
192.168.0.63   k8s-node

一、环境准备

1、安装docker

#需要在每个节点上安装docker
apt install docker.io

2、配置docker cgroupdriver为systemd

vi /etc/docker/daemon.conf
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
systemctl daemon-reload
systemctl restart docker

以下操作均在部署节点上执行

二、安装kubespray

1、下载镜像

docker pull quay.io/kubespray/kubespray:v2.16.0

2、下载源码

git clone https://github.com/kubernetes-sigs/kubespray.git

3、设置免密

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.61
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.62
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.63

三、部署高可用集群

1、启动kubespray镜像

cd kubespray
docker run --net host --rm -it --name kubespray --mount type=bind,source="$(pwd)"/inventory/sample,dst=/inventory --mount type=bind,source="${HOME}"/.ssh/id_rsa,dst=/root/.ssh/id_rsa   quay.io/kubespray/kubespray:v2.16.0 bash

2、配置主机列表

cp -r inventory/sample inventory/mycluster
declare -a IPS=(192.168.0.61 192.168.0.62 192.168.0.63)
CONFIG_FILE=inventory/mycluster/hosts.yml python3 contrib/inventory_builder/inventory.py ${IPS[@]}

在这里插入图片描述

3、查看集群部署配置

all:
  hosts:
    node1:
      ansible_host: 192.168.0.61
      ip: 192.168.0.61
      access_ip: 192.168.0.61
    node2:
      ansible_host: 192.168.0.62
      ip: 192.168.0.62
      access_ip: 192.168.0.62
    node3:
      ansible_host: 192.168.0.63
      ip: 192.168.0.63
      access_ip: 192.168.0.63
  children:
  #控制平面节点配置
    kube_control_plane:
      hosts:
        node1:
        node2:
   #node节点节点配置
    kube_node:
      hosts:
        node3:
    #etcd节点配置
    etcd:
      hosts:
        node1:
        node2:
        node3:
    k8s_cluster:
      children:
        kube_control_plane:
        kube_node:
    calico_rr:
      hosts: {}

4、改变镜像源

cat > inventory/mycluster/group_vars/k8s_cluster/vars.yml << EOF
gcr_image_repo: "registry.aliyuncs.com/google_containers"
kube_image_repo: "registry.aliyuncs.com/google_containers"
etcd_download_url: "https://ghproxy.com/https://github.com/coreos/etcd/releases/download/{{ etcd_version }}/etcd-{{ etcd_version }}-linux-{{ image_arch }}.tar.gz"
cni_download_url: "https://ghproxy.com/https://github.com/containernetworking/plugins/releases/download/{{ cni_version }}/cni-plugins-linux-{{ image_arch }}-{{ cni_version }}.tgz"
calicoctl_download_url: "https://ghproxy.com/https://github.com/projectcalico/calicoctl/releases/download/{{ calico_ctl_version }}/calicoctl-linux-{{ image_arch }}"
calico_crds_download_url: "https://ghproxy.com/https://github.com/projectcalico/calico/archive/{{ calico_version }}.tar.gz"
crictl_download_url: "https://ghproxy.com/https://github.com/kubernetes-sigs/cri-tools/releases/download/{{ crictl_version }}/crictl-{{ crictl_version }}-{{ ansible_system | lower }}-{{ image_arch }}.tar.gz"
nodelocaldns_image_repo: "cncamp/k8s-dns-node-cache"
dnsautoscaler_image_repo: "cncamp/cluster-proportional-autoscaler-amd64"
EOF

5、部署集群

#如果有镜像拉取超时,可以多执行几次
ansible-playbook -i inventory/mycluster/hosts.yml cluster.yml -b -v \
 --private-key=~/.ssh/id_rsa

在这里插入图片描述
部署成功

6、登陆节点查看集群状态

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平凡似水的人生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值