说明

基于开源项目:https://github.com/easzlab/kubeasz

本次安装使用一个主节点一个工作节点
 

环境要求

  • 至少2台 2核2G 的服务器
  • Cent OS 7.6及以上
  • ping通互联网

环境准备

1、 设置主机名;

# 各虚拟机设置主机名
hostnamectl set-hostname k8s-master001
hostnamectl set-hostname k8s-node001
# 查看修改
hostnamectl status
# 修改Hosts
vim /etc/hosts
# 添加如下内容
192.168.58.170 k8s-mamter001
192.168.58.171 k8s-node001
# 复制hosts至其他虚拟机
scp /etc/hosts root@k8s-node001:/etc/hosts

1、 调整系统时区(每个节点都执行);

# 设置系统时区为 中国/上海
timedatectl set-timezone Asia/Shanghai
# 将当前的 UTC 时间写入硬件时钟
timedatectl set-local-rtc 0
# 重启依赖于系统时间的服务
systemctl restart rsyslog
systemctl restart crond

1、 查看并升级内核(每个节点都执行);

# 载入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# 安装ELRepo
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
# 载入elrepo-kernel元数据
yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
# 查看可用的rpm包
yum --disablerepo=\* --enablerepo=elrepo-kernel list kernel*
# 安装长期支持版本的kernel
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt.x86_64
# 删除旧版本工具包
yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64 -y
# 安装新版本工具包
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt-tools.x86_64

#查看默认启动顺序
awk -F\' '$1=="menuentry " {
   
     print $2}' /etc/grub2.cfg  
CentOS Linux (4.4.183-1.el7.elrepo.x86_64) 7 (Core)  
CentOS Linux (3.10.0-327.10.1.el7.x86_64) 7 (Core)  
CentOS Linux (0-rescue-c52097a1078c403da03b8eddeac5080b) 7 (Core)
#默认启动的顺序是从0开始,新内核是从头插入(目前位置在0,而4.4.4的是在1),所以需要选择0。
grub2-set-default 0  
#重启并检查
reboot

1、 每个节点安装依赖工具(每个节点都执行);

# 安装epel源
yum install epel-release -y
# 更新yum
yum update
# 安装python
yum install python -y

安装K8S

1、 主节点安装及准备ansible;

# CentOS 7
yum install git python-pip -y
# pip安装ansible(国内如果安装太慢可以直接用pip阿里云加速)
pip install pip --upgrade -i https://mirrors.aliyun.com/pypi/simple/
pip install ansible==2.6.18 netaddr==0.7.19 -i https://mirrors.aliyun.com/pypi/simple/

1、 配置免密登录;

# 传统 RSA 算法
ssh-keygen -t rsa -b 2048 -N '' -f ~/.ssh/id_rsa
ssh-copy-id $IPs$IPs为所有节点地址包括自身,按照提示输入yes 和root密码

1、 下载安装所需二进制文件;

# 下载工具脚本easzup,举例使用kubeasz版本2.0.2
export release=2.0.2
curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/easzup
chmod +x ./easzup
# 使用工具脚本下载
./easzup -D

上述脚本运行成功后,所有文件(kubeasz代码、二进制、离线镜像)均已 整理好放入目录/etc/ansible

  • /etc/ansible 包含 kubeasz 版本为 ${release} 的发布代码
  • /etc/ansible/bin 包含 k8s/etcd/docker/cni 等二进制文件
  • /etc/ansible/down 包含集群安装时需要的离线容器镜像
  • /etc/ansible/down/packages 包含集群安装时需要的系统基础软件

 

1、 配置集群参数;

cd /etc/ansible && cp example/hosts.multi-node hosts
vim hosts
# 修改ETCD节点
[etcd]
192.168.58.170 NODE_NAME=etcd1

# master node(s)
[kube-master]
192.168.58.170

# work node(s)
[kube-node]
192.168.58.171

# 验证配置是否正确
ansible all -m ping

1、 安装;

# 分步安装
ansible-playbook 01.prepare.yml
ansible-playbook 02.etcd.yml
ansible-playbook 03.docker.yml
ansible-playbook 04.kube-master.yml
ansible-playbook 05.kube-node.yml
ansible-playbook 06.network.yml
ansible-playbook 07.cluster-addon.yml
# 一步安装
#ansible-playbook 90.setup.yml

1、 访问控制台;

# 安装完成后 查询节点信息
kubectl get nodes
# 查询dashboard端口
kubectl get svc -n kube-system | grep dashboard
# 获取访问令牌
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

 

使用IP+图中端口访问(https://192.168.58.170:37204),输入访问令牌,跳转至主页面

 

安装Kuboard(可选,开源更强大的管理平台)

# 安装 Kuboard
kubectl apply -f https://kuboard.cn/install-script/kuboard.yaml
kubectl apply -f https://addons.kuboard.cn/metrics-server/0.3.6/metrics-server.yaml
# 查看 Kuboard 运行状态 ,STATUS为RUNNING时安装完成
kubectl get pods -l k8s.eip.work/name=kuboard -n kube-system
# 访问地址
http://任意一个Worker节点的IP地址:32567/
# 查询令牌  首页输入即可查询出来的字符串即可
echo $(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{
   
     {.data.token}}' | base64 -d)

 

添加工作节点

	场景:环境搭建完成后,有其他工作节点需加入。

1、 克隆一台虚拟机,按照文档环境准备步骤配置基础环境;
2、 主节点执行;

# 配置免密登录
ssh-copy-id 192.168.58.172
# 新增工作节点 执行完即可
easzctl add-node 192.168.58.172

1、 查看控制台;