安装rke前准备

1.禁用所有 woker 节点上的交换功能(Swap)

swapoff -a

2.检查下列模组是否存在-所有节点

for module in br_netfilter ip6_udp_tunnel ip_set ip_set_hash_ip ip_set_hash_net iptable_filter iptable_nat iptable_mangle iptable_raw nf_conntrack_netlink nf_conntrack nf_conntrack_ipv4   nf_defrag_ipv4 nf_nat nf_nat_ipv4 nf_nat_masquerade_ipv4 nfnetlink udp_tunnel veth vxlan x_tables xt_addrtype xt_conntrack xt_comment xt_mark xt_multiport xt_nat xt_recent xt_set  xt_statistic xt_tcpudp;
    do
      if ! lsmod | grep -q $module; then
        echo "module $module is not present";
      fi;
    done

3.修改sysctl配置-所有节点

vi /etc/sysctl.conf
## 加入如下
net.bridge.bridge-nf-call-iptables=1
## 重新加载配置
sysctl -p /etc/sysctl.conf

4.创建用户-所有节点

# 创建用户
useradd rkeuser
# 给用户设置密码
passwd rkeuser

5.将用户添加到docker组

usermod -aG docker rkeuser

6.配置免密登录-master节点

# 生成公钥-私钥对
ssh-keygen  -t rsa -C 'dev@mldong.com'
# 将master节点的公钥复制到所有节点(包括自身)-使得新建的rkeuser用户
ssh-copy-id rkeuser@192.168.0.245
ssh-copy-id rkeuser@192.168.0.54
ssh-copy-id rkeuser@192.168.0.22

7.验证rkeuser是否有docker命令权限

# 登录
ssh rkeuser@192.168.0.245
# 执行docker命令
docker ps

8.端口要求

开放6443-KubeAPI和2379-etcd
9.SSH server配置

vi /etc/ssh/sshd_config

## 允许TCP转发
AllowTcpForwarding yes

安装介绍

1.下载rke二进制包-master

https://github.com/rancher/rke/releases

wget https://github.com/rancher/rke/releases/download/v1.2.4-rc9/rke_linux-amd64

2.修改文件名并执行运行权限

mv rke_linux-amd64 /usr/local/bin/rke
chmod +x /usr/local/bin/rke

3.查看版本号

[root@mldong01 download]# rke --version
rke version v1.2.4-rc9

4.使用rke生成配置文件

rke config --name cluster.yml

也可以使用下面的样例文件

nodes:
- address: 192.168.0.245
  port: "22"
  internal_address: 192.168.0.245
  role:
  - controlplane
  - worker
  - etcd
  hostname_override: "mldong01"
  user: rkeuser
  ssh_key_path: ~/.ssh/id_rsa
  ssh_agent_auth: true
  labels: {}
  taints: []
- address: 192.168.0.54
  port: "22"
  internal_address: 192.168.0.54
  role:
  - worker
  hostname_override: "mldong02"
  user: rkeuser
  ssh_key_path: ~/.ssh/id_rsa
  ssh_agent_auth: true
  labels: {}
  taints: []
- address: 192.168.0.22
  port: "22"
  internal_address: 192.168.0.22
  role:
  - worker
  hostname_override: "mldong03"
  user: rkeuser
  ssh_key_path: ~/.ssh/id_rsa
  ssh_agent_auth: true
  labels: {}
  taints: []
kubernetes_version: "v1.19.6-rancher1-1"
cluster_name: "mldong-k8s"

主要参数说明:

nodes[].address:对外ip

nodes[].port:ssh端口号

nodes[].internal_address:内网ip

nodes[].role:节点角色,数组,三个选项[controlplane,worker,etcd]

nodes[].hostname_override:虚拟域名

nodes[].user:ssh用户名

nodes[].ssh_key_path:ssh私钥

nodes[].ssh_agent_auth:启用ssh认证

kubernetes_version:k8s版本,可以使用命令查看支持版本rke config –list-version –all

cluster_name:集群名称

5.开始执行安装

rke up --config cluster.yml

image

安装过程需要下载镜像,时间比较久,请耐心等待

image.png

6.安装成功后会生成相关文件

  • cluster.yml:RKE 集群的配置文件。
  • kube_config_cluster.yml:该集群的包含了获取该集群所有权限的认证凭据。
  • cluster.rkestate:Kubernetes 集群状态文件,包含了获取该集群所有权限的认证凭据,使用 RKE v0.2.0 时才会创建这个文件。

7.验证安装

复制kubeconfig文件

scp kube_config_cluster.yml ~/.kube/config

获取集群节点信息

[root@mldong01 download]# kubectl get nodes
NAME       STATUS   ROLES                      AGE     VERSION
mldong01   Ready    controlplane,etcd,worker   3d16h   v1.19.6
mldong02   Ready    worker                     3d16h   v1.19.6
mldong03   Ready    worker                     3d16h   v1.19.6

完全卸载rke


#!/bin/bash
#杀死所有正在运行的容器
docker stop $(docker ps -a -q)

#删除所有容器
docker rm -f $(docker ps -qa)

#删除所有容器卷
  docker volume rm $(docker volume ls -q)

#卸载mount目录
  for mount in $(mount | grep tmpfs | grep '/var/lib/kubelet' | awk '{ print $3 }') /var/lib/kubelet /var/lib/rancher; do umount $mount; done

#删除残留路径
rm -rf /etc/ceph /
       /etc/cni /
       /etc/kubernetes /
       /opt/cni /
       /opt/rke /
       /run/secrets/kubernetes.io /