简要说明:

RKE (Rancher Kubernetes Engine)是RancherLabs提供的一个工具,可以在裸机、虚拟机、公私有云上快速安装Kubernetes集群。整个集群的部署只需要一个命令、一个配置文件,解决了如何轻松部署Kubernetes的问题。

尽管Rancher提供了免费的视频培训(见后面的参考链接),但用户在使用RKE时,还是会遇到了很多报错信息,无法安装成功,这主要是因为一些基本的前置条件没有满足。

为了用户使用RKE部署Kubernetes更顺利,有必要梳理一下,把部署要点整理出来,让使用RKE的用户少走弯路。

部署要点:

系统版本:

建议使用Ubuntu 16.04.3 LTS版本,如果是CentOS7,建议7.3以上版本;

Docker版本:

RKE在Github上的readme中已有说明,Kubernetes1.8需要Docker 1.12.6、1.13.1、17.03,Kubernetes1.8不支持更高版本的Docker;

主机名:

如果是克隆的系统一定要修改主机名,hostname主机名必须不同!

主机文件:

/etc/hosts要配置正确,一定要有127.0.0.1 localhost 这一项。Hosts文件中包含所有主机节点的IP和名称列表。使用vi进行编辑,不能使用中文全角的空格;

SELinux:

必须关闭!Ubuntu 16.04默认未安装,无需设置。CentOS7下可修改配置文件/etc/sysconfig/selinux,设置SELINUX=disabled ,重启后永久关闭。

IPV4转发:

必须开启!Ubuntu 16.04下默认已启用,无需设置。CentOS7 下可编辑配置文件/etc/sysctl.conf,设置启用转发,

net.ipv4.ip_forward = 1

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

执行sudo sysctl -p 立刻生效。

防火墙:

开放集群主机节点之间6443、2379、2380端口,如果是刚开始试用,可以先关闭防火墙;Ubuntu默认未启用UFW防火墙,无需设置。也可手工关闭:sudo ufw disable

禁用SWAP:

一定要禁用swap,否则kubelet组件无法运行,永久禁用swap可以直接修改/etc/fstab文件,注释掉swap项。swapoff -a 只是临时禁用,下次关机重启又恢复原样;

启用Cgroup:

修改配置文件/etc/default/grub,启用cgroup内存限额功能,配置两个参数:

GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

注意:要执行sudo update-grub 更新grub,然后重启系统后生效。

SSH免密登录:

RKE通过SSH tunnel进行安装部署,需要事先建立RKE到各节点的SSH免密登录。如果集群中有5个节点,需要在RKE机器上执行1遍秘钥生成命令ssh-keygen +5次公钥分发命令ssh-copy-id user1@节点IP。如果执行RKE的本机也要加入到K8S集群中,也要使用ssh-copy-id user1@本机IP,将公钥分发到本机,对本机执行ssh免密配置,否则也会报错。免密配置方法:http://blog.csdn.net/csdn_duomaomao/article/details/79164073 。

RKE部署用户:

1、RKE部署用户是cluster.yml配置文件中的用户,也就是上述能ssh免密登录到其他机器的用户;

2、CentOS7不能用root用户,Ubuntu既可用root也可用普通用户;

3、如果使用普通用户进行RKE安装,要将普通用户(如user01)加入到docker组,命令:sudo usermod -aG docker user01  注意:重启系统以后才能生效,只重启Docker服务是不行的!重启后,user01用户也可以直接使用docker run命令。

4、在Ubuntu上使用apt安装完docker后,会自动创建docker用户组,无需手工创建docker组,只需要将部署RKE的用户(如user01)加入到docker组即可,查看是否存在docker组、以及user01用户是否在docker组中,可以直接查看/etc/group文件;

*5、如果Ubuntu使用root用户进行RKE安装,需要配置sshd服务,修改配置文件/etc/ssh/sshd_config,将PermitRootLogin prohibit-password 改为PermitRootLogin yes ,允许root远程ssh登录;取消注释#AuthorizedKeysFile   %h/.ssh/authorized_keys ,允许记录授权秘钥文件;

关键截图:

01-创建user01用户,将user01加入到docker组中

02-修改GRUB配置文件,启用cgroup内存限额功能

03-修改etc下fstab文件,永久禁用swap

04-ubuntu下如果使用root用户进行安装,需要修改ssh配置,允许root远程登录

05-RKE安装部署过程1

06-RKE安装部署过程2

07-RKE安装部署过程3

01-创建user01用户,将user01加入到docker组中

02-修改GRUB配置文件,启用cgroup内存限额功能

03-修改etc下fstab文件,永久禁用swap

04-ubuntu下如果使用root用户进行安装,需要修改ssh配置,允许root远程登录

05-RKE安装部署过程1

06-RKE安装部署过程2

07-RKE安装部署过程3

 

 

参考配置文件:

一个可用的cluster.yml配置文件:

---

auth:

strategy: x509

options:

foo: bar

# supported plugins are:

# flannel

# calico

# canal

# weave

#

# If you are using calico on AWS, use the network plugin config option:

# 'cloud_provider: aws'

network:

plugin: flannel

options:

flannel_image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/flannel

flannel_cni_image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/flannel-cni

nodes:

- address: 192.168.3.161

user: user01

role: [controlplane, etcd]

ssh_key_path: ~/.ssh/id_rsa

- address: 192.168.3.162

user: user01

role: [worker]

ssh_key_path: ~/.ssh/id_rsa

- address: 192.168.3.163

user: user01

role: [worker]

ssh_key_path: ~/.ssh/id_rsa

services:

etcd:

image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/etcd:latest

kube-api:

image: rancher/k8s:v1.8.3-rancher2

service_cluster_ip_range: 10.233.0.0/18

pod_security_policy: false

extra_args:

v: 4

kube-controller:

image: rancher/k8s:v1.8.3-rancher2

cluster_cidr: 10.233.64.0/18

service_cluster_ip_range: 10.233.0.0/18

scheduler:

image: rancher/k8s:v1.8.3-rancher2

kubelet:

image: rancher/k8s:v1.8.3-rancher2

cluster_domain: cluster.local

cluster_dns_server: 10.233.0.3

infra_container_image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/pause-amd64:3.0

command: --fail-swap-on=false

kubeproxy:

image: rancher/k8s:v1.8.3-rancher2

system_images:

alpine: alpine:latest

nginx_proxy: rancher/rke-nginx-proxy:0.1.0

cert_downloader: rancher/rke-cert-deployer:0.1.0

kubedns_image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/k8s-dns-kube-dns-amd64:1.14.5

dnsmasq_image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/k8s-dns-dnsmasq-nanny-amd64:1.14.5

kubedns_sidecar_image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/k8s-dns-sidecar-amd64:1.14.5

kubedns_autoscaler_image: registry.cn-shenzhen.aliyuncs.com/rancher_cn/cluster-proportional-autoscaler-amd64:1.0.0

# all addon manifests MUST specify a namespace

addons: |-

---

apiVersion: v1

kind: Pod

metadata:

name: my-nginx

namespace: default

spec:

containers:

- name: my-nginx

image: nginx

ports:

- containerPort: 80

 

参考链接:

RKE快速上手指南:开源的轻量级K8S安装程序

https://www.cnrancher.com/an-introduction-to-rke/

免费视频培训:如何安装使用RKE

http://www.itdks.com/liveevent/detail/8343

RKE 简介

https://github.com/rancher/rke

RKE工具下载页面

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

RKE cluster.yml 文件说明

https://github.com/rancher/rke/blob/master/cluster.yml

使用Rancher的RKE部署Kubernetes要点的更多相关文章

  1. 使用Rancher的RKE快速部署Kubernetes集群

    简要说明: 本文共涉及3台Ubuntu机器,1台RKE部署机器(192.168.3.161),2台Kubernetes集群机器(3.162和3.163). 先在Windows机器上,将rke_linu ...

  2. [原]CentOS7安装Rancher2.1并部署kubernetes (一)---部署Rancher

    ##################    Rancher v2.1.7  +    Kubernetes 1.13.4  ################ ##################### ...

  3. 使用 Kubeadm 安装部署 Kubernetes 1.12.1 集群

    手工搭建 Kubernetes 集群是一件很繁琐的事情,为了简化这些操作,就产生了很多安装配置工具,如 Kubeadm ,Kubespray,RKE 等组件,我最终选择了官方的 Kubeadm 主要是 ...

  4. [原]CentOS7安装Rancher2.1并部署kubernetes (三)---解决登录kubernets超时和部署测试Pod和Containter[nginx为例]

    ##################    Rancher v2.1.7  +    Kubernetes 1.13.4  ################ ##################### ...

  5. [原]CentOS7安装Rancher2.1并部署kubernetes (二)---部署kubernetes

    ##################    Rancher v2.1.7  +    Kubernetes 1.13.4  ################ ##################### ...

  6. [原]部署kubernetes dashboard(二)

    #######################    以下为声明  ##################### 此文档是之前做笔记在两台机上进行的实践,kubernetes处于不断开发阶段 不能保证每 ...

  7. [原]使用kubeadm部署kubernetes(一)

    #######################    以下为声明  ##################### 在公众号  木子李的菜田 输入关键词:   k8s 有系列安装文档 此文档是之前做笔记在 ...

  8. Docker容器管理平台Rancher高可用部署——看这篇就够了

    记得刚接触Rancher时,看了官方文档云里雾里,跟着官网文档部署了高可用Rancher,发现不管怎么折腾都无法部署成功(相信已尝试的朋友也有类似的感觉),今天腾出空来写个总结,给看到的朋友留个参考( ...

  9. 和我一步步部署 kubernetes 集群

    和我一步步部署 kubernetes 集群 本系列文档介绍使用二进制部署最新 kubernetes v1.6.1 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群: 在部署的过程中, ...

随机推荐

  1. STM32硬件IIC (转)

    源: STM32硬件IIC

  2. django模板-if标签和for标签

    在django中,标签写在{%  标签  %}中 if else标签 ①通过if进行条件判断 views.py from django.shortcuts import render def inde ...

  3. Maven 工程读取resource下的文件

    1:方式1: public static List<String> userList; static { userList = new LinkedList<String>() ...

  4. mybatis 3.2.*打印sql结果集

    虽然可以写个interceptor记录下,但是总归没有log4j来的自然.一段时间不查问题,总是要忘了,记录下: 在mybatis 3.2.*中,可以在log4j中如下配置: log4j.logger ...

  5. python之路-day1-if...else...流程判断

    判断输入的用户名:#Author:zww _username = "zww" _password = " username = input("username: ...

  6. django基础 -- 3. urls.py view.py 参数 别名 重定向 常用方法 静态文件

    一.基本格式 from django.conf.urls import url from . import views #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数 ...

  7. javascript对文件的读写

    整合了一下网上对于js实现文件读写的代码,但是该功能只能在ie浏览器下执行,另外有些电脑上的ie需要设置. 下面是写入代码: var fso = new ActiveXObject("Scr ...

  8. 0基础学安卓--初识安卓Activity

    知识储备:windows+ Android Studio 等环境安装. 安卓中Activity代表页的意思,也就是☞我们手机上当前的整个界面显示,点击按钮等操作可以跳转到另外一个Activity中. ...

  9. git 如何revert指定范围内的commit并且只生成一个新的commit?

    答:一共分成两步 一. revert多个commit并生成多个新的commit git revert <old commit>^..<new commit> 二. 使用reba ...

  10. 【Spring Security】二、数据库管理用户权限

    一 引入相关的jar包 这个例子用的是mysql数据库和c3p0开源的jdbc连接池,在项目的pom.xml中引入jar包 <!-- Mysql --> <dependency> ...