记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。

Rancher最新版本rancher-v2.2.2的HA部署文档

 

 Rancher-v2.2.2的HA部署文档PDF版

rancher2.1版本的功能介绍:https://www.cnrancher.com/docs/rancher/v2.x/cn/overview/feature/

1,准备工作。

1,主机准备。

本次部署所用机器均为CentOS Linux release 7.6.1810 (Core)

节点名称IP安装组件
nginx192.168.111.6nginx
node1192.168.111.3etcd, docker, k8s
node2192.168.111.4etcd, docker, k8s
node3192.168.111.5etcd, docker, k8s

2,软件准备。

因为软件版本可能中有变更,所以我把这次部署的包都放在百度网盘,下载之后部署,以保证部署过程的流畅。

文中相关部署软件的命令,可做相对应的调整。

3,软件版本。

  • rancher-2.2.2
  • kubernetes-1.13.5
  • rke-v0.2.2
  • kubectl-v1.13.5
  • helm-v2.13.1
  • tiller-v2.13.1

4,架构示意。

2,初始化环境。

初始化部分,三台node机器都要操作。

1,关闭相关服务

  • 关闭防火墙
  1. systemctl stop firewalld
  2. systemctl disable firewalld
  • 关闭setlinx
  1. $ sudo setenforce 0
  2. $ grep SELINUX /etc/selinux/config
  3. SELINUX=disabled
  • 关闭swap
  1. swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

2,主机名等设置。

  • 设置永久主机名称,然后重新登录
  1. $ sudo hostnamectl set-hostname node1
  2. $ sudo hostnamectl set-hostname node2
  3. $ sudo hostnamectl set-hostname node3
  • 设置的主机名保存在 /etc/hosts 文件中
  1. $ cat > /etc/hosts << EOF
  2. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  3. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  4. 192.168.111.3 node1
  5. 192.168.111.4 node2
  6. 192.168.111.5 node3
  7. EOF

3,操作系统及kernel调优

  • 文件打开数调优。
  1. echo -e "root soft nofile 65535\nroot hard nofile 65535\n* soft nofile 65535\n* hard nofile 65535\n" >> /etc/security/limits.conf
  2. sed -i 's#4096#65535#g' /etc/security/limits.d/20-nproc.conf
  • kernel调优
  1. cat >> /etc/sysctl.conf<<EOF
  2. net.ipv4.ip_forward=1
  3. net.bridge.bridge-nf-call-iptables=1
  4. net.bridge.bridge-nf-call-ip6tables=1
  5. vm.swappiness=0
  6. vm.max_map_count=655360
  7. EOF

4,安装一些基础软件。

  1. yum -y install wget ntpdate lrzsz curl yum-utils device-mapper-persistent-data lvm2 bash-completion && ntpdate -u cn.pool.ntp.org

5,创建用户等

  • 创建用户并且添加到docker组
  1. groupadd docker
  2. useradd rancher -G docker
  3. echo "123456" | passwd --stdin rancher

这一步非常重要,如果没有操作,则后边可能会有报错等问题。

  • ssh免密登录

node1服务器上执行下面命令:

  1. su - rancher
  2. ssh-keygen
  3. ssh-copy-id rancher@192.168.111.3
  4. ssh-copy-id rancher@192.168.111.4
  5. ssh-copy-id rancher@192.168.111.5

通过授权node1主机对三台主机的免密码登陆,为后边安装k8s的步骤做好准备工作。

3,安装docker。

需要在三台主机上一起安装docker。

rke工具目前只支持docker v17.03.2,请务必保持版本一致,否则后续安装会报错。

  • 1、安装repo源:
  1. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 2,卸载旧docker版本
  1. yum remove -y docker \
  2. docker-client \
  3. docker-client-latest \
  4. docker-common \
  5. docker-latest \
  6. docker-latest-logrotate \
  7. docker-logrotate \
  8. docker-selinux \
  9. docker-engine-selinux \
  10. docker-engine \
  11. container*
  • 3、安装docker-ce-17.03.2
  1. yum -y install --setopt=obsoletes=0 docker-ce-17.03.2.ce-1.el7.centos docker-ce-selinux-17.03.2.ce-1.el7.centos
  • 4、启动docker
  1. $ systemctl enable docker
  2. $ systemctl start docker
  3. $ systemctl status docker
  • 5、添加国内加速代理,设置storage-driver
  1. cat > /etc/docker/daemon.json << EOF
  2. {
  3. "registry-mirrors": ["https://7bezldxe.mirror.aliyuncs.com/","https://kw88y6eh.mirror.aliyuncs.com"],
  4. "insecure-registries":["192.168.112.69"],
  5. "storage-driver": "overlay2",
  6. "storage-opts": [
  7. "overlay2.override_kernel_check=true"
  8. ]
  9. }
  10. EOF
  • registry-mirrors:表示公网的加速器地址,可设置多个,地址需要添加协议头(https或者http)
  • insecure-registries:表示内网的私服地址,地址不能添加协议头(http)
  • storage-driver:表示使用OverlayFS的overlay2存储驱动。

  • 6、重启docker

  1. systemctl daemon-reload
  2. systemctl restart docker

4,安装nginx。

在192.168.111.6服务器上安装nginx,用于rancher-server负载均衡。

安装nginx:

  1. sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
  2. yum install nginx -y
  3. sudo systemctl enable nginx.service

修改配置文件:vi /etc/nginx/nginx.conf

  1. user nginx;
  2. worker_processes 4;
  3. worker_rlimit_nofile 40000;
  4. events {
  5. worker_connections 8192;
  6. }
  7. http {
  8. # Gzip Settings
  9. gzip on;
  10. gzip_disable "msie6";
  11. gzip_disable "MSIE [1-6]\.(?!.*SV1)";
  12. gzip_vary on;
  13. gzip_static on;
  14. gzip_proxied any;
  15. gzip_min_length 0;
  16. gzip_comp_level 8;
  17. gzip_buffers 16 8k;
  18. gzip_http_version 1.1;
  19. gzip_types text/xml application/xml application/atom+xml application/rss+xml application/xhtml+xml image/svg+xml application/font-woff text/javascript application/javascript application/x-javascript text/x-json application/json application/x-web-app-manifest+json text/css text/plain text/x-component font/opentype application/x-font-ttf application/vnd.ms-fontobjectfont/woff2 image/x-icon image/png image/jpeg;
  20. server {
  21. listen 80;
  22. return 301 https://$host$request_uri;
  23. }
  24. }
  25. stream {
  26. upstream rancher_servers {
  27. least_conn;
  28. server 192.168.111.3:443 max_fails=3 fail_timeout=5s;
  29. server 192.168.111.4:443 max_fails=3 fail_timeout=5s;
  30. server 192.168.111.5:443 max_fails=3 fail_timeout=5s;
  31. }
  32. server {
  33. listen 443;
  34. proxy_pass rancher_servers;
  35. }
  36. }

启动nginx:

  1. sudo systemctl restart nginx.service

5,Rancher集群部署

1,安装必要工具

以下操作只需在192.168.111.3这一台上操作即可。

  • 安装rke:
  1. su root
  2. wget https://www.cnrancher.com/download/rke/rke_linux-amd64
  3. chmod +x rke_linux-amd64
  4. mv rke_linux-amd64 /usr/bin/rke
  • 安装kubectl:
  1. wget https://www.cnrancher.com/download/kubectl/kubectl_amd64-linux
  2. chmod +x kubectl_amd64-linux
  3. mv kubectl_amd64-linux /usr/bin/kubectl
  • 安装helm:
  1. wget https://www.cnrancher.com/download/helm/helm-linux.tar.gz
  2. tar xf helm-linux.tar.gz
  3. mv linux-amd64/helm /usr/bin/helm
  4. mv linux-amd64/tiller /usr/bin/tiller
  5. rm -rf helm-linux.tar.gz linux-amd64/

其它工具下载地址:https://www.cnrancher.com/docs/rancher/v2.x/cn/install-prepare/download/

2,安装k8s

  • 1、切换到rancher用户
  1. su - rancher

注意:必须使用普通用户操作,否则后边的操作会报下边的错:

  1. Please check if the configured user can execute `docker ps` on the node, and if the SSH server version is at least version 6.7 or higher. If youare using RedHat/CentOS, you can't use the user `root`. Please refer to the documentation for more instructions. Error: ssh: rejected: administratively prohibited (open failed)
  • 2、创建rancher集群配置文件:
  1. cat > rancher-cluster.yml << EOF
  2. nodes:
  3. - address: 192.168.111.3
  4. user: rancher
  5. role: [controlplane,worker,etcd]
  6. - address: 192.168.111.4
  7. user: rancher
  8. role: [controlplane,worker,etcd]
  9. - address: 192.168.111.5
  10. user: rancher
  11. role: [controlplane,worker,etcd]
  12. services:
  13. etcd:
  14. snapshot: true
  15. creation: 6h
  16. retention: 24h
  17. EOF
  1. address:公共域名或IP地址
  2. user:可以运行docker命令的用户,需要是普通用户。
  3. role:分配给节点的Kubernetes角色列表
  4. ssh_key_path:用于对节点进行身份验证的SSH私钥的路径(默认为~/.ssh/id_rsa)
  • 3、启动集群
  1. $ rke up --config ./rancher-cluster.yml

如果这一步报错下边的内容:

  1. if the SSH server version is at least version 6.7 or higher. If you are using RedHat/CentOS, you can't use the user `root`. Please refer to the documentation for more instructions

则可能是系统的openssh版本太低,只需执行如下命令升级即可:

  1. [rancher@localhost ~]$ ssh -V
  2. OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013 #低于上边要求的6.7
  3. [rancher@localhost ~]$ exit
  4. [root@localhost ~]$ yum -y update openssh
  5. [root@localhost ~]$ssh -V
  6. OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017

然后再切回rancher用户执行安装即可!

完成后,它应显示:Finished building Kubernetes cluster successfully。
并且已经创建了一个文件kube_config_rancher-cluster.yml。这个文件包含kubectl和helm访问K8S的凭据。

  • 4、配置环境变量:

切换到root用户

  1. su - root
  2. vi /etc/profile
  3. export KUBECONFIG=/home/rancher/kube_config_rancher-cluster.yml

保存,并执行:

  1. source /etc/profile

保存kube_config_rancher-cluster.ymlrancher-cluster.yml文件的副本,后期维护和升级Rancher实例时将会用到。

  • 5、通过kubectl测试您的连接,并查看您的所有节点是否处于Ready状态

先配置一下kubectl的命令补全功能。

  1. $ echo "source <(kubectl completion bash)" >> ~/.bashrc
  2. $ source ~/.bashrc
  3. $ su - rancher
  4. $ echo "source <(kubectl completion bash)" >> ~/.bashrc
  5. $ source ~/.bashrc

然后查看节点状态。

  1. [root@node1 ~]$ su - rancher
  2. [rancher@node1 ~]$ kubectl get node
  3. NAME STATUS ROLES AGE VERSION
  4. 192.168.111.3 Ready controlplane,etcd,worker 10m v1.13.5
  5. 192.168.111.4 Ready controlplane,etcd,worker 10m v1.13.5
  6. 192.168.111.5 Ready controlplane,etcd,worker 10m v1.13.5

由于需要联网下载docker镜像文件,所以需要一段时间才能安装好,10-30分钟左右。

  • 6、检查集群Pod的运行状况
  1. [rancher@node1 ~]$ kubectl get pods --all-namespaces
  2. NAMESPACE NAME READY STATUS RESTARTS AGE
  3. ingress-nginx default-http-backend-78fccfc5d9-j8v5h 1/1 Running 0 9m45s
  4. ingress-nginx nginx-ingress-controller-cpb9t 1/1 Running 0 9m16s
  5. ingress-nginx nginx-ingress-controller-fzcdl 1/1 Running 0 9m16s
  6. ingress-nginx nginx-ingress-controller-n2f5b 1/1 Running 0 9m36s
  7. kube-system canal-9vzxn 2/2 Running 0 9m59s
  8. kube-system canal-p8t59 2/2 Running 0 9m59s
  9. kube-system canal-v8nhz 2/2 Running 0 9m59s
  10. kube-system kube-dns-58bd5b8dd7-dp8nk 3/3 Running 0 9m55s
  11. kube-system kube-dns-autoscaler-77bc5fd84-t2jht 1/1 Running 0 9m54s
  12. kube-system metrics-server-58bd5dd8d7-pr6nh 1/1 Running 0 9m50s
  13. kube-system rke-ingress-controller-deploy-job-qh82s 0/1 Completed 0 9m46s
  14. kube-system rke-kube-dns-addon-deploy-job-g95sp 0/1 Completed 0 9m56s
  15. kube-system rke-metrics-addon-deploy-job-mmk57 0/1 Completed 0 9m51s
  16. kube-system rke-network-plugin-deploy-job-b75ds 0/1 Completed 0 10m

保存kube_config_rancher-cluster.yml和rancher-cluster.yml文件的副本,以后将需要这些文件来维护和升级Rancher实例。

3,Helm

Helm有两个部分:Helm客户端(helm)和Helm服务端(Tiller)。

使用Helm在集群上安装tiller服务以管理charts,由于RKE默认启用RBAC, 因此我们需要使用kubectl来创建一个serviceaccount,clusterrolebinding才能让tiller具有部署到集群的权限。

  • 1、在kube-system命名空间中创建ServiceAccount:
  1. kubectl -n kube-system create serviceaccount tiller
  • 2、创建ClusterRoleBinding以授予tiller帐户对集群的访问权限:
  1. kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
  • 3、安装Helm Server(Tiller)
  1. helm init --service-account tiller --tiller-image registry.cn-hangzhou.aliyuncs.com/eryajf/tiller:v2.13.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
  • 4、安装Tiller金丝雀版本
  1. helm init --service-account tiller --canary-image

需要修改成国内镜像(可能需要delete再重新init)

  1. kubectl --namespace=kube-system set image deployments/tiller-deploy tiller=registry.cn-hangzhou.aliyuncs.com/eryajf/tiller:v2.13.1

4,helm安装rancher

1,添加Chart仓库地址

使用helm repo add命令添加Rancher chart仓库地址,访问Rancher tag和Chart版本
替换为您要使用的Helm仓库分支(即latest或stable)。

  1. helm repo add rancher-stable https://releases.rancher.com/server-charts/stable

2,安装证书管理器

  • 1、只有Rancher自动生成的证书和LetsEncrypt颁发的证书才需要cert-manager。如果是你自己的证书,可使用ingress.tls.source=secret参数指定证书,并跳过此步骤。
  1. helm install stable/cert-manager \
  2. --name cert-manager \
  3. --namespace kube-system
  • 2、Rancher自动生成证书

默认情况下,Rancher会自动生成CA根证书并使用cert-manager颁发证书以访问Rancher server界面。

唯一的要求是将hostname配置为访问Rancher的域名地址,使用这种SSL证书配置方式需提前安装证书管理器。

  1. helm install rancher-stable/rancher \
  2. --name rancher \
  3. --namespace cattle-system \
  4. --set hostname=rancher.com

rancher.com就是后面访问rancher的域名,需要在/etc/hosts文件中添加关联(所有主机):

  1. [root@node1 ~]$ echo "192.168.111.6 rancher.com" >> /etc/hosts
  2. [root@node2 ~]$ echo "192.168.111.6 rancher.com" >> /etc/hosts
  3. [root@node3 ~]$ echo "192.168.111.6 rancher.com" >> /etc/hosts
  4. [root@nginx ~]$ echo "192.168.111.6 rancher.com" >> /etc/hosts

由于我们通过hosts文件来添加映射,所以需要为Agent Pod添加主机别名(/etc/hosts):

  1. kubectl -n cattle-system patch deployments cattle-cluster-agent --patch '{
  2. "spec": {
  3. "template": {
  4. "spec": {
  5. "hostAliases": [
  6. {
  7. "hostnames":
  8. [
  9. "rancher.com"
  10. ],
  11. "ip": "192.168.111.6"
  12. }
  13. ]
  14. }
  15. }
  16. }
  17. }'

这一步如果马上执行,可能会报错:Error from server (NotFound): deployments.extensions "cattle-cluster-agent" not found,这个deployment是上一步install时创建的,比较慢,耐心等待一下,这个时候也可以先跳过这里,去到后边,简单配置一下,访问一下rancher的界面。

  1. kubectl -n cattle-system patch daemonsets cattle-node-agent --patch '{
  2. "spec": {
  3. "template": {
  4. "spec": {
  5. "hostAliases": [
  6. {
  7. "hostnames":
  8. [
  9. "rancher.com"
  10. ],
  11. "ip": "192.168.111.6"
  12. }
  13. ]
  14. }
  15. }
  16. }
  17. }'

5,登录rancher管理端

  • 1、同样将刚刚的域名映射关系写入到Windows主机的hosts文件。
  1. 192.168.111.6 rancher.com
  • 2、使用域名访问https://rancher.com

输入:admin/admin,进入首页界面。

刚进入,会看到一个问题。

报这个问题的原因就是刚刚创建的cattle-cluster-agent还没有被创建成功,同样耐心等待即可。这个时候可以随便点点看看先。这个过程与自己的网络有关,这时也可以在node1主机上,通过如下命令进行一个监控。

  1. [rancher@node1 ~]$ kubectl get -n cattle-system pod -w
  2. NAME READY STATUS RESTARTS AGE
  3. rancher-bdf49fb9-7qhgp 1/1 Running 1 12m
  4. rancher-bdf49fb9-hf6tm 1/1 Running 0 12m
  5. rancher-bdf49fb9-xmbv7 1/1 Running 1 12m
  6. cattle-cluster-agent-7b54db4bc8-r4blg 0/1 Pending 0 0s
  7. cattle-cluster-agent-7b54db4bc8-r4blg 0/1 Pending 0 0s
  8. cattle-cluster-agent-7b54db4bc8-r4blg 0/1 ContainerCreating 0 0s
  9. cattle-node-agent-mskmb 0/1 Pending 0 0s
  10. cattle-node-agent-2cmww 0/1 Pending 0 0s
  11. cattle-node-agent-kkpvn 0/1 Pending 0 0s
  12. cattle-node-agent-mskmb 0/1 ContainerCreating 0 0s
  13. cattle-node-agent-kkpvn 0/1 ContainerCreating 0 0s
  14. cattle-node-agent-2cmww 0/1 ContainerCreating 0 0s

在我这里,等了十分钟左右,才开始正式的部署。这个时候,可以返回到上边,将那两条命令导入进去。

操作之后,然后再看rancher,就不会报连接问题了。

到这里,基本上安装步骤也就完成了,可以随便点点看看界面里边的各项功能什么的。

最后再来个整体界面的定妆照:


weinxin
扫码订阅本站,第一时间获得更新
微信扫描二维码,订阅我们网站的动态,另外不定时发送WordPress小技巧,你可以随时退订,欢迎订阅哦~

二丫讲梵 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明<六>Rancher最新版本rancher-v2.2.2的HA部署文档


转载请标明出处【Rancher最新版本rancher-v2.2.2的HA部署文档】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论