服务器准备:三台虚拟机(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.repoyum -y install docker-ce-18.06.1.ce-3.el7systemctl 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
EOFyum 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_profilesource ~/.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-managerNAME                                      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/rancherWaiting 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 rancherNAME      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 学习。感谢网上的众多大佬分享经验!

文档中所有内容,官网中均可找到!

RKE安装部署K8S集群、Rancher相关推荐

  1. centos7.8 安装部署 k8s 集群

    centos7.8 安装部署 k8s 集群 文章目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 k ...

  2. k8s ubuntu cni_手把手教你使用RKE快速部署K8S集群并部署Rancher HA

    作者:杨紫熹 原文链接: https://fs.tn/post/PmaL-uIiQ/ RKE全称为Rancher Kubernetes Engine,是一款经过CNCF认证的开源Kubernetes发 ...

  3. 如何通过rancher部署k8s集群

    目录 1 安装前准备 2 安装rancher 3 配置Rancher 4 创建k8s集群 最近的工作中需要使用到K8S,而面临的第一个问题就是如何部署一个K8S集群环境.现有多种部署方式,如:kube ...

  4. 【02】Kubernets:使用 kubeadm 部署 K8S 集群

    写在前面的话 通过上一节,知道了 K8S 有 Master / Node 组成,但是具体怎么个组成法,就是这一节具体谈的内容.概念性的东西我们会尽量以实验的形式将其复现. 部署 K8S 集群 互联网常 ...

  5. 阿里云-ECS云服务器跨地域部署k8s集群

    阿里云-ECS云服务器跨地域部署k8s集群 一 .背景介绍 二.环境准备 2.1 ECS云服务资源清单 2.2 K8s软件列表 三.阿里云ECS服务器网络问题 3.1 问题阐述 3.2 解决方案 四. ...

  6. kubeadm部署K8S集群并使用containerd做容器运行时

    kubeadm部署K8S集群并使用containerd做容器运行时(内容全部实战验证有任何问题欢迎留言咨询讨论) 前言 去年12月份,当Kubernetes社区宣布1.20版本之后会逐步弃用docke ...

  7. kubeadm部署k8s集群

    1.准备环境 虚拟机操作系统: Centos7 角色                IP Master        192.168.150.140 Node1        192.168.150. ...

  8. linux上部署K8S集群

    部署K8S集群 服务器硬件要求:三台虚拟机服务器,操作系统都为centos: ​ 硬盘最低配置:内存2GB,CPU2核,硬盘30GB. 准备环境 master 192.168.200.110 node ...

  9. 阿里云部署k8s集群

    ​ 阿里云部署k8s集群 前言 1.k8集群架构 Kubernetes Cluster = N Master Node + N Worker Node:N主节点+N工作节点: N>=1 2.机器 ...

最新文章

  1. Spark UDF变长参数的二三事儿
  2. LeetCode 292. Nim Game
  3. python即时标记_【Python】读书笔记:Python基础教程-项目1-即时标记
  4. Word2Vec训练同义词模型
  5. 轻量小巧的Knife4j v2.0.8源码
  6. DS8100存储系统安装配置之个人总作篇
  7. Android安全:So分析
  8. Ubuntu16.04安装VirtualBox及无法启动的解决办法
  9. Github新手之路(全过程)(站在前辈的肩膀上的总结)
  10. 关于MAPGIS文件转CAD文件的问题处理
  11. 英文单词缩写规则(转自天涯)
  12. 磁盘管理关于磁盘的概念
  13. 扒一扒流量攻击那些事
  14. 牛人自制相机全过程(附:电路图)
  15. getWindow().getDecorView().setSystemUiVisibility(...)设置状态栏属性
  16. 日语五十音图表 日语学习
  17. 网络服务(4)——以太网配置IP、网关
  18. 与信号压缩斗到底:光纤VPM技术解4K 60Hz传输架构与带宽之痛
  19. Data alignment
  20. 使用uniapp+unicloud部署微信小程序

热门文章

  1. 三星中国的2018:全球手机一哥的蓄势待发
  2. 实验一 电路原理图的绘制
  3. Centos 安装 OpenLDAP
  4. C++编译器符号表有哪些内容?
  5. IT大数据年薪30万—互联网行业最受追捧,你想要这样的生活吗?
  6. 优化问题---凸优化基本概念
  7. 计算机硬件的选购与组装实验报告,计算机硬件的组装实验报告 (精选可编辑)...
  8. 连接计算机的恰当方法,要组建一个拥有20台计算机联网的电子阅览室,连接这些计算机的恰当方法是...
  9. Invoking “make -j12 -l12“ failed
  10. 解决微信小程序新版本覆盖 更新慢的问题