kubespray最新版踩坑安装k8s

9 篇文章 1 订阅

下载最新发行版本,解压

 wget https://github.com/kubernetes-sigs/kubespray/archive/refs/tags/v2.18.1.tar.gz 
 tar -zxvf v2.18.1.tar.gz

kubernetes官网使用kubespray方式安装

kubespray Getting Started

先阅读下此页面kubespray readme

支持的docker版本
18.09, 19.03 和 20.10.推荐使用20.10.
cri-o版本支持 kube_version=1.20.x, crio_version=1.20

一些前置条件

  • 最低要求的版本为Kubernetes v1.21
  • Ansible版本需要v2.9.x, Jinja 2.11+ 需要python-netaddr 网络组件
  • 目标服务器必须可联网,或者使用离线模式
  • 目标服务器必须配置允许ipv4 forwarding
  • ansible 清单中的服务器必须已配置ssh key
  • 必须关闭防火墙
  • 使用root用户执行,如果为非root必须指定ansible_become参数,可以使用sudo提权执行
  • master节点内存至少1500MB node节点内存需要1024MB

而我们要做的就是安装python3.6,python36自带pip3

yum install -y python36

然后使用pip3安装ansible jinja 网络组件

pip3 install -r requirement.txt

然后还要在当前机器配置ssh-key对其它机器进行免密登入

ssh-keygen -t ed25519
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@10.210.13.19
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@10.210.13.17

安装完成后拷贝示例程序

cp -rfp inventory/sample inventory/mycluster

使用shell定义数组变量并赋值给对应脚本生成 hosts.yaml清单文件
contrib此目录下还有其它的的清单生成器,比如离线安装的,某些云的安装

declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}

我们查看生成的清单,我们稍微对它做个调整将本机改为local,正常情况下需要再来一台机器做为ansible主机
并将node3加入控制面,不然出来的是双主集群

all:
  hosts:
    node1:
      ansible_connection: local
      ip: 10.210.13.4
      access_ip: 10.210.13.4
    node2:
      ansible_host: 10.210.13.17
      ip: 10.210.13.17
      access_ip: 10.210.13.17
    node3:
      ansible_host: 10.210.13.19
      ip: 10.210.13.19
      access_ip: 10.210.13.19
  children:
    kube_control_plane:
      hosts:
        node1:
        node2:
        node3:
    kube_node:
      hosts:
        node1:
        node2:
        node3:
    etcd:
      hosts:
        node1:
        node2:
        node3:
    k8s_cluster:
      children:
        kube_control_plane:
        kube_node:
    calico_rr:
      hosts: {}

然后接着配置代理,修改all.yml中的

vi inventory/mycluster/group_vars/all/all.yml
http_proxy: "socks5://user:name@xxx:xxx"
https_proxy: "socks5://user:name@xxx:xxx"

修改etcd安装方式,是物理机上还是docker,我们改为docker,默认是host,不知道为什么使用host会报集群不健康

vim inventory/mycluster/group_vars/etcd.yml
etcd_deployment_type: docker

其它更多的配置大家可以自行查看这两个文档,比如,版本选择,网络的选择,子网的配置,证书的配置等等

cat inventory/mycluster/group_vars/all/all.yml
cat inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml

至于每个组件的配置可以参看各自role中的main.yml。
接着就可以启动安装脚本了

ansible-playbook -i inventory/mycluster/hosts.yaml  --become --become-user=root cluster.yml

在安装过程中遇到的一些坑总结如下:
1、etcd默认使用host模式安装完成后,一直提示集群不健康。最后也没有进行排查,直接还docker模式
2、安装过程中总是出现一种现象,同一个包,两个节点拉取到了但是其中有个节点拉取不到,也不会从其它节点拷贝,最后报错退出,然后执行手工scp拷贝后重启,虽然是幂等的,但是这个很头疼。
最后结果如下,由于我没改清单导致这个是双主集群

[root@istio-master kubespray-2.18.1]# kubectl get nodes
NAME           STATUS   ROLES                  AGE     VERSION
istio-master   Ready    control-plane,master   3h35m   v1.22.8
istio-node1    Ready    control-plane,master   3h34m   v1.22.8
istio-node2    Ready    <none>                 3h33m   v1.22.8

后续:
kubespray提供的playbook,更多详情请查看官网。

  • cluster.yml 用于集群创建
  • upgrade-cluster.yml 用于集群更新
  • scale.yml 用于集群扩展
  • reset.yml 用于集群重置
  • remove-node.yml 用于移除节点
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值