rancher2.3搭建kubernetes容器云(0):准备

本系列介绍基于rancher 2.3搭建容器云环境。
本篇介绍安装前的准备工作。


1. 系统规划

1.1 服务器信息

No Hostname 内网IP 外网IP OS
1 devops001 172.24.14.177 192.168.205.50 Centos7.6
2 devops002 172.24.14.179 192.168.205.62 Centos7.6
3 devops003 172.24.14.178 192.168.205.63 Centos7.6
4 devops004 172.24.14.176 192.168.205.70 Centos7.6
5 devops005 172.24.14.180 192.168.205.102 Centos7.6

1.2 服务器角色

节点 devops001 devops002 devops003 devops004 devops005
负载均衡 YES NO NO NO NO
rancher server NO YES YES YES NO
k8s controlplane NO YES YES YES NO
k8s ectd NO YES YES YES NO
k8s worker NO YES YES YES NO
harbor NO NO NO NO YES

1.3 软件版本

需按照Node Requirements确认环境与版本。
可使用如下命令检查centos版本:

1
cat /etc/redhat-release

批量操作也可使用pdsh。

本系列所使用软件版本:
centos: 7.6
docker: 18.06
rancher: 2.3
harbor: 1.9.0
helm: 2.14.3
nginx: 1.14


2. 修改hosts文件和主机名

本次使用hostname方式,大型集群需使用DNS。
分别修改5个服务器的hosts文件和主机名。

2.1 修改hosts文件

编辑hosts文件:

1
sudo vi /etc/hosts

添加下面内容,注意使用内网ip,浮动ip可能导致端口无法绑定:
1
2
3
4
5
172.24.14.177 devops001
172.24.14.179 devops002
172.24.14.178 devops003
172.24.14.176 devops004
172.24.14.180 devops005

2.2 修改主机名

使用hostname修改主机名为devops001/devops002/devops003/devops004/devops005。注意主机名和hosts文件中设置的名称应当保持一致,否则会产生意外的错误。

1
sudo hostnamectl set-hostname devops001


3. 关闭SElinux和防火墙

使用如下脚本关闭SElinux和防火墙:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash

echo "SSH配置检测";
ssh_status=`grep "^UseDNS no" /etc/ssh/sshd_config | wc -l`;
if [ $ssh_status = 0 ]; then
sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config && service sshd restart
echo 'ERROR: /etc/ssh/sshd_config文件未优化UseDNS no,请确保集群所有节点做过此项优化!'; exit 1;
fi;

echo "SElinux状态检测";
selinux_status=`sestatus -v|sed -n '1p;1q'|cut -d ':' -f 2|grep -E "enabled|disabled"`;
if [ $selinux_status = 'enabled' ]; then
echo 'ERROR: SElinux没有关闭,现已关闭,请重启机器保证生效!';
setenforce 0;
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config;
exit 1;
fi;

echo "关闭防火墙";
service iptables stop && service ip6tables stop;
chkconfig iptables off && chkconfig ip6tables off;
systemctl stop firewalld.service && systemctl disable firewalld.service;

4. 配置SSH免密登录

4.1 生成SSH的公钥

所有节点执行以下命令:

1
ssh-keygen

4.2 设置免登录

所有节点执行以下命令:

1
2
3
4
5
ssh-copy-id -i devops001
ssh-copy-id -i devops002
ssh-copy-id -i devops003
ssh-copy-id -i devops004
ssh-copy-id -i devops005

4.3 验证

1
ssh devops002

5. 安装docker

5.1 在线安装

参照docker官方Install using the repository文档安装指定版本。

5.1.1 删除旧版本

1
2
3
4
5
6
7
8
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

5.1.2 安装依赖包和仓库

1
2
3
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5.1.3 获取docker版本列表

1
yum list docker-ce.x86_64 --showduplicates | sort -r

5.1.4 选择18.06安装

1
sudo yum install docker-ce-18.06.3.ce-3.el7 docker-ce-cli-18.06.3.ce-3.el7 containerd.io

containerd.io版本为1.2.6-3.3.el7

5.2 离线安装

参照docker官方Install from a package文档安装指定版本。
docker-ce和docker-ce-cli有较多依赖包,需要下载全部依赖包的rpm并按次序安装。

5.3 启动docker

1
2
3
sudo systemctl start docker
# 设置开机启动
sudo systemctl enable docker

6. 添加rancher用户并配置权限

因为CentOS的安全限制,通过RKE安装K8S集群时候无法使用root账户。所以,建议CentOS用户使用非root用户来运行docker,不管是RKE还是custom安装k8s。

6.1 添加rancher用户

1
2
3
4
5
6
7
8
# 添加用户(可选)
sudo adduser rancher
# 为新用户设置密码
sudo passwd rancher
# 为新用户添加sudo权限
sudo echo 'rancher ALL=(ALL) ALL' >> /etc/sudoers
# 把当前用户加入docker组
sudo usermod -aG docker rancher

6.2 配置rancher用户免密登录

在所有节点上使用rancher登录重复步骤4.


7. 生成自签名ssl证书

后续补充。


参照资料:
Get Docker Engine - Community for CentOS
Rancher 2.X-RKE-七层负载均衡HA部署
Docker CE 18.06在线安装和RPM包安装