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

环境准备

主机名IP地址系统
VIP172.16.114.10N/A
vm114011172.16.114.11Ubuntu 20.04
vm114012172.16.114.12Ubuntu 20.04
vm1140113172.16.114.13Ubuntu 20.04
vm114014172.16.114.14Ubuntu 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>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
使用k8s部署OpenStack是一种越来越受关注的部署方式,它能够将OpenStack容器化并在Kubernetes集群上管理。引用中提到了Ocata版本的OpenStack已经成功部署Kubernetes集群上,而引用则介绍了k8s-openstack这种部署方式所依赖的工具和环境变量设置。 具体来说,使用k8s部署OpenStack需要以下步骤: 1. 首先,克隆kolla-kubernetes项目的代码库,可以使用命令`git clone http://github.com/openstack/kolla-kubernetes`来获取代码库。 2. 在开始部署之前,确保你已经设置了所需的环境变量,包括标准OpenStack环境变量(OS_*)以及其他可能需要的变量。 3. 接下来,可以使用kubeadm和ansible来调用相应的playbook来部署OpenStack。kubeadm是用于初始化Kubernetes集群的工具,而ansible是一个自动化配置管理工具。 4. 在执行ansible playbook之前,确保你已经正确配置了ansible,并且可以通过ansible来管理目标主机。 5. 运行ansible playbook来执行部署OpenStack的操作。根据你的需求,你可能需要修改相应的配置文件或参数。 使用k8s部署OpenStack的好处在于它能够更好地利用Kubernetes的弹性、可扩展性和高可用性特性,提供更灵活和可靠的OpenStack部署方式。然而,需要注意的是,引用中提到目前Kolla-kubernetes项目仍然不具备生产环境部署条件,并且社区目前也仅支持AIO的开发实验性质的部署。随着Kubernetes的兴趣增加,kolla-kubernetes项目的重视程度可能会提高,并且未来通过Kubernetes部署OpenStack容器云有望成为主流方向。 总结起来,使用k8s部署OpenStack需要克隆kolla-kubernetes项目的代码库,设置必要的环境变量,使用kubeadm和ansible来执行相应的playbook,最后进行部署操作。这种部署方式能够利用Kubernetes的特性提供更灵活和可靠的OpenStack部署方式。然而,需要注意目前kolla-kubernetes项目仍处于开发实验性质,并且在生产环境中使用时需谨慎。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值