kubernetes安装
kubernetes安装包可以从金蝶云之家应用“小C”中下载,安装前请先下载安装包到一台执行机上。
# 1 通用环境检查
**请您严格按照如下步骤进行环境检查(疏忽任何一项都会导致最终环境异常):**
- **公有云平台环境下:**
- [ ] 编辑"k8s主机涉及到的安全组",使其**放行"k8s主机ip地址段"及"如下两个ip地址段"的全部协议的出和入(如私有云有安全组的概念,也需要操作)**
- [ ] 操作安全组时,需要分别把TCP和UDP都放行
![image1.webp](/download/0100328fac87d77441daaed9cfc2633ed51f.webp)
> 如上两个网段的配置是在安装包里的config配置文件里进行配置的,后文会对这两个网段进行说明
上面两个网段配置的什么网段,安全组里就放行所配置的网段,图中只是举例
- **私有云平台环境下:**
- [ ] **如私有云有安全组的概念和相关限制,也需要参考公有云平台下的安全组操作来进行**
- **OpenStack环境下:关闭网卡(port)安全检查**
> OpenStack的网卡默认会丢掉非本网卡ip地址的包,k8s集群内部会用到一些IP地址,有可能导致网卡无法转发
找到k8s主机的ID,然后在OpenStack主机上操作如下指令:
`openstack port set --no-security-group HOST_ID`
`openstack port set --disable-port-security HOST_ID`
- **涉及到的k8s主机的主机名称要有意义,一定不能为初始的“localhost”**
`hostnamectl set-hostname YOUR_HOSTNAME`
- 如果**安装过程或者卸载过程提示红色警示信息,程序未中断即是正常运行**
# 2 安装k8s集群
### **配置文件说明**
> 配置文件全名为"config"
将下载好的安装包,通过tar命令解压,安装包目录是"k8s-install"
config文件格式是ansible的hosts文件的标准格式
- **必选配置**
- [ ] K8S_MASTER
k8s集群的master节点;默认的安装包考虑的场景是比较简单的,master节点上会部署etcd数据库,如果你需要一个高可用集群,可以参照下后文配置示例
> `172.18.7.145 ansible_ssh_user=kduser ansible_ssh_pass="KD@2020#cquat1222" ansible_become_pass="KD@2020#cquat1222" ansible_port="2222"`
如上是一个示例:`ansible_ssh_user`可以是root用户,也可以是普通用户,如果是普通用户需要确定该用户具有sudo权限
- [ ] K8S_NODE
k8s集群的node节点;只是用来做工作节点的服务器
- [ ] K8S_VIP
这个配置默认是用"#"符号注释掉的,不会生效;如果不需要高可用场景,一定要把它用"#"符号注释掉
只有在我们需要高可用的时候,才将它取消掉注释,并且填上,我们提前为它规划好的VIP(虚拟IP地址)
> 高可用说明:
这里的高可用指的是我们的master节点以及etcd数据库的高可用,大部分场景下我们需要高可用的时候,只需要三台master节点就可以搭建一个健壮程度很高的集群,这种场景下最多可以允许一个master节点彻底宕机,在一个节点宕机的情况下,仍然能保证集群的可用性
那么也就是,在我们需要一个高可用集群的时候,正确的配置方法应该是:将K8S_VIP注释取消,并且填上我们提前为它规划好的VIP(虚拟IP地址);然后在K8S_MASTER下配置**三个节点**
- [ ] NETWORK_INTERFACE
要安装k8s集群的这些服务器的网卡接口,默认值是"eth0",配置时还需要根据不同的值具体修改下
- [ ] **POD_CIDR**
需要向网络管理员申请和报备,k8s内部的pod都会从这个地址段里进行分配
> 这个地址段要配置多少位掩码呢?
这个需要根据具体的k8s集群内的节点数量计算(master+node一共的);
C类地址:24位掩码可以容纳4个节点,也就是2^8/64=4
B类地址:16位掩码可以容纳1024个节点,也就是2^16/64=1024
除了标准的有类地址,也可以根据具体需求来分配无类地址段,需要考虑以后有扩容节点的需求就可以
- [ ] **SVC_CIDR**
需要向网络管理员申请和报备,k8s内部的service都会从这个地址段里进行分配
> 这个指的就是内部service的地址段,通常情况下一个C类地址足够;也就是256个内部service,需要考虑以后有扩容集群的需求就可以
- **可选配置**
- [ ] ADD_NODE
后续添加k8s的node节点时需要用到,首次安装k8s集群不需要考虑此配置;
> 后续添加k8s的node节点时只需要将新添加的node配置到这里,其它的任何配置都不需要改动,因为需要旧的配置来找到master节点
所以对于config文件,在技术人员每次安装好集群之后,最好能够管理好,以及保证config文件的准确性
- [ ] DOCKER_DIR
docker的数据目录,包含镜像等重要文件,配置的时候尽量要选择磁盘空间大的目录
- **其余未进行说明的配置,不需要关注和修改**
### 配置无忧:配置文件示例
- 现在有5台机器,需要搭建一个高可用集群(3台作为master节点,5台都作为node节点);标准配置如下
```yaml
##k8s的master节点,不能和K8S_NODE重复
[K8S_MASTER]
##example: 172.18.7.145 ansible_ssh_user=root ansible_ssh_pass="KD@2020#cquat1222" ansible_become_pass="KD@2020#cquat1222" ansible_port="22"
172.25.1.148 ansible_ssh_user=test_in ansible_ssh_pass="123456" ansible_become_pass="123456" ansible_port="22"
172.25.1.149 ansible_ssh_user=test_in ansible_ssh_pass="123456" ansible_become_pass="123456" ansible_port="22"
172.25.1.150 ansible_ssh_user=test_in ansible_ssh_pass="123456" ansible_become_pass="123456" ansible_port="22"
##k8s的node节点,如果只有一个单节点的情况下,只写到K8S_MASTER,而K8S_NODE留空即可
[K8S_NODE]
172.25.1.151 ansible_ssh_user=test_in ansible_ssh_pass="123456" ansible_become_pass="123456" ansible_port="22"
172.25.1.152 ansible_ssh_user=test_in ansible_ssh_pass="123456" ansible_become_pass="123456" ansible_port="22"
##后续添加k8s的node节点时需要用到,首次安装k8s集群不需要考虑此配置
[ADD_NODE]
[all:vars]
##K8S_VIP配置项,高可用场景下启用,如果您不需要高可用,请务必使用"#"注释,使其不生效
K8S_VIP=172.25.1.147
##配置对应的网卡接口
NETWORK_INTERFACE=eth0
##时间同步服务器设置,如果您不清楚这个用途,那么就不要修改,保持默认即可
NTP_SERVER=ntp.aliyun.com
##测试功能;是否启用cilium网络插件,值为"0"表示不启用,值为"1"启用,如果您不清楚该插件的用途,那么就保持默认值"0"
CILIUM_UP=0
##如下三个是CIDR网络配置
POD_CIDR=172.27.0.0/16
SVC_CIDR=172.29.0.0/16
##docker容器的数据存放目录
DOCKER_DIR=/kingdee/docker
##用户不需要考虑以下所有配置
VERSION=1.19.12
KERNEL_VERSION=5.4.170-1.el7.elrepo.x86_64
[K8S_ALL:children]
K8S_MASTER
K8S_NODE
ADD_NODE
```
- 现在有3台机器,需要搭建一个非高可用集群(一台作为master节点,三台都作为node节点);标准配置如下
```yaml
##k8s的master节点,不能和K8S_NODE重复
[K8S_MASTER]
##example: 172.18.7.145 ansible_ssh_user=root ansible_ssh_pass="KD@2020#cquat1222" ansible_become_pass="KD@2020#cquat1222" ansible_port="22"
172.25.1.148 ansible_ssh_user=test_in ansible_ssh_pass="123456" ansible_become_pass="123456" ansible_port="22"
##k8s的node节点,如果只有一个单节点的情况下,只写到K8S_MASTER,而K8S_NODE留空即可
[K8S_NODE]
172.25.1.149 ansible_ssh_user=test_in ansible_ssh_pass="123456" ansible_become_pass="123456" ansible_port="22"
172.25.1.150 ansible_ssh_user=test_in ansible_ssh_pass="123456" ansible_become_pass="123456" ansible_port="22"
##后续添加k8s的node节点时需要用到,首次安装k8s集群不需要考虑此配置
[ADD_NODE]
[all:vars]
##K8S_VIP配置项,高可用场景下启用,如果您不需要高可用,请务必使用"#"注释,使其不生效
#K8S_VIP=172.25.1.147
##配置对应的网卡接口
NETWORK_INTERFACE=eth0
##时间同步服务器设置,如果您不清楚这个用途,那么就不要修改,保持默认即可
NTP_SERVER=ntp.aliyun.com
##测试功能;是否启用cilium网络插件,值为"0"表示不启用,值为"1"启用,如果您不清楚该插件的用途,那么就保持默认值"0"
CILIUM_UP=0
##如下三个是CIDR网络配置
POD_CIDR=172.27.0.0/16
SVC_CIDR=172.29.0.0/16
##docker容器的数据存放目录
DOCKER_DIR=/kingdee/docker
##用户不需要考虑以下所有配置
VERSION=1.19.12
KERNEL_VERSION=4.20.13-1.el7.elrepo.x86_64
[K8S_ALL:children]
K8S_MASTER
K8S_NODE
ADD_NODE
```
- 现在有1台机器,需要搭建一个非高可用集群;标准配置如下
```yaml
##k8s的master节点,不能和K8S_NODE重复
[K8S_MASTER]
##example: 172.18.7.145 ansible_ssh_user=root ansible_ssh_pass="KD@2020#cquat1222" ansible_become_pass="KD@2020#cquat1222" ansible_port="22"
172.25.1.148 ansible_ssh_user=test_in ansible_ssh_pass="123456" ansible_become_pass="123456" ansible_port="22"
##k8s的node节点,如果只有一个单节点的情况下,只写到K8S_MASTER,而K8S_NODE留空即可
[K8S_NODE]
##后续添加k8s的node节点时需要用到,首次安装k8s集群不需要考虑此配置
[ADD_NODE]
[all:vars]
##K8S_VIP配置项,高可用场景下启用,如果您不需要高可用,请务必使用"#"注释,使其不生效
#K8S_VIP=172.25.1.147
##配置对应的网卡接口
NETWORK_INTERFACE=eth0
##时间同步服务器设置,如果您不清楚这个用途,那么就不要修改,保持默认即可
NTP_SERVER=ntp.aliyun.com
##测试功能;是否启用cilium网络插件,值为"0"表示不启用,值为"1"启用,如果您不清楚该插件的用途,那么就保持默认值"0"
CILIUM_UP=0
##如下三个是CIDR网络配置
POD_CIDR=172.27.0.0/16
SVC_CIDR=172.29.0.0/16
##docker容器的数据存放目录
DOCKER_DIR=/kingdee/docker
##用户不需要考虑以下所有配置
VERSION=1.19.12
KERNEL_VERSION=4.20.13-1.el7.elrepo.x86_64
[K8S_ALL:children]
K8S_MASTER
K8S_NODE
ADD_NODE
```
### 执行安装
配置好config文件之后,先执行preinstall.sh;
然后会自动更新内核并且自动重启系统,数分钟后确定服务器启动完成后再执行install.sh
安装完毕,显示如下类似信息
```yaml
TASK [06-post_install : 检查k8s安装-2] ***********************************************************************************************************************************************************************************************************
ok: [172.25.1.148] => {
"result.stdout_lines": [
">>>>您当前的集群有1个master节点",
">>>>您当前的集群有0个node节点",
">>>>集群内部dns解析正常",
">>>>集群内部网络通信正常",
">>>>集群安装成功~"
]
}
PLAY RECAP ***********************************************************************************************************************************************************************************************************************************
172.25.1.148 : ok=8 changed=5 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
```
# 3 卸载k8s集群
**卸载k8s集群也**需要保持config文件的准确性**,然后执行`uninstall.sh`脚本,卸载完成后脚本会自动操作相关主机进行重启,进行更干净的清理**
# 4 集群扩充新的节点
在之前配置的config文件的基础上,进行配置,目前只支持扩充node节点
### 配置文件示例
如下配置是之前旧的config文件
```yaml
##k8s的master节点,不能和K8S_NODE重复
[K8S_MASTER]
##example: 172.18.7.145 ansible_ssh_user=root ansible_ssh_pass="KD@2020#cquat1222" ansible_become_pass="KD@2020#cquat1222" ansible_port="22"
172.25.1.148 ansible_ssh_user=test_in ansible_ssh_pass="123456" ansible_become_pass="123456" ansible_port="22"
##k8s的node节点,如果只有一个单节点的情况下,只写到K8S_MASTER,而K8S_NODE留空即可
[K8S_NODE]
##后续添加k8s的node节点时需要用到,首次安装k8s集群不需要考虑此配置
[ADD_NODE]
[all:vars]
##K8S_VIP配置项,高可用场景下启用,如果您不需要高可用,请务必使用"#"注释,使其不生效
#K8S_VIP=172.25.1.147
##配置对应的网卡接口
NETWORK_INTERFACE=eth0
##如下三个是CIDR网络配置
POD_CIDR=172.27.0.0/16
SVC_CIDR=172.29.0.0/16
##docker容器的数据存放目录
DOCKER_DIR=/kingdee/docker
##用户不需要考虑以下所有配置
VERSION=1.19.12
KERNEL_VERSION=4.20.13-1.el7.elrepo.x86_64
[K8S_ALL:children]
K8S_MASTER
K8S_NODE
ADD_NODE
```
之前整个集群只有一个master节点,现在需要扩充三个node节点,修改后的配置如下
```yaml
##k8s的master节点,不能和K8S_NODE重复
[K8S_MASTER]
##example: 172.18.7.145 ansible_ssh_user=root ansible_ssh_pass="KD@2020#cquat1222" ansible_become_pass="KD@2020#cquat1222" ansible_port="22"
172.25.1.148 ansible_ssh_user=test_in ansible_ssh_pass="123456" ansible_become_pass="123456" ansible_port="22"
##k8s的node节点,如果只有一个单节点的情况下,只写到K8S_MASTER,而K8S_NODE留空即可
[K8S_NODE]
##后续添加k8s的node节点时需要用到,首次安装k8s集群不需要考虑此配置
[ADD_NODE]
172.25.1.150 ansible_ssh_user=test_in ansible_ssh_pass="123456" ansible_become_pass="123456" ansible_port="22"
172.25.1.151 ansible_ssh_user=test_in ansible_ssh_pass="123456" ansible_become_pass="123456" ansible_port="22"
172.25.1.152 ansible_ssh_user=test_in ansible_ssh_pass="123456" ansible_become_pass="123456" ansible_port="22"
[all:vars]
##K8S_VIP配置项,高可用场景下启用,如果您不需要高可用,请务必使用"#"注释,使其不生效
#K8S_VIP=172.25.1.147
##配置对应的网卡接口
NETWORK_INTERFACE=eth0
##如下三个是CIDR网络配置
POD_CIDR=172.27.0.0/16
SVC_CIDR=172.29.0.0/16
##docker容器的数据存放目录
DOCKER_DIR=/kingdee/docker
##用户不需要考虑以下所有配置
VERSION=1.19.12
KERNEL_VERSION=4.20.13-1.el7.elrepo.x86_64
[K8S_ALL:children]
K8S_MASTER
K8S_NODE
ADD_NODE
```
config文件配置好之后,执行k8s-install目录下的`add_node.sh`,该脚本会自动更新节点内核、重启、加入k8s集群操作,不需要人工干预。
kubernetes安装
kubernetes安装包可以从金蝶云之家应用“小C”中下载,安装前请先下载安装包到一台执行机上。# 1 通用环境检查**请您严格按照如下步骤进...
点击下载文档
本文2024-09-23 01:10:34发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144262.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章