Rancher 是为使用容器的公司打造的容器管理平台。Rancher 简化了使用 Kubernetes 的流程,开发者可以随处运行 Kubernetes(Run Kubernetes Everywhere),满足 IT 需求规范,赋能 DevOps 团队。
rancher1.x 支持docker compose、swarm、kubernates等集成,镜像名为rancher/server。
rancher2.15支持kubernates,镜像名为rancher/rancher。
中文官网
官方文档
当前stable版为2.4.8,latest为2.5.1,建议使用stable版。
OS & Docker
TYPE | VERSION | VALIDATED/CERTIFIED ON1 |
---|---|---|
CentOS | 7.5, 7.6, 7.7, 7.8 | Docker 17.03.2, 18.06.2, 18.09.x, 19.03.x |
Oracle Linux | 7.6, 7.7 | Docker 19.03.x |
RancherOS | 1.5.6 | Docker 17.03.2, 18.06.2, 18.09.x (up to 18.09.8), 19.03.x |
RHEL | 7.5, 7.6, 7.7, 7.8 | RHEL Docker 1.13.x Docker 17.03.2, 18.06.2, 18.09.x, 19.03.x |
SLES | 12 SP5, 15 SP1 | Docker 19.03.x |
Ubuntu | 16.04, 18.04, 20.04 | Docker 17.03.2, 18.06.2, 18.09.x, 19.03.x |
Windows Server | 1809, 1903 | Docker 19.03.x EE For worker nodes only |
Rancher Kubernetes
TYPE | UPSTREAM VERSION | VALIDATED/CERTIFIED ON2,3,4,5 |
---|---|---|
Rancher Launched | 1.18.6 | etcd: v3.4.3 flannel: v0.12.0 canal: v3.13.4 nginx-ingress-controller: 0.32.0 |
Rancher Launched | 1.17.9 | etcd: v3.4.3 flannel: v0.12.0 canal: v3.13.4 nginx-ingress-controller: 0.32.0 |
Rancher Launched | 1.16.13 | etcd: v3.3.15 flannel: v0.12.0 canal: v3.13.4 nginx-ingress-controller: 0.32.0 |
Rancher Launched | 1.15.12 | etcd: v3.3.10 flannel: v0.12.0 canal: v3.13.4 nginx-ingress-controller: 0.32.0 |
本次选用:CentOS 7.8、Docker 19.03.12、RKE默认
机器准备 | 硬件需求 | 角色 |
---|---|---|
rancher | 2C、2G | rancher/rancher:stable |
k8s-master | 4C、8G | rancher/rancher-agent:v2.4.8、Etcd、Controller Manager、Scheduler、Worker、业务service |
k8s-node | 4C、8G | rancher/rancher-agent:v2.4.8、Worker、业务service |
注意:rancher不要作为k8s集群的worker节点,避免rancher和nginx-ingress-controller端口冲突(均是80和443端口)。
docker安装
**备注:**docker镜像源推荐使用网易163的镜像。
# 设置hostname
hostname rancher && hostnamectl set-hostname rancher
mkdir -p /home/rancher/rancher
mkdir -p /home/rancher/auditlog
docker run -d --privileged --restart=unless-stopped -p 80:80 -p 443:443 -v /home/rancher/rancher:/var/lib/rancher -v /home/rancher/auditlog:/var/log/auditlog --name rancher rancher/rancher:stable
# 防火墙设置
firewall-cmd --add-port 80/tcp --permanent
firewall-cmd --add-port 443/tcp --permanent
firewall-cmd --reload
# 或者
systemctl stop firewalld && systemctl disable firewalld
访问地址: https://192.168.1.222/
设置密码: admin/admin
设置语言: 右下角English改为“简体中文”
参考:
Rancher入门示例
注意:
1.构建k8s过程中会自动拉取docker镜像,比较耗时,根据网速情况,一般需要10分钟左右。
2.若网络正常的情况下,一直失败,查看错误日志。
例如:本人建立K8S机器过程中,一直失败提示etcd健康检查失败,查看日志发现,证书验证未通过!
解决办法:删除test集群,重新建立test集群。
# 查看日志
docker logs --since 120s etcd
参照“Rancher入门示例”。
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
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 kubectl
# 支持windows、linux、MacOS
wget https://releases.rancher.com/cli2/v2.4.6/rancher-linux-amd64-v2.4.6.tar.gz
tar -zxvf rancher-linux-amd64-v2.4.6.tar.gz
mv rancher-v2.4.6/rancher /usr/bin/rancher
rm -rf rancher-v2.4.6/
rancher login https://chain1/v3 --token token-m7zhb:crd5zfxvwfj4bkz66kncsml7g5z7cgsbz86bzx6hdflnwfbt2t6vk7
# 测试命令
rancher kubectl get node
注意:
若测试机器未安装kubectl,会提示如下错误!
FATA[0000] kubectl is required to be set in your path to use this command. See https://kubernetes.io/docs/tasks/tools/install-kubectl/ for more info. Error: exec: "kubectl": executable file not found in $PATH
参照:
rancher-cli的使用
我们知道 Kubernetes 支持 4 层和 7 层负载均衡策略,其中 4 层负载均衡(或外部负载均衡)支持转发 HTTP、TCP 请求到 Nodeports 上去,7 层负载均衡(或 Ingress Controller)支持根据 Host、Path 的负载均衡以及 SSL 终端,因为它只支持转发 HTTP 和 HTTPS 的请求,所以它需要监听 80 和 443 端口。4 层和 7 层负载均衡策略在 EKS、GKE、AKS 以及 RKE 在各个云平台的支持情况,参照下表。
部署集群 | 4 层负载均衡支持 | 7 层负载均衡支持 |
---|---|---|
Amazon EKS | AWS cloud 提供支持 | AWS cloud 提供支持 |
Google GKE | GCE cloud 提供支持 | GKE cloud 提供支持 |
Azure AKS | Azure cloud 提供支持 | 不支持 |
RKE on EC2 | AWS cloud 提供支持 | Nginx Ingress Controller |
RKE on DigitalOcean | 不支持 | Nginx Ingress Controller |
RKE on vSphere | 不支持 | Nginx Ingress Controller |
RKE on Custom Hosts | 不支持 | Nginx Ingress Controller |
注意: RKE 集群部署 7 层负载均衡底层默认支持 Nginx Ingress Controller 类型。
# 由于未申请购买域名,临时修改hosts文件(位置C:\Windows\System32\drivers\etc\hosts)演示
# 追加以下内容
192.168.1.220 mynginx.example.com mytomcat.example.com
说明:不同域名解析到同一IP上的不同应用。(允许)
参考:
Nginx学习—用不同域名访问同一台机器的不同项目
# 启用后端重写
nginx.ingress.kubernetes.io/rewrite-target=/
参考:
Rancher Ingress 负载均衡配置