使用 kubeasy 快速部署任意版本 K8S

环境准备

主机名 IP地址 系统
VIP 172.16.114.10 N/A
vm114011 172.16.114.11 Ubuntu 20.04
vm114012 172.16.114.12 Ubuntu 20.04
vm1140113 172.16.114.13 Ubuntu 20.04
vm114014 172.16.114.14 Ubuntu 20.04

创建虚拟机,设置静态IP的操作这里忽略,仅记录一下相关的命令

vm114011 主机为例

# 设置主机名
hostnamectl set-hostname vm114011

# 设置静态IP
cat /etc/netplan/00-installer-config.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      optional: true
      dhcp4: no
      addresses:
        - 172.16.114.11/16
      gateway4: 172.16.1.1
      nameservers:
        addresses: 
          - 172.16.1.1

登录 vm114011 主机下载项目代码

分支为 K8S 版本分支,唯一不同就是网络部署文件上的差异,所以如果需要部署 1.14.10 的 K8S,请使用 git clone -b v1.14 以此类推

需要注意 部署集群会有两种方式下载二进制文件或者软件包,一种是从官网下载,比如github或者google官方的站点, 另外一种是通过Nexus的方式下载,如果网络不稳定导致下载不了软件,可以在项目的 release 页面下载离线包。

这个项目的离线不是完全离线,仅仅只是下载了部署K8S所需要的软件包和二进制文件,所以如果是完全的内网环境,还需要配置好内网的YUM仓库、APT仓库、PIP仓库。

# 网络畅通
apt-get update
apt-get install git make -y
git clone -b v1.23 https://github.com/buxiaomo/kubeasy.git /usr/local/src/kubeasy

# 网络条件不好或者内网
apt-get update
apt-get install git make -y
wget https://github.com/buxiaomo/kubeasy/releases/download/v1.23.10/kubeasy-offline.tar.gz -O /usr/local/src/kubeasy-offline.tar.gz
tar -zvxf /usr/local/src/kubeasy-offline.tar.gz -C /usr/local/src
git config --global --add safe.directory /usr/local/src/kubeasy
cd /usr/local/src/kubeasy
git checkout v1.23

安装项目依赖

cd /usr/local/src/kubeasy
make runtime

创建参数配置文件

可以到 /usr/local/src/kubeasy/group_vars 目录查看 all.ymlkubernetes.yml 文件,根据需要,修改各个组件的启动参数,这里我使用默认。

cd /usr/local/src/kubeasy
make -C group_vars/

创建资产文件

资产文件根据 Makefile 中的PROJECT_NAMEPROJECT_ENV 参数读取, 默认是 kubeasydev, 所以文件名就是 inventory/kubeasy-dev.ini 这里主要用来区分多集群的情况, 文件模版如下, 详细参数可以参考 inventory/template 目录下的文件。

# cat inventory/${PROJECT_NAME}-${PROJECT_ENV}.ini
[master]
172.16.114.11
172.16.114.12
172.16.114.13

[worker]
172.16.114.14

[kubernetes:children]
master
worker

# ha config
# slb is software load balancing, will install harpoxy and keepalived on master node
# clb is cloud load balancing, will use cloud load balancing
[kubernetes:vars]
ha={"type": "slb", "vip": "172.16.114.10", "mask": 16 }

[all:vars]
ansible_python_interpreter=/usr/bin/python3
ansible_ssh_port=22
ansible_ssh_user=root
# ansible_ssh_pass=root
# ansible_sudo_user=root
# ansible_sudo_pass=root

部署集群

前面说过,这个项目有两种下载软件包的方式,一个是官网一个是nexus,这里我分开记录命令,根据你的情况执行

# 离线部署
## 会安装docker并且部署作者写的轻量 nexus 和 registry 容器,可以通过 docker ps 查看
make offline
## 上传软件包
./scripts/nexus.py upload --kubernetes 1.23.10 --url http://172.16.114.11:8081 --repository kubeasy
## 部署集群
make deploy \
DOWNLOAD_WAY=nexus \
NEXUS_DOMAIN_NAME=http://172.16.114.11:8081 \
NEXUS_REPOSITORY=kubeasy

# 网络畅通
make deploy

查看集群状态

root@vm114011:~# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS    MESSAGE                         ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-0               Healthy   {"health":"true","reason":""}
etcd-1               Healthy   {"health":"true","reason":""}
etcd-2               Healthy   {"health":"true","reason":""}


root@vm114011:~# kubectl get no -o wide
NAME       STATUS   ROLES                  AGE     VERSION    INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
vm114011   Ready    control-plane,master   9m55s   v1.23.10   172.16.114.11   <none>        Ubuntu 20.04.5 LTS   5.4.0-125-generic   docker://20.10.17
vm114012   Ready    control-plane,master   9m55s   v1.23.10   172.16.114.12   <none>        Ubuntu 20.04.5 LTS   5.4.0-125-generic   docker://20.10.17
vm114013   Ready    control-plane,master   9m55s   v1.23.10   172.16.114.13   <none>        Ubuntu 20.04.5 LTS   5.4.0-125-generic   docker://20.10.17
vm114014   Ready    worker                 8m19s   v1.23.10   172.16.114.14   <none>        Ubuntu 20.04.5 LTS   5.4.0-125-generic   docker://20.10.17


root@vm114011:~# kubectl get po -A -o wide
NAMESPACE     NAME                             READY   STATUS    RESTARTS   AGE     IP              NODE       NOMINATED NODE   READINESS GATES
kube-system   coredns-7b86776fcf-ghrl9         1/1     Running   0          7m41s   10.244.3.2      vm114014   <none>           <none>
kube-system   kube-flannel-ds-fvshg            1/1     Running   0          7m44s   172.16.114.14   vm114014   <none>           <none>
kube-system   kube-flannel-ds-np6fd            1/1     Running   0          7m44s   172.16.114.12   vm114012   <none>           <none>
kube-system   kube-flannel-ds-r784f            1/1     Running   0          7m44s   172.16.114.11   vm114011   <none>           <none>
kube-system   kube-flannel-ds-t6jzd            1/1     Running   0          7m44s   172.16.114.13   vm114013   <none>           <none>
kube-system   metrics-server-c5d46dd4d-7jj2j   1/1     Running   0          7m42s   10.244.3.3      vm114014   <none>           <none>
kube-system   metrics-server-c5d46dd4d-zn2kt   0/1     Pending   0          7m42s   <none>          <none>     <none>           <none>

你可能感兴趣的:(linux,运维,kubernetes,kubelet,docker)