二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • 最佳实践

  • 迎刃而解

  • Nginx

  • Php

  • Zabbix

  • AWS

  • Prometheus

  • Grafana

  • Loki

  • CentOS

  • Supervisord

  • Systemd

  • Docker

  • Docker-Compose

  • Rancher

    • rancher-2-1-6的ha版本部署记录
    • rancher-2-1-6的ha版本部署记录
      • 6,参考。
    • 关于rancher集群的高可用的实验
    • 关于rancher中部署应用的高可用的实验
    • 关于rancher-ha集群备份恢复试验
    • rancher-v2-2-2的HA部署文档
    • Rancher-2-2-2学习笔记-rancher-cli的使用
    • 基于Rancher-2-2-2的hpa实验
    • Rancher-2-2-2之Jenkins+rancher+harbor+Gitlab部署应用到生产
    • 使用docker快速部署rancher-2.8.5并投入生产实践
    • rancher如何重新注册托管集群
  • Ansible

  • OpenLdap

  • GitLab

  • GitHub

  • Etcd

  • Consul

  • RabbitMQ

  • Kafka

  • Mysql

  • MongoDB

  • OpenVPN

  • Kvm

  • VMware

  • 配置文件详解

  • Other

  • 运维观止
  • Rancher
二丫讲梵
2019-03-06
目录

rancher-2-1-6的ha版本部署记录

文章发布较早,内容可能过时,阅读注意甄别。

# 1,安装 k8s

  • 1、切换到 rancher 用户
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)
1
  • 2、创建 rancher 集群配置文件:
cat > rancher-cluster.yml << EOF
nodes:
  - address: 192.168.10.3
    user: rancher
    role: [controlplane,worker,etcd]
  - address: 192.168.10.4
    user: rancher
    role: [controlplane,worker,etcd]
  - address: 192.168.10.5
    user: rancher
    role: [controlplane,worker,etcd]
services:
  etcd:
    snapshot: true
    creation: 6h
    retention: 24h
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    1. address:公共域名或 IP 地址
    2. user:可以运行 docker 命令的用户,需要是普通用户。
    3. role:分配给节点的 Kubernetes 角色列表
    4. ssh_key_path:用于对节点进行身份验证的 SSH 私钥的路径(默认为~/.ssh/id_rsa)
  • 3、启动集群

$ 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
1

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

[rancher@localhost ~]$ ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013  #低于上边要求的6.7

[rancher@localhost ~]$ exit

[root@localhost ~]$ yum -y update openssh

[root@localhost ~]$ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017
1
2
3
4
5
6
7
8
9

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

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

  • 4、配置环境变量:
su - root
vi /etc/profile
export KUBECONFIG=/home/rancher/kube_config_rancher-cluster.yml
1
2
3

保存,并执行:

source /etc/profile
1

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

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

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

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

然后查看节点状态。

[root@node1 ~]$ su - rancher
[rancher@node1 ~]$ kubectl get nodes
NAME            STATUS   ROLES                      AGE   VERSION
192.168.10.3   Ready    controlplane,etcd,worker   1m    v1.11.6
192.168.10.4   Ready    controlplane,etcd,worker   1m    v1.11.6
192.168.10.5   Ready    controlplane,etcd,worker   1m    v1.11.6
1
2
3
4
5
6

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

  • 6、检查集群 Pod 的运行状况
[rancher@node1 ~]$ kubectl get pods --all-namespaces
NAMESPACE       NAME                                      READY   STATUS      RESTARTS   AGE
ingress-nginx   default-http-backend-797c5bc547-nnqzt     1/1     Running     0          1m
ingress-nginx   nginx-ingress-controller-mn9jl            1/1     Running     0          1m
ingress-nginx   nginx-ingress-controller-rrm8z            1/1     Running     0          1m
ingress-nginx   nginx-ingress-controller-vt8lx            1/1     Running     0          1m
kube-system     canal-9r7jt                               3/3     Running     0          1m
kube-system     canal-b86n6                               3/3     Running     0          1m
kube-system     canal-lqk8g                               3/3     Running     0          1m
kube-system     kube-dns-7588d5b5f5-dnqk7                 3/3     Running     0          1m
kube-system     kube-dns-autoscaler-5db9bbb766-cfqcg      1/1     Running     0          1m
kube-system     metrics-server-97bc649d5-lkn57            1/1     Running     0          1m
kube-system     rke-ingress-controller-deploy-job-s5ss8   0/1     Completed   0          1m
kube-system     rke-kubedns-addon-deploy-job-p2hjb        0/1     Completed   0          1m
kube-system     rke-metrics-addon-deploy-job-fqvfm        0/1     Completed   0          1m
kube-system     rke-network-plugin-deploy-job-7zr8v       0/1     Completed   0          1m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

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

# 2,Helm

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

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

1、在 kube-system 命名空间中创建 ServiceAccount:

kubectl -n kube-system create serviceaccount tiller
1

2、创建 ClusterRoleBinding 以授予 tiller 帐户对集群的访问权限:

kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
1

3、安装 Helm Server(Tiller)

helm init --service-account tiller   --tiller-image registry.cn-hangzhou.aliyuncs.com/eryajf/tiller:v2.12.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
1

4、安装 Tiller 金丝雀版本

helm init --service-account tiller --canary-image
1

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

export TILLER_TAG=v2.12.0
kubectl --namespace=kube-system set image deployments/tiller-deploy tiller=hongxiaolu/tiller:$TILLER_TAG
1
2

# 3,helm 安装 rancher

1,添加 Chart 仓库地址

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

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

2,安装证书管理器(可选) (opens new window)

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

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

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

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

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

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

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

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

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

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

# 4,登录 rancher 管理端

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

image

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

刚进入,会看到一个问题,Waiting for server-url setting to be set。

image

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

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

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

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

image

# 5,安装 rancher-cli

  • 1、下载 rancher-cli 工具

可以通过首页右下角的下载 cli 进行下载,这里直接通过命令方式进行下载。通过这个友好的 cli,我们可以完成很多自动化的事情,包括后续的 CI/CD 也将依赖它来完成。

所以我下边的试验干脆就在上边准备的 nginx 主机上进行,后续的 Jenkins 也在这里进行。

[root@nginx ~]$ wget https://releases.rancher.com/cli2/v2.0.6/rancher-linux-amd64-v2.0.6.tar.gz
[root@nginx ~]$ tar zxvf rancher-linux-amd64-v2.0.6.tar.gz
1
2
  • 2、配置变量
mv rancher-v2.0.6/rancher /usr/bin/rancher
rm -rf rancher-v2.0.6/
1
2
  • 3、测试登录

新建用户获取 tonken:

image

创建一个永不过期的 token,以用于验证使用。

image

使用如下命令进行登陆:

[root@nginx ~]$ rancher login https://rancher.com/v3 --token token-fkgj6:gd2z99wnfgc2zw9pw969rppgbnrfwg7l59l4gccqp5wmdc6vd27r5l
1

注意,还需要安装 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
1

所以需要安装才行,怎样安装,可参考上边的操作。

随便执行一下命令验证一下。

[root@nginx ~]$ rancher kubectl get node
NAME            STATUS   ROLES                      AGE   VERSION
192.168.10.3   Ready    controlplane,etcd,worker   32m   v1.11.6
192.168.10.4   Ready    controlplane,etcd,worker   32m   v1.11.6
192.168.10.5   Ready    controlplane,etcd,worker   32m   v1.11.6
1
2
3
4
5

借此机会来个安装应用的定妆照!

[root@nginx ~]$rancher kubectl get pod --all-namespaces
NAMESPACE       NAME                                        READY   STATUS      RESTARTSAGE
cattle-system   cattle-cluster-agent-5c9d5cbb87-nlf8x       1/1     Running     016m
cattle-system   cattle-node-agent-6ncnb                     1/1     Running     016m
cattle-system   cattle-node-agent-cdpww                     1/1     Running     016m
cattle-system   cattle-node-agent-l48m8                     1/1     Running     016m
cattle-system   rancher-bdf49fb9-7qhgp                      1/1     Running     131m
cattle-system   rancher-bdf49fb9-hf6tm                      1/1     Running     031m
cattle-system   rancher-bdf49fb9-xmbv7                      1/1     Running     131m
ingress-nginx   default-http-backend-797c5bc547-nnqzt       1/1     Running     034m
ingress-nginx   nginx-ingress-controller-mn9jl              1/1     Running     034m
ingress-nginx   nginx-ingress-controller-rrm8z              1/1     Running     034m
ingress-nginx   nginx-ingress-controller-vt8lx              1/1     Running     034m
kube-system     canal-9r7jt                                 3/3     Running     034m
kube-system     canal-b86n6                                 3/3     Running     034m
kube-system     canal-lqk8g                                 3/3     Running     034m
kube-system     cert-manager-cert-manager-8f55cc84b-z84kw   2/2     Running     031m
kube-system     kube-dns-7588d5b5f5-dnqk7                   3/3     Running     034m
kube-system     kube-dns-autoscaler-5db9bbb766-cfqcg        1/1     Running     034m
kube-system     metrics-server-97bc649d5-lkn57              1/1     Running     034m
kube-system     rke-ingress-controller-deploy-job-s5ss8     0/1     Completed   034m
kube-system     rke-kubedns-addon-deploy-job-p2hjb          0/1     Completed   034m
kube-system     rke-metrics-addon-deploy-job-fqvfm          0/1     Completed   034m
kube-system     rke-network-plugin-deploy-job-7zr8v         0/1     Completed   034m
kube-system     tiller-deploy-8cb5b5f5c-qzk5z               1/1     Running     032m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

OK,看到能够这样执行命令,就可以了,后边的流水线工作就不用发愁了。

# 6,参考。

http://uee.me/aMRVU http://uee.me/aMRVT

微信 支付宝
#k8s#rancher
上次更新: 2024/07/04, 22:40:37
rancher-2-1-6的ha版本部署记录
关于rancher集群的高可用的实验

← rancher-2-1-6的ha版本部署记录 关于rancher集群的高可用的实验→

最近更新
01
学习周刊-总第213期-2025年第22周
05-29
02
学习周刊-总第212期-2025年第21周
05-22
03
从赵心童世锦赛夺冠聊聊我的斯诺克情缘
05-16
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式