一、服务器布局
ip | fqdn | hostname | config |
---|---|---|---|
192.168.126.10 | rancher.k8s.example.com | rancher | 治理负载 4 -4 |
192.168.126.11 | jwxt.k8s.example.com | jwxt | 利用负载 4 -4 |
192.168.126.12 | harbor.k8s.example.com | harbor | 4-8 |
192.168.126.20 | rancher1.k8s.example.com | rancher1 | 4-8 |
192.168.126.21 | rancher2.k8s.example.com | rancher2 | 4-8 |
192.168.126.22 | rancher3.k8s.example.com | rancher3 | 4-8 |
192.168.126.30 | k8s01.k8s.example.com | k8s01 | 4-8 |
192.168.126.31 | k8s02.k8s.example.com | k8s02 | 4-8 |
192.168.126.32 | k8s03.k8s.example.com | k8s03 | 4-8 |
192.168.126.40 | docker01.k8s.example.com | docker01 | 12-16 |
192.168.126.41 | docker02.k8s.example.com | docker02 | 12-16 |
192.168.126.42 | docker03.k8s.example.com | docker03 | 12-16 |
192.168.126.50 | nfs.k8s.example.com | nfs | 4-4 |
192.168.126.51 | oracle.k8s.example.com | oracle | 8-32 |
以下所有操作都已配置好 eams 用户,且 eams 用户具备 sudo 权限
yum install sudo -y
useradd eams
echo abc123 | passwd --stdin eams
usermod eams -aG wheel
vim /etc/sudoers
NOPASSED:ALL
二、配置 ansible 环境
以下所有操作都在 rancher(nginx 负载)的主机上进行
2.1 批改 hosts 文件
sudo vim /etc/hosts
hosts 文件(示例)
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.126.10 rancher.k8s.example.com rancher
192.168.126.11 app.k8s.example.com app
192.168.126.12 harbor.k8s.example.com harbor
192.168.126.20 rancher1.k8s.example.com rancher1
192.168.126.21 rancher2.k8s.example.com rancher2
192.168.126.22 rancher3.k8s.example.com rancher3
192.168.126.30 k8s01.k8s.example.com k8s01
192.168.126.31 k8s02.k8s.example.com k8s02
192.168.126.32 k8s03.k8s.example.com k8s03
192.168.126.40 docker01.k8s.example.com docker01
192.168.126.41 docker02.k8s.example.com docker02
192.168.126.42 docker03.k8s.example.com docker03
192.168.126.50 nfs.k8s.example.com nfs
用命令 ping 主机名,如 ping nfs,测试配置胜利
2.2 装置 ansible
sudo yum install epel-release -y
sudo yum install ansible -y
2.3 下载 ansible 脚本
https://e.coding.net/supwisdo…
拷贝至 /home/eams 目录下 ansibe
2.4 编辑 inventory 文件
cd /home/eams/ansible/
vim inventory
inventory 文件(示例)
绿色的名字不能更改,主机可依据理论须要增减
[nginxs]
rancher
jwxt
[nginxs1]
rancher
[nginxs2]
jwxt
[harbors]
harbor
[ranchers]
rancher1
rancher2
rancher3
[k8ss]
k8s01
k8s02
k8s03
[dockers]
docker01
docker02
docker03
[nfss]
nfs
[appservers:children]
ranchers
k8ss
dockers
harbors
2.6 设置 SSH 免登
ssh-keygen
所有提醒都间接按回车,生成胜利后,逐条执行以下命令,过程中须要输出 yes 以及对应主机的 eams 用户明码
ssh-copy-id eams@nginx1
ssh-copy-id eams@nginx2
ssh-copy-id eams@harbor
ssh-copy-id eams@rancher1
ssh-copy-id eams@rancher2
ssh-copy-id eams@rancher3
ssh-copy-id eams@k8s01
ssh-copy-id eams@k8s02
ssh-copy-id eams@k8s03
ssh-copy-id eams@docker01
ssh-copy-id eams@docker02
ssh-copy-id eams@docker03
ssh-copy-id eams@nfs
2.7 测试 ansible 环境
cd /home/eams/ansible/
ansible all -m ping
返回值 success 示意 ansible 环境搭建胜利
三、配置操作系统环境
以下所有操作都在 rancher 的 nginx 主机上进行
3.1 散发 hosts 文件
cd /home/eams/ansible/
# 能够将以后主机上的 hosts 文件拷贝,也能够间接编辑 ansible 目录中的 hosts.j2 文件
cp /etc/hosts /home/eams/ansible/hosts.j2
ansible-playbook hosts.yml
# 验证
ansible all -m shell -a 'cat /etc/hosts'
3.2 更换 yum 源
cd /home/eams/ansible/
ansible-playbook yum.yml
# 验证
ansible all -m shell -a 'ls -l /etc/yum.repos.d/'
3.3 降级零碎内核(可选)
cd /home/eams/ansible/
# 更新除 nginx1 之外的所有主机内核,更新实现后主动重启
ansible-playbook kernel1.yml
# 验证所有虚拟机是否启动胜利
ansible all -m ping
# 更新 nginx1 主机内核
ansible-playbook kernel2.yml
# 重启
reboot
# 验证内核是否降级胜利
ansible all -m shell -a 'uname -a'
如果 uname -r 内核曾经是 3.10 及以上,本步骤能够疏忽
3.4 装置软件
cd /home/eams/ansible/
ansible-playbook soft.yml
更新内核和装置软件工夫比拟长,急躁期待。如果过程中卡住了,ctrl+ c 终止过程,而后从新一遍脚本,直至返回胜利
3.5 敞开 firewalld 和 selinux
cd /home/eams/ansible/
ansible-playbook firewalld.yml
# 长期敞开
ansible all -m shell -a 'setenforce 0'
#永恒敞开 selinux 须要重启(也可稍后重启)#ansible "nginxs2 appservers nfss" -m shell -a 'reboot'
#ansible nginxs1 -m shell -a 'reboot'
# 验证
ansible all -m shell -a 'systemctl status firewalld'
ansible all -m shell -a 'sestatus'
3.6 设置时钟同步
cd /home/eams/ansible/
vim timesync.yml
timesync 文件
---
- name: time sync
hosts: all
tasks:
- name: Install and configure chrony
include_role:
name: unxnn.chrony
vars:
chrony_config_server:
- ntp.aliyun.com
chrony_timezone: Asia/Shanghai
批改 ntp.aliyun.com 为学校的时钟服务器地址,保留退出
cd /home/eams/ansible/
ansible-playbook timesync.yml
# 验证
ansible all -m shell -a 'timedatectl'
3.7 设置语言环境(可选)echo
# 查看所有主机的语言环境是否是 en_US.UTF-8
ansible all -m shell -a 'echo $LANG'
#(可选 ) 如果语言环境不是 en_US.UFT-8
cd /home/eams/ansible/
ansible-playbook lang.yml
如果你从新设置了语言环境变量,在现有关上的终端窗口 echo $LANG 还是未修改之前的,必须从新开启一个终端才会是批改后的
3.8 内核模块优化
cd /home/eams/ansible/
ansible-playbook core.yml
# 验证,抽查其中一个模块是否加载胜利
ansible all -m shell -a 'lsmod | grep veth'
3.9 敞开 SWAP 分区
cd /home/eams/ansible/
ansible-playbook swap.yml
# 验证
ansible appservers -m shell -a 'free -m'
3.10 NFS 的服务端装置
cd /home/eams/ansible/
ansible-playbook nfs.yml
# 验证
ansible nfss -m shell -a 'showmount -e localhost'
3.11 重启
至此,将所有主机重启,察看是否失常启动,若有问题,查看解决
ansible "nginxs2 appservers nfss" -m shell -a 'reboot'
ansible nginxs1 -m shell -a 'reboot'
四、集群装置
以下所有操作都在 rancher 的 nginx 主机上进行
4.1 Docker 装置
cd /home/eams/ansible/
ansible-playbook docker1.yml
# 验证 有 client 显示示意失常
ansible appservers -m shell -a 'docker version'
client 失常,server 报错是失常的
4.2 Docker 配置
cd /home/eams/ansible/
ansible-playbook docker2.yml
# 验证
ansible appservers -m shell -a 'docker version'
client 失常,server 也失常,示意装置胜利
4.3 rancher 的 nginx 装置
cd /home/eams/ansible/
ansible-playbook nginx1.yml
4.4 rancher 的 nginx 配置
cd /home/eams/ansible/
ansible-playbook nginx2.yml
如果 nginx 服务器超过 4 个 CPU,须要编辑 nginx.conf.j2 模板文件后,再执行下面的 nginx2 脚本呢
4.4 装置 kubectl
cd /home/eams/ansible/
ansible-playbook kubectl.yml
#验证
kubectl version
4.5 装置 RKE
cd /home/eams/ansible/
ansible-playbook rke.yml
# 验证
rke -v
4.6 RKE 在 rancher 上装置 K8S
cd /home/eams/ansible/
ansible-playbook rancher.yml
运行 RKE 创立集群
rke up --config /home/eams/rancher/rancher-cluster.yml
# 验证,呈现 Finished building Kubernetes cluster successfully 示意胜利
设置环境变量
echo "export KUBECONFIG=/home/eams/rancher/kube_config_rancher-cluster.yml" >> ~/.bash_profile
source ~/.bash_profile
执行以下命令,看是否胜利
kubectl get nodes
kubectl get pods --all-namespaces
kubectl get pods -n kube-system
4.7 装置 Helm
cd /home/eams/ansible/
ansible-playbook helm.yml
# 验证
helm version
4.8 创立 SSL 私钥
cd /home/eams/ansible/
ansible-playbook ssl.yml
以上命令会返回 result.stdout
# 切换到 ssl 目录
cd /home/eams/ssl/
# 复制 result.stdout 的后果执行,以下命令是参考,不要间接执行
./create_self-signed-cert.sh --ssl-domain=*** --ssl-trusted-ip=*** --ssl-size=2048 --ssl-date=3650
验证是否胜利
openssl verify -CAfile cacerts.pem tls.crt # 应该返回状态为 tls.crt: ok
openssl x509 -in tls.crt -noout -text #执行后查看对应的域名和扩大 iP 是否正确
4.9 装置 rancher
cd /home/eams/ssl
helm repo add rancher-stable http://rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/stable
helm repo update
kubectl create namespace cattle-system
kubectl -n cattle-system create secret tls tls-rancher-ingress --cert=./tls.crt --key=./tls.key
kubectl -n cattle-system create secret generic tls-ca --from-file=cacerts.pem
# 上面命令须要批改域名后运行
helm install rancher rancher-stable/rancher --namespace cattle-system --set hostname=**rancher.k8s.example.com** --set ingress.tls.source=secret --set privateCA=true
#查看集群是否失常
kubectl -n cattle-system rollout status deploy/rancher
#查看 deployment 状态
kubectl -n cattle-system get deploy rancher
#查看运行的容器
kubectl -n cattle-system get pods
#查看运行容器的运行状态
kubectl -n cattle-system describe pod
#查看运行容器的运行日志
kubectl -n cattle-system logs -f rancher-7674bdcd95-4nxjm
#配置 host 拜访域名
rancher.k8s.example.com
视频教程地址:
https://www.ixigua.com/695436…