RKE(rancher kubernetes engine)是rancher 发布的一款轻量级的kubernetes部署工具,部署整个集群只需要一个命令和一个配置文件,就可以轻松部署kubernetes集群,还支持kubernetes的ha部署,各类网络plugin。
环境:
rke-node1 172.31.164.57 (部署节点)
rke-node2 172.31.164.58 (master节点、etcd节点)
rke-node3 172.31.164.59 (node节点)
软件版本
rke 0.1.6
docker 17.03
操作系统
ubuntu 16.04
准备工作
配置hosts
172.31.164.57 rke-node1
172.31.164.58 rke-node2
172.31.164.59 rke-node3
配置免密码登录
我们在操作系统是ubuntu 16.04,rke可以直接使用root,centos的话就不行,必须要普通用户,并且属组为docker
ssh-copy-id rke-node1
ssh-copy-id rke-node2
ssh-copy-id rke-node3
关闭selinux
关闭防火墙
配置路由转发
/etc/sysctl.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
安装docker(全部节点)
因为目前rke部署的kubernetes还是1.8版本的,kubernetes 1.8只支持docker1.12.6、1.13.1、17.03
更新软件源
1 | apt-get update |
安装软件包,允许apt使用https
1 | apt-get install apt-transport-https ca-certificates curl software-properties-common |
导入docker官方key
1 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - |
添加软件源
1 | add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" |
在刷新下
1 | apt-get update |
安装指定版本docker
列出软件版本
1 | apt-cache policy docker-ce |
安装docker-17.03
1 | apt-get install docker-ce=17.03.0~ce-0~ubuntu-xenial |
启动
1 | systemctl enable docker && systemctl start docker |
安装rke
https://github.com/rancher/rke/releases/
下载
rke_linux-amd64
1 | mv rke_linux-amd64.dms rke |
cluster.yml的来源有两种,一种是直接从github上下载完整的
下载cluster.yml
rke主要依靠cluster.yml去对集群角色进行划分和配置
下载
1 | https://github.com/rancher/rke/blob/master/cluster.yml |
修改
1 | nodes: |
注意几个点
1、nodes内定义的就是节点的ip、角色、key位置,有以下几种角色
controlplane:也就是kubernetes中的master节点部署kube-api、kube-controller-manger、kube-scheduler组件
etcd:部署etcd,kubernetes集群存储后端数据信息
worker:kubernetes的node节点,承载应用
2、默认是会直接部署ingress的要disable的将ingress的provider弄为node
1 | ingress: |
还有种办法直接生成,按提示一步步输入。
./rke config #生成名为cluster.yml文件
./rke config –name mycluster.yml #生成指定名字的配置文件
当配置文件和rke命令在一个文件夹下时可以直接使用直接部署命令,否则需要指定yml配置文件
直接部署
1 | ./rke up |
指定配置文件部署
1 | rke up --config cluster.yml |
部署成功
默认rke是没有安装kubectl的
手动安装kubectl
1 | wget https://dl.k8s.io/v1.8.7/kubernetes-client-linux-amd64.tar.gz |
1 | cp kubernetes/client/bin/kube* /usr/local/bin/ |
1 | chmod a+x /usr/local/bin/kube* |
1 | export PATH=/usr/local/bin:$PATH |
默认在当前目录生成了kubeconfig文件
创建kube文件夹
1 | mkdir /root/.kube/ |
拷贝文件到/root/.kube内
1 | cp kube_config_cluster.yml /root/.kube/config |
测试
部署应用
1 | kubectl run nginx --image=nginx:1.7.9 --replicas=3 |
验证
HA部署
rke部署ha的方式非传统的vip的架构,而是通过在每个host上部署个nginx-proxy的container,然后通过这个container做反向代理,本地的kube进程直接连接127.0.0.1:6443
注意事项
1 | https://github.com/rancher/rke |