Skip to content

使用kubeadm部署一个高可用kubernetes集群,支持离线,单master。

License

Notifications You must be signed in to change notification settings

ygqygq2/kubeadm-shell

Repository files navigation

1. 介绍

仓库地址:https://github.com/ygqygq2/kubeadm-shell

脚本实现功能:

  • 新建多master节点(至少3台,奇数)的高可用kubernetes集群;
  • 新建单master节点的kubernetes;
  • 添加work节点;
  • 支持离线安装,前提是在最小化安装的系统下执行/bin/bash k8s_offline_package.sh准备安装包;

离线安装说明

  1. 离线安装已支持 docker 安装 kubernetes;
  2. 离线安装支持 containerd 安装 kubernetes;
  3. 因 crio 没有镜像管理功能,不支持离线安装;

2. 使用说明

  • 系统:CentOS/Ubuntu(要求支持安装Kubernetes)
  • 运行:请在 root 用户下使用/bin/bash运行

重要 使用时请将整个仓库文件一起打包上传至服务器。

2.1 高可用集群安装

提前关闭selinux(需要重启生效),master节点设置hostname,并添加hosts。

hosts设置

config.sh脚本修改,有需要添加更多master节点,添加serverX和修改NAMES HOSTS

##############################################################
## 集群安装和证书更新相关共同需要的参数设置
# 主机名:IP,需要执行脚本前设置
server0="master1:10.37.129.11"
server1="master2:10.37.129.12"
server2="master3:10.37.129.13"
##############################################################
## 集群安装相关参数设置
# 是否离线安装集群,true为离线安装
INSTALL_OFFLINE="false"
# 是否安装集群,false为添加节点,true为安装集群
INSTALL_CLUSTER="true"
# 是否安装Keepalived+HAproxy
INSTALL_SLB="true"
# 是否脚本生成CA证书
GENERATE_CA="false"
# 定义Kubernetes信息
KUBEVERSION="v1.17.0"
# 定义安装 Container runtimes: docker/containerd/crio
INSTALL_CR="docker"
# docker 版本, INSTALL_CR="docker"时设置
DOCKERVERSION="19.03.13"
#
KUBERNETES_CNI_VERSION=""
IMAGE_REPOSITORY="registry.cn-hangzhou.aliyuncs.com/google_containers"
# k8s master VIP(单节点为节点IP)
k8s_master_vip="10.37.129.10"
# K8S网段
podSubnet="10.244.0.0/16"
# 可获取kubeadm join命令的节点IP
k8s_join_ip=$k8s_master_vip
##############################################################

注意

  1. 在第一台master节点上执行此脚本;
  2. 脚本初始化时添加ssh key登录其它节点,可能需要用户按提示输入ssh密码;
  3. 脚本执行,需要注意脚本运行过程提示或报错;

enter description here

enter description here

执行成功。 enter description here

2.2 单master kubernetes安装

提前关闭selinux(需要重启生效),master节点设置hostname,并添加hosts。config.sh配置:

##############################################################
## 集群安装和证书更新相关共同需要的参数设置
# 主机名:IP,需要执行脚本前设置
server0="master1:10.37.129.11"
#server1="master2:10.37.129.12"
#server2="master3:10.37.129.13"
##############################################################
## 集群安装相关参数设置
# 是否离线安装集群,true为离线安装
INSTALL_OFFLINE="false"
# 是否安装集群,false为添加节点,true为安装集群
INSTALL_CLUSTER="true"
# 是否安装Keepalived+HAproxy
INSTALL_SLB="false"
# 是否脚本生成CA证书
GENERATE_CA="false"
# 定义Kubernetes信息
KUBEVERSION="v1.17.0"
# 定义安装 Container runtimes: docker/containerd/crio
INSTALL_CR="docker"
# docker 版本, INSTALL_CR="docker"时设置
DOCKERVERSION="19.03.13"
#
KUBERNETES_CNI_VERSION=""
IMAGE_REPOSITORY="registry.cn-hangzhou.aliyuncs.com/google_containers"
# k8s master VIP(单节点为节点IP)
k8s_master_vip="10.37.129.11"
# K8S网段
podSubnet="10.244.0.0/16"
# 可获取kubeadm join命令的节点IP
k8s_join_ip=$k8s_master_vip
##############################################################

其它说明同上。

2.3 添加work节点至kubernetes集群

提前关闭selinux(需要重启生效),work节点设置hostname,并添加hosts(最好所有kubernetes节点统一相同hosts内容)。

关键地方设置,脚本使用ssh跳至master节点执行kubeadm token create --print-join-command获取添加节点命令,所以可修改k8s_master_vipk8s_join_ip为能执行此命令的节点IP即可。

##############################################################
## 集群安装和证书更新相关共同需要的参数设置
# 主机名:IP,需要执行脚本前设置
server0="master1:10.37.129.11"
server1="master2:10.37.129.12"
server2="master3:10.37.129.13"
##############################################################
## 集群安装相关参数设置
# 是否离线安装集群,true为离线安装
INSTALL_OFFLINE="false"
# 是否安装集群,false为添加节点,true为安装集群
INSTALL_CLUSTER="false"
# 是否安装Keepalived+HAproxy
INSTALL_SLB="false"
# 是否脚本生成CA证书
GENERATE_CA="false"
# 定义Kubernetes信息
KUBEVERSION="v1.17.0"
# 定义安装 Container runtimes: docker/containerd/crio
INSTALL_CR="docker"
# docker 版本, INSTALL_CR="docker"时设置
DOCKERVERSION="19.03.13"
#
KUBERNETES_CNI_VERSION=""
IMAGE_REPOSITORY="registry.cn-hangzhou.aliyuncs.com/google_containers"
# k8s master VIP(单节点为节点IP)
k8s_master_vip="10.37.129.10"
# K8S网段
podSubnet="10.244.0.0/16"
# 可获取kubeadm join命令的节点IP
k8s_join_ip=$k8s_master_vip
##############################################################

2.4 离线安装

前提:在最小化的CentOS7下,能正常解析和上网。

修改config.sh配置,INSTALL_OFFLINE="true"

# 是否离线安装集群,true为离线安装
INSTALL_OFFLINE="true"

执行脚本k8s_offline_package.sh,成功后整个kubeadm-shell目录即为一个离线安装包。

3. 失败的节点kubeadm reset

安装过程中,如有节点失败,可使用kubeadm reset重置后,重新安装。

注意 此命令非常危险,一定要确认是否在正确节点执行。

kubeadm reset

About

使用kubeadm部署一个高可用kubernetes集群,支持离线,单master。

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages