RKE安装部署K8S集群、Rancher
服务器准备:三台虚拟机(master:1,node:2;这里选用的阿里云ECS)OShostname内网IPCentos7joker-master-1172.27.31.149Centos7joker-node-1172.27.31.148Centos7joker-node-2172.27.31.147首先所有节点初始化系统相关配置# 关闭防火墙systemctl stop firewal
服务器准备:三台虚拟机(master:1,node:2;这里选用的阿里云ECS)
OS | hostname | 内网IP |
Centos7 | joker-master-1 | 172.27.31.149 |
Centos7 | joker-node-1 | 172.27.31.148 |
Centos7 | joker-node-2 | 172.27.31.147 |
首先所有节点初始化系统相关配置
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
# 关闭swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
# 根据规划设置主机名
hostnamectl set-hostname <hostname>
# 修改 hosts 配置(可以只修改 master,或者所有节点)
cat >> /etc/hosts << EOF
172.27.31.149 joker-master-1
172.27.31.148 joker-node-1
172.27.31.147 joker-node-2
EOF
# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
# 时间同步
yum install -y ntpdate
ntpdate time.windows.com
所有节点安装docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker
# 配置 docker 镜像加速
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["you docker mirror acceleration address"]
}
EOF
所有节点安装 Kubctl
# 配置阿里云 Kubernetes yum 软件源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubectl-1.20.15
所有节点 SSH Server 配置
vim /etc/ssh/sshd_config
# 允许 TCP 转发
AllowTcpForwarding yes
# 重启 sshd 服务
systemctl restart sshd.service
所有节点开放端口KubeAPI:6443
和etcd:2379
为所有节点创建用户,并设置 ssh 免密登录
1.创建用户
# 创建用户: rke
useradd rke
# 设置用户密码
passwd rke
# 将用户添加到 docker 组中
usermod -aG docker rke
# 登录新创建的用户 rke,测试 docker 权限
su rke
docker ps
# 出现下面这段代码说明配置成功
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2. 配置 ssh 免密登录(使用新创建的用户进行配置)
# 生成 ssh 秘钥
ssh-keygen -t rsa
# 配置免密登录
ssh-copy-id rke@172.27.31.149
ssh-copy-id rke@172.27.31.148
ssh-copy-id rke@172.27.31.147
登录验证
安装 RKE 二进制包
wget https://github.com/rancher/rke/releases/download/v1.3.7/rke_linux-amd64
# 将下载好的 rke 二进制包移动到 /usr/bin 目录下,并赋予权限
# 如果当前登录用户非 root 帐号,切换到 root
su root
# 移动 rke 二进制包
mv rke_linux-amd64 /usr/bin/rke
# 文件授权
chmod +x /usr/bin/rke
验证版本
rke --version
K8S部署文件有两种生成方式(使用创建的用户操作)
1.使用rke生成配置文件
rke config --name cluster.yml
[+] Cluster Level SSH Private Key Path [~/.ssh/id_rsa]: # ssh 秘钥保存路径
[+] Number of Hosts [1]: # 配置主机数
[+] SSH Address of host (1) [none]: # 第一台主机 SSH 地址
[+] SSH Port of host (1) [22]: # 第一台主机 SSH 端口号
[+] SSH Private Key Path of host (139.196.77.13) [none]: /home/rke/.ssh/id_rsa # 第一台主机 SSH 秘钥路径
[+] SSH User of host (139.196.77.13) [ubuntu]: rke # 第一台主机用户(就是我们上面创建的用户)
[+] Is host (139.196.77.13) a Control Plane host (y/n)? [y]: y # 参考 Rancher 官方文档
[+] Is host (139.196.77.13) a Worker host (y/n)? [n]: y # 参考 Rancher 官方文档
[+] Is host (139.196.77.13) an etcd host (y/n)? [n]: y # 参考 Rancher 官方文档
[+] Override Hostname of host (139.196.77.13) [none]: joker-master-1 # 第一台主机 hostname
[+] Internal IP of host (139.196.77.13) [none]: 172.27.31.149 # 第一台主机内网地址
[+] Docker socket path on host (139.196.77.13) [/var/run/docker.sock]:
[+] SSH Address of host (2) [none]: # 第二台主机 SSH 地址
[+] SSH Port of host (2) [22]:
[+] SSH Private Key Path of host (106.14.156.233) [none]: /home/rke/.ssh/id_rsa
[+] SSH User of host (106.14.156.233) [ubuntu]: rke
[+] Is host (106.14.156.233) a Control Plane host (y/n)? [y]: n
[+] Is host (106.14.156.233) a Worker host (y/n)? [n]: y
[+] Is host (106.14.156.233) an etcd host (y/n)? [n]: y
[+] Override Hostname of host (106.14.156.233) [none]: joker-node-1
[+] Internal IP of host (106.14.156.233) [none]: 172.27.31.148
[+] Docker socket path on host (106.14.156.233) [/var/run/docker.sock]:
[+] SSH Address of host (3) [none]: # 第三台主机 SSH 地址
[+] SSH Port of host (3) [22]:
[+] SSH Private Key Path of host (106.14.199.170) [none]: /home/rke/.ssh/id_rsa
[+] SSH User of host (106.14.199.170) [ubuntu]: rke
[+] Is host (106.14.199.170) a Control Plane host (y/n)? [y]: n
[+] Is host (106.14.199.170) a Worker host (y/n)? [n]: y
[+] Is host (106.14.199.170) an etcd host (y/n)? [n]: y
[+] Override Hostname of host (106.14.199.170) [none]: joker-node-2
[+] Internal IP of host (106.14.199.170) [none]: 172.27.31.147
[+] Docker socket path on host (106.14.199.170) [/var/run/docker.sock]:
[+] Network Plugin Type (flannel, calico, weave, canal, aci) [canal]: flannel # 网络组件
[+] Authentication Strategy [x509]:
[+] Authorization Mode (rbac, none) [rbac]:
[+] Kubernetes Docker image [rancher/hyperkube:v1.22.6-rancher1]: rancher/hyperkube:v1.20.15-rancher1 # k8s 镜像版本,参考 RKE 官方文档
[+] Cluster domain [cluster.local]:
[+] Service Cluster IP Range [10.43.0.0/16]:
[+] Enable PodSecurityPolicy [n]:
[+] Cluster Network CIDR [10.42.0.0/16]:
[+] Cluster DNS Service IP [10.43.0.10]:
[+] Add addon manifest URLs or YAML files [no]:
这样就会在当前文件夹下生成一个 cluster.yml 文件
2. 手动编写一个 cluster.yml 文件,参考文档:Kubernetes 配置选项 | Rancher文档
安装部署 K8S 集群
rke up --config cluster.yml
这个要耐心等待一会儿。因为需要下载许多镜像。
如果出现如下错误
说明所有服务器之间 SSH 免密登录没有配置好。如果 SSH 免密登录没有问题,则检查 cluster.yml 文件中每个 node 下的 user 配置是否有问题。
当出现如下信息,则证明集群已部署完成。
安装结束后,会生成两份文件
cluster.yml
:RKE 集群的配置文件(我们手动生成的配置文件)。kube_config_cluster.yml
:该集群的Kubeconfig 文件包含了获取该集群所有权限的认证凭据。cluster.rkestate
:Kubernetes 集群状态文件,包含了获取该集群所有权限的认证凭据,使用 RKE v0.2.0 时才会创建这个文件。
使用 kube_config_cluster.yml
文件查看集群状态
至此,K8S集群就已经搭建完成。
参考文档:使用 RKE 安装 Kubernetes | Rancher文档
部署 Rancher(可以使用root用户进行操作)
1.安装 helm
# 下载 helm 二进制包
wget https://get.helm.sh/helm-v3.5.0-linux-amd64.tar.gz
# 解压
tar -zxvf helm-v3.5.0-linux-amd64.tar.gz
# 这一步需要 root 用户操作,否则可能会有权限不足的问题
mv linux-amd64/helm /usr/bin
2.为 Rancher 创建 Namespace
kubectl create namespace cattle-system
如果出现
说明 kubectl 没有找到相关的配置。还记得上面生成的 kube_config_cluster.yml
文件么?你可以在命令中间添加 --kubeconfig 指定 kube_config_cluster.yml
文件路径来执行。
kubectl --kubeconfig /home/rke/kube_config_cluster.yml apply -f cert-manager.crds.yaml
也可以将 kube_config_cluster.yml
文件添加到系统变量中
echo export KUBECONFIG=/home/rke/kube_config_cluster.yml >> ~/.bash_profile
source ~/.bash_profile
这样 kubectl 就不需要在指定 --kubeconfig 文件了
3.选择 SSL 选项(这里选用 Rancher 生成的 TLS 证书,因此需要 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
# 添加 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 来验证它是否已正确部署:
kubectl get pods --namespace cert-manager
NAME READY STATUS RESTARTS AGE
cert-manager-56b686b465-lh5gj 1/1 Running 0 65s
cert-manager-cainjector-75c94654d-6s7n4 1/1 Running 0 65s
cert-manager-webhook-d4fd4f479-rzxh4 1/1 Running 0 65s
4.通过 helm 安装 Rancher
helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=rancher.my.org \
--set replicas=3 \
--version 2.5.12
- namespace:命名空间
- hostname:负载均衡器的 DNS 记录,你需要通过这个域名来访问 Rancher Server。
- replicas:设置为 Rancher 部署所使用的副本数量。
- version:Rancher 版本
等待 Rancher 运行:
kubectl -n cattle-system rollout status deploy/rancher
Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available...
deployment "rancher" successfully rolled out
查看 Rancher 运行状态
kubectl -n cattle-system get deploy rancher
NAME READY UP-TO-DATE AVAILABLE AGE
rancher 3/3 3 3 3m29s
至此,Rancher 部署也就完成了!
参考文档:高可用安装指南 | Rancher文档
接下来我们测试一下我们安装完成后的 Rancher。
因为我没有购买域名,所以我需要做如下操作:
1.首先修改服务器的 hosts 文件,添加映射关系
vim /etc/hosts
本地电脑也要修改一下 hosts 文件,linux 系统同上操作,windows 系统,hosts 文件路径为 C:\Windows\System32\drivers\etc\hosts,添加同上的操作。
2.配置完成后,打开浏览器访问:rancher.my.org,由于第一次访问,需要重新设置密码
至此记录一下 K8S、Rancher 学习。感谢网上的众多大佬分享经验!
文档中所有内容,官网中均可找到!
更多推荐
所有评论(0)