4-1 kubeasz 安装 kubernetes 集群

本文介绍了如何使用 kubeasz 工具安装和管理 kubernetes 1.25.x 版本的集群。kubeasz 是一个基于二进制方式部署和 Ansible 自动化的工具,支持多种操作系统和容器运行时。在安装前,需要关闭防火墙、配置主机名解析和 SSH 免密登录。安装过程涉及环境初始化、etcd、容器运行时、控制面和工作节点组件、网络组件的安装。此外,还涵盖了集群升级、扩容、备份恢复以及 dashboard 使用等操作。
摘要由CSDN通过智能技术生成

更新时间:2023年2月

安装 kubernetes 版本:kubenetes 1.25.x

根据 kubernetes 版本,使用 kubeasz 版本为:kubeasz 3.4.3

简介

kubernetes 安装工具 CNCF 认证:Cloud Native Landscape (cncf.io)

kubernetes 各版本安装工具认证:cncf/k8s-conformance

kubernetes 传统安装方式较复杂,各个公司或个人会推出一些简便的安装工具,对传统的二进制安装方式或者 kubeadm 安装方式进行封装。CNCF 针对不同版本的 kubernetes,会对各个工具进行一致性测试,通过后对该安装工具颁发 CNCF 认证。以 kubernetes 1.25.x 为例,通过认证的有 Kubeasz、Kubespray 等等。本文将使用 kubeasz 安装 kubenetes 1.25.x 集群

kubeasz 官方 github 地址: easzlab/kubeasz

kubeasz 是一个部署 k8s 集群的工具,主要特点是基于二进制方式部署利用 ansible-playbook 实现自动化。kubeasz 可以同时创建、管理多个集群

+----------------+               +-----------------+
|ezctl 1.1.1.1   |               |cluster-aio:     |
+--+---+---+-----+               |                 |
   |   |   |                     |master 4.4.4.4   |
   |   |   +-------------------->+etcd   4.4.4.4   |
   |   |                         |node   4.4.4.4   |
   |   +--------------+          +-----------------+
   |                  |
   v                  v
+--+------------+ +---+----------------------------+
| cluster-1:    | | cluster-2:                     |
|               | |                                |
| master 2.2.2.1| | master 3.3.3.1/3.3.3.2         |
| etcd   2.2.2.2| | etcd   3.3.3.1/3.3.3.2/3.3.3.3 |
| node   2.2.2.3| | node   3.3.3.4/3.3.3.5/3.3.3.6 |
+---------------+ +--------------------------------+

支持的环境

支持环境随版本变更略有不同,请参考:easzlab/kubeasz

**集群版本:**kubernetes v1.22,v1.23,v1.24,v1.25,v1.26

**操作系统:**CentOS/RedHat 7/8,Debian 9/10,Ubuntu 16.04/18.04/20.04/22.04

运行时:containerd v1.6.x,docker 20.10.x (k8s < 1.24)

网络:calicociliumflannelkube-ovnkube-router

版本选择

kubeasz 会维护近 4~5 个 kubernetes 版本的安装

推荐使用版本对照表

Kubernetes version kubeasz version
1.22 3.1.1
1.23 3.2.0
1.24 3.3.1
1.25 3.4.3
1.26 3.5.0

安装 kubernetes 版本:kubenetes 1.25.x

根据 kubernetes 版本,使用 kubeasz 版本为:kubeasz 3.4.3

准备

主机列表

主机名 IP 配置 角色 安装服务 描述
kubeasz-deploy.skynemo.cn 192.168.111.181 1C1G 部署节点 kubeasz 3.4.2 用于运行 ansible/ezctl 命令
etcd-1.skynemo.cn 192.168.111.182 etcd 数据库节点 etcd 根据 Raft 选举算法,etcd 集群需要奇数个节点
etcd-2.skynemo.cn 192.168.111.183 etcd 数据库节点 etcd
etcd-3.skynemo.cn 192.168.111.184 etcd 数据库节点 etcd
kube-cp-1.skynemo.cn 192.168.111.185 控制面节点 apiserver
kube-controller-manager
kube-scheduller
高可用集群至少 2 个控制面节点
kube-cp-2.skynemo.cn 192.168.111.186 控制面节点 apiserver
kube-controller-manager
kube-scheduller
kube-node-1.skynemo.cn 192.168.111.187 工作节点 kubelet
kube-proxy
containerd
运行应用负载的节点
kube-node-2.skynemo.cn 192.168.111.188 工作节点 kubelet
kube-proxy
containerd

注意:默认配置下容器运行时和 kubelet 会占用 /var 的磁盘空间,如果磁盘分区特殊,可以设置 config.yml 中的容器运行时和 kubelet 数据目录:CONTAINERD_STORAGE_DIR DOCKER_STORAGE_DIR KUBELET_ROOT_DIR

拓扑结构

在这里插入图片描述

其他准备工作

关闭防火墙

所有节点关闭防火墙和 SELinux

# 关闭防火墙和 SELinux
$ systemctl disable --now  firewalld

# 关闭 SELinux
$ setenforce 0 && sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
配置主机名解析
$ cat >> /etc/hosts << EOF
192.168.111.181    kubeasz-deploy.skynemo.cn
192.168.111.182    etcd-1.skynemo.cn
192.168.111.183    etcd-2.skynemo.cn
192.168.111.184    etcd-3.skynemo.cn
192.168.111.185    kube-cp-1.skynemo.cn
192.168.111.186    kube-cp-2.skynemo.cn
192.168.111.187    kube-node-1.skynemo.cn
192.168.111.188    kube-node-2.skynemo.cn
EOF
配置 ssh 免密登陆

需要配置从部署节点可以用 root 用户 ssh 免密登录到所有节点,并设置 python 链接

准备

# 安装 sshpass,方便拷贝 ssh 秘钥
dnf install -y sshpass

# 生成 SSH 密钥
[ -f /root/.ssh/id_rsa ] || ssh-keygen -f /root/.ssh/id_rsa  -P ''


创建脚本

$ vim ./ssh-copy-key.sh
#!/bin/bash

# 设置节点 IP 列表
export ips=(192.168.111.181 192.168.111.182 192.168.111.183 192.168.111.184 192.168.111.185 192.168.111.186 192.168.111.187 192.168.111.188)

# 设置连接到节点的 SSH 登录密码
export SSHPASS=520123

for i in ${ips[*]}; do

    echo "######  开始设置节点 ${i} ######"
    
    # 拷贝秘钥到节点
    sshpass -e ssh-copy-id  -o StrictHostKeyChecking=no  root@${i}
    
    # 安装 python3
    sshpass -e ssh -o StrictHostKeyChecking=no root@${i} 'dnf -y install python3' &> /dev/null

    # 设置 python 链接
    sshpass -e ssh -o StrictHostKeyChecking=no root@${i} 'ln -s /usr/bin/python3 /usr/bin/python' &> /dev/null
    
    echo "######  节点 ${i} 设置完成 ######"
    
done

执行脚本完成设置

$ bash ./ssh-copy-key.sh
配置时区和时间同步

设置时区

$ timedatectl set-timezone Asia/Shanghai

设置时间同步

本文使用 kubeasz 安装时进行配置(参考:kubeasz/chrony.md ),也可以手动设置

kubeasz 的使用

根据 kubernetes 版本,使用 kubeasz 版本为:kubeasz 3.4.3

kubeasz 的组成可以分为两个部分

  • ezdown:一个简单的下载脚本,用于下载 kubeasz 项目工具、kubernetes 相关的二进制文件及离线镜像

  • ezctl:使用 shell 脚本封装 ansible-playbook 执行命令,主要用于创建和管理多个 kubernetes 集群

安装使用 kubeasz

参考文档:kubeasz/00-planning_and_overall_intro.md at master

kubeasz 的 github 版本发布地址:Releases · easzlab/kubeasz (github.com)

下载 ezdown 脚本
# 下载 ezdown
$ export release=3.4.3
$ wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown

# 授予执行权限
$ chmod +x ./ezdown
下载相关镜像和工具
# 指定下载的 kubernetes 版本为 1.25.4
$ ./ezdown -D -k v1.25.4
容器化运行 kubeasz
$ ./ezdown -S
使用 ezctl

配置命令 alias ,方便执行容器中的 ezctl 命令

$ echo "alias dk='docker exec -it kubeasz'" >> /root/.bashrc
$ source /root/.bashrc

检查是否正常使用 ezctl

$ dk ezctl --help

ezdown 脚本使用方法

帮助文档
# 查看帮助文档
$ ./ezdown 
Usage: ezdown [options] [args]
  option:
    -C         stop&clean all local containers
    -D         download default binaries/images into "/etc/kubeasz"
    -P         download system packages for offline installing
    -R         download Registry(harbor) offline installer
    -S         start kubeasz in a container
    -X         download extra images
    -a <arc>   set architecture, default auto-detected by (uname -m)
    -d <ver>   set docker-ce version, default "20.10.18"
    -e <ver>   set kubeasz-ext-bin version, default "1.6.2"
    -k <ver>   set kubeasz-k8s-bin version, default "v1.25.4"
    -m <str>   set docker registry mirrors, default "CN"(used in Mainland,China)
    -p <ver>   set kubeasz-sys-pkg version, default "0.5.2"
    -z <ver>   set kubeasz version, default "3.4.2"
常用的变量和参数
# 可以直接在脚本中查看支持的变量
$ vim ./ezdown

常用的变量如下

# BASE : 用于指定默认的下载路径(包括所有的镜像和二进制文件),默认为 /etc/kubeasz
BASE="/etc/kubeasz"

######   可以直接在命令行修改环境变量  #######
# DOCKER_VER : 在部署节点安装 docker 的版本,一般无需修改
DOCKER_VER=20.10.18

# KUBEASZ_VER : 使用的 kubeasz 版本,会使用 docker 进行下载构建
# dockerfile 下载的地址为:https://github.com/easzlab/dockerfile-kubeasz
KUBEASZ_VER=3.4.2

# K8S_BIN_VER : 要下载的 kubernetes 版本,,会使用 docker 进行下载构建
# dockerfile 下载的地址为:https://github.com/easzlab/dockerfile-kubeasz-k8s-bin
K8S_BIN_VER=v1.25.4

# EXT_BIN_VER : 指定 helm、containerd、cilium、et
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值