k8s集群部署(rke + rancher)
k8s集群部署(rke + rancher)
部署环境说明:
cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
一、使用rke命令安装 k8s集群
1、在所有节点上安装chronyd服务:
yum -y install chrony
修改chrony服务的配置文件,将时间同步服务器设置为阿里源:
vim /etc/chrony.conf
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
将chronyd服务设置为开机自启动,并重启chrony服务:
systemctl enable chronyd
systemctl restart chronyd
2、关闭firewalld防火墙
systemctl disable firewalld
systemctl stop firewalld
3、设置开机自动加载br_netfilter模块,并应用以下 sysctl 设置:
vim /etc/sysconfig/modules/k8s.modules
#!/bin/bash
/usr/sbin/modprobe br_netfilter
chmod +x /etc/sysconfig/modules/k8s.modules
source /etc/sysconfig/modules/k8s.modules
vim /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables=1
sysctl -p
4、使用阿里源安装docker
docker-ce镜像-docker-ce下载地址-docker-ce安装教程-阿里巴巴开源镜像站
systemctl enable docker
systemctl start docker
5、使用阿里源安装kubectl,为了与k8s版本保持一致,这里安装1.21.6版本。
kubernetes镜像-kubernetes下载地址-kubernetes安装教程-阿里巴巴开源镜像站
6、新建ssh用户
# 创建admin用户
useradd admin
设置admin用户密码
passwd admin
将admin用户加入docker用户组,添加到docker用户组的用户会自动获得主机的 root 权限
usermod -aG docker admin
7、禁用所有节点上的交换功能(Swap)
swapoff -a
编辑配置文件/etc/fstab,永久禁用swap分区
8、SSH Server 配置
您的 SSH server 全系统配置文件,位于/etc/ssh/sshd_config
,该文件必须包含以下代码,允许 TCP 转发。
AllowTcpForwarding yes
9、下载 RKE 二进制安装包
https://github.com/rancher/rke/releases/download/v1.3.2/rke_linux-amd64
对应的k8s版本为1.21.6
mv rke_linux-amd64 rke
chmod +x rke
10、配置ssh免密连接
在master执行创建ssh公私钥 并把公钥分发到各个节点上
su - admin
ssh-keygen -t rsa
ssh-copy-id admin@192.168.159.101
ssh-copy-id admin@192.168.159.102
ssh-copy-id admin@192.168.159.103
scp /home/admin/.ssh/id_rsa admin@192.168.159.102:/home/admin/.ssh/
scp /home/admin/.ssh/id_rsa admin@192.168.159.103:/home/admin/.ssh/
11、运行rke config
命令,在当前路径下创建 cluster.yml
文件。这条命令会引导您输入创建集群所需的所有参数。
rke config --name cluster.yml
12、使用 RKE 部署 Kubernetes 集群
创建了cluster.yml
文件后,您可以运行以下命令部署集群。这条命令默认cluster.yml
已经保存在了您运行命令所处的路径下。
rke up
运行该命令后,返回的最后一行信息应该是Finished building Kubernetes cluster successfully
,表示成功部署集群,可以开始使用集群。在创建 Kubernetes 集群的过程中,会创建一个kubeconfig
文件,它的文件名称是 kube_config_cluster.yml
,您可以使用它控制 Kubernetes 集群。
export KUBECONFIG=/home/admin/kube_config_cluster.yml
[admin@localhost ~]$ ls
cluster.rkestate cluster.yml kube_config_cluster.yml
[admin@localhost ~]$ scp * admin@192.168.159.102:/home/admin/
[admin@localhost ~]$ scp * admin@192.168.159.103:/home/admin/
cat /etc/profile.d/k8s.sh
#!/bin/bash
export KUBECONFIG=/home/admin/kube_config_cluster.yml
scp /etc/profile.d/k8s.sh root@192.168.159.102:/etc/profile.d/
scp /etc/profile.d/k8s.sh root@192.168.159.103:/etc/profile.d/
二、Helm Chart 安装 Rancher
https://get.helm.sh/helm-v3.8.2-linux-amd64.tar.gz
chown root.root helm
mv helm /usr/local/bin/
1、添加 Helm Chart 仓库
使用helm repo add
命令添加含有 Rancher Chart 的 Helm Chart 仓库。
helm repo add rancher-stable http://rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/stable
2、为 Rancher 创建 Namespace
我们需要定义一个 Kubernetes Namespace,在 Namespace 中安装由 Chart 创建的资源。这个命名空间的名称为 cattle-system
:
kubectl create namespace cattle-system
3、安装 cert-manager
如果你使用自己的证书文件 ingress.tls.source=secret
或者使用外部 TLS 负载均衡器可以跳过此步骤。仅在使用 Rancher 生成的证书 ingress.tls.source=rancher
或 Let's Encrypt 颁发的证书 ingress.tls.source=letsEncrypt
时才需要 cert-manager。
# 如果你手动安装了CRD,而不是在Helm安装命令中添加了`--set installCRDs=true`选项,你应该在升级Helm chart之前升级CRD资源。
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.1/cert-manager.crds.yaml
或者下载cert-manager.crds.yaml这个文件后执行:kubectl apply -f cert-manager.crds.yaml
# 添加 Jetstack Helm 仓库
helm repo add jetstack https://charts.jetstack.io
# 更新本地 Helm chart 仓库缓存
helm repo update
# 安装 cert-manager Helm chart(会卡顿一会,不要取消命令的执行)
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.5.1
安装完 cert-manager 后,你可以通过检查 cert-manager 命名空间中正在运行的 Pod 来验证它是否已正确部署:
[admin@localhost ~]$ kubectl get pods --namespace cert-manager
NAME READY STATUS RESTARTS AGE
cert-manager-56b686b465-gndz4 1/1 Running 0 45m
cert-manager-cainjector-75c94654d-tlzd7 1/1 Running 0 45m
cert-manager-webhook-69bd5c9d75-4rnx7 1/1 Running 0 45m
4、通过 Helm 安装 Rancher
helm install rancher rancher-stable/rancher --namespace cattle-system --set hostname=rancher.test.org --version v2.5.9 --set replicas=1
等待 Rancher 运行:
[admin@localhost ~]$ kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 1 updated replicas are available...
5、验证 Rancher Server 是否已成功部署
[admin@localhost ~]$ kubectl -n cattle-system rollout status deploy/rancher
deployment "rancher" successfully rolled out
如果看到以下错误: error: deployment "rancher" exceeded its progress deadline, 你可以通过运行以下命令来检查 deployment 的状态:
kubectl -n cattle-system get deploy rancher
6、 保存你的选项
请保存你使用的全部 --set
选项。使用 Helm 升级 Rancher 到新版本时,你将需要使用相同的选项。
7、安装完成
现在你应该具有一个功能正常的 Rancher Server 了。
打开浏览器,通过 Helm 指定的 hostname
设置的域名来访问你的 Rancher Server。如果你的环境没有设置公共 DNS 解析,你可以在 hosts 文件中手动映射域名和 IP 的解析记录。
更多推荐
所有评论(0)