官网文档
https://rancher.com/docs/rancher/v1.6/zh/installing-rancher/installing-server/#multi-nodes
术语
- Rancher服务器管理和配置Kubernetes集群。您可以通过Rancher服务器的用户界面与下游Kubernetes集群进行交互。
- RKE(Rancher Kubernetes引擎)是经过认证的Kubernetes发行版和CLI /库,用于创建和管理Kubernetes集群。
- K3s(轻量级Kubernetes)也是完全兼容的Kubernetes发行版。它比RKE更新,更易于使用且更轻巧,二进制大小小于100 MB。
- RKE2是完全合规的Kubernetes发行版,专注于美国联邦*部门内的安全性和合规性。
- RancherD是用于安装Rancher的新工具,该工具自Rancher v2.5.4起可用。这是一个实验性功能。RancherD是单个二进制文件,首先启动RKE2 Kubernetes集群,然后在该集群上安装Rancher服务器Helm图表。
实验环境3台机器
172.17.3.164 dev1
172.17.3.168 dev2
172.17.3.169 dev3
既然需要HA,那么SLB需要解析到各个node上的8080
rancher有不同的安装方式,单节点的多节点的,对于HA on docker有2种
rancher 安装在k8s 上
https://rancher.com/docs/rancher/v2.5/en/installation/install-rancher-on-k8s/
rancher 安装在docker 上
https://rancher.com/docs/rancher/v2.5/en/installation/other-installation-methods/single-node-docker/
HA部署需求
- HA 节点:
- 所有安装有支持的Docker版本的现代Linux发行版RancherOS, Ubuntu, RHEL/CentOS 7 都是经过严格的测试。
- 对于 RHEL/CentOS, 默认的 storage driver, 例如 devicemapper using loopback, 并不被Docker推荐。 请参考Docker的文档去修改使用其他的storage driver。
- 对于 RHEL/CentOS, 如果你想使用 SELinux, 你需要 安装额外的 SELinux 组件
- 9345 8080 端口需要在各个节点之间能够互相访问
- 1GB内存
- 所有安装有支持的Docker版本的现代Linux发行版RancherOS, Ubuntu, RHEL/CentOS 7 都是经过严格的测试。
- MySQL数据库
- 至少 1 GB内存
- 每个Rancher Server节点需要50个连接 (例如:3个节点的Rancher则需要至少150个连接)
- MYSQL配置要求
- 选项1: 用默认COMPACT选项运行Antelope
- 选项2: 运行MySQL 5.7,使用Barracuda。默认选项ROW_FORMAT需设置成Dynamic
- 外部负载均衡服务器
- 负载均衡服务器需要能访问Rancher Server节点的 8080端口
3个节点安装docker,rundeck推送下
curl https://get.docker.com | sh
docker 各个work node需要时间同步,ntpdate下
ntpdate 0.pool.ntp.org
dev1 上安装helm3
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh
一条命令
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh
添加helm repo
helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
搜索下包验证安装,看起来没问题
helm search repo --versions
fetch最新版本
helm fetch rancher-latest/rancher
or fetch指定版本
helm fetch rancher-stable/rancher --version=v2.0.0
安装rke,其实就是一个可执行文件,下载后改名丢%PATH目录
https://github.com/rancher/rke/releases
wget https://github.com/rancher/rke/releases/download/v1.2.8/rke_linux-amd64 mv rke_linux-amd64 rke chmod +x rke $PATH cp rke /usr/bin rke --version
安装kubectl
https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/
应该是3个node都要这个命令的,rundeck下发3台主机
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
校验下文件
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256" echo "$(<kubectl.sha256) kubectl" | sha256sum --check
没问题就推送3台
安装kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl kubectl version --client
3台都应该返回kubect client信息就对了
安装包管理
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF yum install -y kubectl
配置kubectl的shell补全
yum install bash-completion -y echo "source <(kubectl completion bash)" >> ~/.bashrc
创建rancher用户
useradd rancher passwd rancher gpasswd -a rancher docker newgrp docker su rancher ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa_rancher cat ~/.ssh/id_rsa_rancher.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys ssh-copy-id 172.17.3.164 ssh-copy-id 172.17.3.168 ssh-copy-id 172.17.3.168
ssh dev1 到dev2 正常