使用RKE安装K8S集群

前言

本文的云主机或虚拟机默认为Centos7,虚拟机的宿主机默认win10操作系统

1.前置准备

1.1 基础环境准备

1.使用云主机,或者Virtualbox+Vagrant安装Centos7 安装Centos7 (建议3台以上,每台机器 4 GB 以上的内存,内存不足时应用会受限制。用作控制平面节点的计算机上至少有2个 CPU)
第二种需先安装VirtualBox和Vagrant[需要注意二者的版本兼容]
使用vagrant其配置文件Vagrantfile可以参考如下(3节点集群):

// An highlighted block
Vagrant.configure("2") do |config|
  config.vm.box_check_update = false
  config.vm.provider 'virtualbox' do |vb|
  vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000 ]
  end  
  $num_instances = 3
  # curl https://discovery.etcd.io/new?size=3
  (1..$num_instances).each do |i|
    config.vm.define "node#{i}" do |node|
      node.vm.box = "centos/7"
      node.vm.hostname = "node#{i}"
      ip = "172.17.8.#{i+100}"
      node.vm.network "private_network", ip: ip
      node.vm.provider "virtualbox" do |vb|
        vb.memory = "8192"
        if i==1 then
            vb.cpus = 2
        else
            vb.cpus = 1
        end
        vb.name = "node#{i}"
      end
    end
  end
end

配置完成后
2.运行vagrant up指令生成3台虚拟机

1.2 docker环境准备

1.由于docker对内核有一定要求 我们可以先升级内核
具体指令参考如下:

查看内核版本 —这里的内核版本(3.10)和系统架构(64位)
uname -smr

更新软件包仓库
yum update

启用Elrepo库
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

安装 Elrepo 软件库
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

列出可用的内核版本
yum list available --disablerepo=‘*’ --enablerepo=elrepo-kernel
kernel-lt表示一个稳定的LTS(长期支持)版本,而kernel-ml表示一个提供短期支持但提供更频繁更新的

设置新的默认启动项
grub2-set-default 0

重启后查看版本
reboot //重启
uname -smr //查看版本

2.基本docker安装
查看系统要求
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看CentOS的内核版本。
uname -a

删除旧版本
yum remove docker docker-common docker-selinux docker-engine

安装需要的软件包
yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

设置Docker yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装docker
sudo yum install docker-ce
如果要安装特定版本:
sudo yum install docker-ce-18.06.1.ce

启动
设置为开机启动
systemctl enable docker

启动
systemctl start docker

查看启动状态
systemctl status docker

查看版本
docker version


2.正式安装

2.1 安装kubectl

注意Linux命令引号的格式
针对集群的三台机器安装Kubectl
curl -LO “https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl” && chmod +x kubectl && cp kubectl /usr/bin/
国内备用 curl -fL “https://kinshy-generic.pkg.coding.net/south/study/kubectl?version=latest” -o kubectl && chmod +x kubectl && cp kubectl /usr/bin/

2.2 安装rke

针对主节点安装rke
curl -LO “https://github.com/rancher/rke/releases/download/v1.3.10/rke_linux-amd64” && mv rke_linux-amd64 rke && chmod +x rke && ./rke --version && cp rke /usr/bin/
国内备用 curl -fL “https://kinshy-generic.pkg.coding.net/south/study/rke?version=latest” -o rke && chmod +x rke && ./rke --version && cp rke /usr/bin/

2.3 配置机器运行环境

a.禁用 SELinux
/usr/sbin/sestatus -v |grep “SELinux status”
#结果为 enabled 为启用状态
vim /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled

b.禁用 swap
free -h
#total used free shared buff/cache available
#Mem: 7.8G 205M 6.9G 8.7M 715M 7.3G
#Swap: 5.0G 0B 5.0G
#Swap 有值代表启用了swap
vim /etc/fstab
使用 # 注释掉有 swap 的一行

c.关闭防火墙
firewall-cmd --state
systemctl stop firewalld.service
systemctl disable firewalld.service
重启查看修改是否生效
reboot
/usr/sbin/sestatus -v |grep “SELinux status”
free -h

d.CentOS7不能使用root用户安装
adduser rke -G docker
#设置 RKE 用户密码
passwd rke
#尝试使用rke用户操作docker,观察是否有权限
su rke
docker ps

e.配置主节点到各个节点rke用户的免密登录(仅在主节点操作,执行rke命令的机器)
#一路回车按到底
ssh-keygen
ssh-copy-id rke@节点IP
这个地方要给全部的机器配置ssh,包括自己
比如我有 172.12.17.167 172.12.17.166 两台机器
#在 172.12.17.167 上执行
ssh-keygen
ssh-copy-id rke@172.12.17.167
ssh-copy-id rke@172.12.17.166
#在 172.12.17.166 上执行
ssh-keygen
ssh-copy-id rke@172.12.17.166
ssh-copy-id rke@172.12.17.167

#如何有新的节点加入也需要在所以机器上配置ssh
#测试 ssh 并执行 docker ps 看是否正常工作
ssh rke@节点IP
docker ps


2.4 集群部署配置

注意以下编辑rke.yaml和执行的操作需以上述新建的rke用户执行
编辑rke.yaml(如仅有内网,则去掉所有node的internal_address,并将address改为内网地址:如192.168.xxx.xx;如仅有外网(跨云主机),则去掉所有node的internal_address,则将自有机器外网ip分别加入安全组开放所有端口,并做好从主节点rke用户到其它节点rke用户的免密登录,完成后记得关闭密码登录以免出现云服务器安全问题)
可选(通过rke config生成cluster.yaml,自定义程度更高)注意格式
nodes:

  • address: 165.227.114.63
    internal_address: 172.16.22.12
    user: rke
    role: [controlplane, worker, etcd]
  • address: 165.227.116.167
    internal_address: 172.16.32.37
    user: rke
    role: [worker]
  • address: 165.227.127.226
    internal_address: 172.16.42.73
    user: rke
    role: [worker]
    services:
    etcd:
    snapshot: true
    creation: 6h
    retention: 24h
    ingress:
    provider: nginx
    options:
    use-forwarded-headers: “true”

执行集群安装 rke up --config rke.yaml
运行完成后执行mkdir ~/.kube && mv kube_config_rke.yaml ~/.kube/config
使用kubectl get node 查看节点,完成集群安装


3.部分报错处理

1.如果报错:The connection to the server localhost:8080 was refused - did you specify the right host or port?
就执行命令:export KUBECONFIG=$(pwd)/kube_config_rke.yaml
$(pwd)为kube_config_rke.yaml的目录

2.如果报错:[某节点ip] not found
可能由于之前的集群配置导致,允许删除的情况下
就执行命令
删除集群【注意操作不可逆】
【删除不可逆】rke remove --config rke.yaml【删除不可逆】
【再次执行集群】执行集群安装 rke up --config rke.yaml

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值