一、简介

Rancher简介

来源官方:https://www.cnrancher.com/

Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。

Rancher由以下四个部分组成:

1.1、基础设施编排

Rancher可以使用任何公有云或者私有云的Linux主机资源。Linux主机可以是虚拟机,也可以是物理机。Rancher仅需要主机有CPU,内存,本地磁盘和网络资源。从Rancher的角度来说,一台云厂商提供的云主机和一台自己的物理机是一样的。

Rancher为运行容器化的应用实现了一层灵活的基础设施服务。Rancher的基础设施服务包括网络, 存储, 负载均衡, DNS和安全模块。Rancher的基础设施服务也是通过容器部署的,所以同样Rancher的基础设施服务可以运行在任何Linux主机上。

1.2、容器编排与调度

很多用户都会选择使用容器编排调度框架来运行容器化应用。Rancher包含了当前全部主流的编排调度引擎,例如Docker Swarm, Kubernetes, 和Mesos。同一个用户可以创建Swarm或者Kubernetes集群。并且可以使用原生的Swarm或者Kubernetes工具管理应用。

除了Swarm,Kubernetes和Mesos之外,Rancher还支持自己的Cattle容器编排调度引擎。Cattle被广泛用于编排Rancher自己的基础设施服务以及用于Swarm集群,Kubernetes集群和Mesos集群的配置,管理与升级。

1.3、应用商店

Rancher的用户可以在应用商店里一键部署由多个容器组成的应用。用户可以管理这个部署的应用,并且可以在这个应用有新的可用版本时进行自动化的升级。Rancher提供了一个由Rancher社区维护的应用商店,其中包括了一系列的流行应用。Rancher的用户也可以创建自己的私有应用商店。

1.4、企业级权限管理

Rancher支持灵活的插件式的用户认证。支持Active Directory,LDAP, Github等 认证方式。 Rancher支持在环境级别的基于角色的访问控制 (RBAC),可以通过角色来配置某个用户或者用户组对开发环境或者生产环境的访问权限。

下图展示了Rancher的主要组件和功能:

Kubernetes简介

1.1 基础概念

Kubernetes(通常写成“k8s”)Kubernetes是Google开源的容器集群管理系统。其设计目标是在主机集群之间提供一个能够自动化部署、可拓展、应用容器可运营的平台。Kubernetes通常结合docker容器工具工作,并且整合多个运行着docker容器的主机集群,Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。

功能特性:

  • 自动化容器部署与复制

  • 随时扩展或收缩容器规模

  • 组织容器成组,提供容器间的负载均衡

  • 快速更新及回滚容器版本

  • 提供弹性伸缩,如果某个容器失效就进行替换

1.2 架构图

1.3 组件

1.3.1 Master

Master节点上面主要由四个模块组成:APIServer、scheduler、controller manager、etcd

  • APIServer:APIServer负责对外提供RESTful的Kubernetes API服务,它是系统管理指令的统一入口,任何对资源进行增删改查的操作都要交给APIServer处理后再提交给etcd。如架构图中所示,kubectl(Kubernetes提供的客户端工具,该工具内部就是对Kubernetes API的调用)是直接和APIServer交互的。

  • schedule:scheduler的职责很明确,就是负责调度pod到合适的Node上。如果把scheduler看成一个黑匣子,那么它的输入是pod和由多个Node组成的列表,输出是Pod和一个Node的绑定,即将这个pod部署到这个Node上。Kubernetes目前提供了调度算法,但是同样也保留了接口,用户可以根据自己的需求定义自己的调度算法。

  • controller manager:如果说APIServer做的是“前台”的工作的话,那controller manager就是负责“后台”的。每个资源一般都对应有一个控制器,而controller manager就是负责管理这些控制器的。比如我们通过APIServer创建一个pod,当这个pod创建成功后,APIServer的任务就算完成了。而后面保证Pod的状态始终和我们预期的一样的重任就由controller manager去保证了。

  • etcd:etcd是一个高可用的键值存储系统,Kubernetes使用它来存储各个资源的状态,从而实现了Restful的API。

1.3.2 Node

每个Node节点主要由三个模块组成:kubelet、kube-proxy、runtime。

runtime指的是容器运行环境,目前Kubernetes支持docker和rkt两种容器。

  • kube-proxy:该模块实现了Kubernetes中的服务发现和反向代理功能。反向代理方面:kube-proxy支持TCP和UDP连接转发,默认基于Round Robin算法将客户端流量转发到与service对应的一组后端pod。服务发现方面,kube-proxy使用etcd的watch机制,监控集群中service和endpoint对象数据的动态变化,并且维护一个service到endpoint的映射关系,从而保证了后端pod的IP变化不会对访问者造成影响。另外kube-proxy还支持session affinity。

  • kubelet:Kubelet是Master在每个Node节点上面的agent,是Node节点上面最重要的模块,它负责维护和管理该Node上面的所有容器,但是如果容器不是通过Kubernetes创建的,它并不会管理。本质上,它负责使Pod得运行状态与期望的状态一致。

1.3.3 Pod

Pod是k8s进行资源调度的最小单位,每个Pod中运行着一个或多个密切相关的业务容器,这些业务容器共享这个Pause容器的IP和Volume,我们以这个不易死亡的Pause容器作为Pod的根容器,以它的状态表示整个容器组的状态。一个Pod一旦被创建就会放到Etcd中存储,然后由Master调度到一个Node绑定,由这个Node上的Kubelet进行实例化。

每个Pod会被分配一个单独的Pod IP,Pod IP + ContainerPort 组成了一个Endpoint。

1.3.4 Service

Service其功能使应用暴露,Pods 是有生命周期的,也有独立的 IP 地址,随着 Pods 的创建与销毁,一个必不可少的工作就是保证各个应用能够感知这种变化。这就要提到 Service 了,Service 是 YAML 或 JSON 定义的由 Pods 通过某种策略的逻辑组合。更重要的是,Pods 的独立 IP 需要通过 Service 暴露到网络中。

二、准备工作

2.1、系统环境

       
       
       

下面两个节点都要配置

2.2、检查hosts--配置后检查是否能解析外网

192.168.56.129 master

192.168.56.130 slave1

2.3、暂时关闭防火墙和seLinux

2.4、开启IPV4转发

在/etc/sysctl.conf新添加如下参数

net.ipv4.ip_forward = 1

net.ipv4.ip_forward_use_pmtu = 0

生效命令:

[root@master ~]# sysctl -p

查看

[root@master ~]# sysctl -a|grep "ip_forward"

2.5、关闭Swap交换分区

2.6、安装Docker1.12.6版本

什么版本的Docker才能适配Rancher和Kubernetes

请参考:http://rancher.com/docs/rancher/v1.6/zh/hosts/#docker

1)执行命令:

[root@master ~]# mkdir -p ~/_src

[root@master ~]# cd ~/_src/

[root@master _src]# wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-selinux-1.12.6-1.el7.centos.noarch.rpm

[root@master _src]# wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.6-1.el7.centos.x86_64.rpm

[root@master _src]# wget http://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-debuginfo-1.12.6-1.el7.centos.x86_64.rpm

安装

[root@master _src]# yum localinstall -y docker-engine-selinux-1.12.6-1.el7.centos.noarch.rpm docker-engine-1.12.6-1.el7.centos.x86_64.rpm docker-engine-debuginfo-1.12.6-1.el7.centos.x86_64.rpm

2)启动

[root@master ~]# systemctl enable docker

[root@master ~]# systemctl start docker

3)查看版本

[root@master ~]# docker version

2.7、设置Docker镜像加速

此时如果用docker pull命令下载镜像,本地会连接hub.docker.com网站去下载,耗时较长,因此我们可以设置docker镜像加速,使得本地连接去国内镜像仓库下载,镜像加速的设置有很多种,本章以阿里云的设置为例,步骤如下:

1)创建目录:

[root@master ~]# mkdir /etc/docker

2)设置镜像仓库地址:

tee /etc/docker/daemon.json <<-'EOF'{  "registry-mirrors": ["https://xwx6wxd1.mirror.aliyuncs.com"] }EOF

3)重新加载配置:

[root@master ~]# systemctl daemon-reload

4)重启服务

[root@master ~]# systemctl restart docker.service

备注:slave1节点操作一致

三、安装rancher

官方安装文档:https://www.cnrancher.com/docs/rancher/v2.x/cn/overview/

3.1、在master机器执行以下命令,即可安装rancher:

[root@master ~]# docker run -d --restart always --name rancher-server -p 8080:8080 rancher/server:v1.6.11-rc3 && docker logs -f rancher-server

报错如下:

参考地址:https://blog.csdn.net/shida_csdn/article/details/79376761

[root@master ~]# pkill docker                         #终止进程

[root@master ~]# iptables -t nat -F                 #清空nat表的所有链

[root@master ~]# ifconfig docker0 down        #停止docker默认网桥

[root@master ~]# brctl delbr docker0             #删除网桥

[root@master ~]# systemctl restart docker       #重启docker

查看即可

3.2、在浏览器访问http://192.168.56.129:8080,可以看到初始页面,在页面的右下角选择“简体中文”后,页面如下所示:

至此,rancher安装成功,接下来就是kubernetes的搭建工作。

3.3、配置环境模板

1)、环境配置---“Default”选择“环境管理”,如图

2)添加环境模块

输入项目名:k8s-TempLate

如下图,下拉菜单只有一个选择,请选中

上图四个红框填入的内容如下表所示:

   
   
   
   
   

3)将页面拖动到最底部,点击“设置”按钮,如下图:

4)再将页面拖动到最底部,点击“创建”按钮,如下图:

这样我们就完成了环境模板的配置,这里面的参数帮助rancher寻找国内的镜像仓库,从而避免了无法从google仓库下载镜像的问题,在以往这个问题是通过上网来解决的;

3.4、创建Kubernetes

1)点击“创建环境”按钮,如下图红框:

2)在创建环境的页面中,输入新的环境的名称:master-k8s,选择我们刚才创建的环境模板,在点击底部的“创建”按钮,如下图:

3)如下图红框所示,在左上角位置选择刚刚创建的环境,可以看到目前环境已经OK,正在等待node的加入:

至此,Kubernetes的master已经搭建完毕!!!!

3.5、添加节点——将机器加入到K8S环境

1)master机器的IP是192.168.56.129,所以在浏览器打开地址192.168.56.129:8080,左上角选择新增的环境,可以看到如下图的页面,点击红框中的“添加主机”:

2)如下图,在页面上确认红框中的IP地址是不是你的master机器对外暴露的地址(多网卡的机器要关注),确认无误后点击“保存” .

3)如下图,点击红框按钮,会将此按钮左侧的文本信息复制下来:

4)登录slave1节点,执行上面复制下来的命令,该命令会先下载docker镜像,然后启动容器去加入到K8S环境,此时再去刷新管理页面,见到如下图所示,已经感知到机器的加入,开始接下来的一系列操作,此时请耐心等待(等待时间比较,喝杯茶再回来):

有可能节点获取不到东西,建议检查一下安全规则(防火墙、转发、selinux),配置后重启即可

5)节点加入成功后,页面如下图所示,点击红框中的按钮就进入了K8S的dashboard:

报Service unavailable错误:等待十分钟左右即可,启动接口有点慢

下文安装kubectl装好之后,在控制台用kubectl describe命令查看dashbroad的pod和service的执行进度,查看错误日志。

至此,我们已经完成了节点机器加入K8S环境的操作,接下来我们快速体验在K8S环境创建Pod和Service的操作;

体验K8S环境

1)创建一个文件tomcat.yaml,内容如下:

apiVersion: extensions/v1beta1

kind: Deployment

metadata:

name: tomcat001

spec:

replicas: 1

template:

metadata:

labels:

name: tomcat001

spec:

containers:

- name: tomcat001

image: tomcat:7.0.82-jre7

tty: true

ports:

- containerPort: 8080

2)在dashboard页面上传这个tomcat.yaml文件,操作如下图所示:

3)等镜像下载和容器创建成功后,在dashboard的部署页面可以看到tomcat001的部署情况,如下图

4)创建一个文件tomcat-svc.yaml,内容如下:

apiVersion: v1

kind: Service

metadata:

name: tomcat001

spec:

type: NodePort

ports:

- port: 8080

nodePort: 30018

selector:

name: tomcat001

5)如同上个步骤,上传后在dashboard的“服务”页面查看

6)通过业务节点slave1的IP地址访问

http://192.168.56.130:30018/

3.5、安装kubectl工具

1)下载kubectl工具

有两种下载方式,您可以选择其中任意一种:

(1)在我的GitHub下载,地址是:https://github.com/zq2599/blog_demos/blob/master/k8s_tools/kubectl/linux/kubectl.zip,在这个页面点击”download”按钮即可下载,下载后记得解压;

(2)在linux机器上执行以下命令下载:

# curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl

2)设置工具

(1)kubectl文件上传到linux机器后,授权

# chmod +x kubectl

(2)将kubectl移动到可以全局访问的目录下

# mv ./kubectl /usr/local/bin/

(3)测试,任意目录执行一下语句

工具已经准备好,接下来我们把配置做好,使得kubectl可以连接到K8S上执行命令;

3)配置参数

(1)在rancher的管理页面上,点击下图红框1中的”CLI”,在出现的页面中点击红框2中的”生成配置“:

(2)如下图,点击红框中的”复制到剪切板“,将按钮上方的配置信息复制下来:

(3)创建文件,复制上面的参数

# mkdir ~/.kub

(4)查看进程服务

# kubectl get service -a -o wide --all-namespaces

到此,部署完毕!!!!

问题来了,每次访问rancher直接进入了管理平台,一点安全性可言都没有,下来我们来设置“系统管理”

四、账号安全设置

4.1、日志审计

只有管理员用户有权限访问审计日志。审计日志在系统管理->审计日志。

Rancher的审计日志是不同事件类型的集合:

(1)任何带有前缀api的事件是API的一次调用。事件类型将记录API操作,谁执行的操作以及API调用的方式(即通过UI,通过API密钥)。

(2)何没有带api前缀的事件都是Rancher Server做的事情。例如,在协调服务的容器期间,在实例创建时会产生一个instance.create事件。

4.2、账号设置

编辑“环境管理”---master-k8s

4.3、访问控制

用户在访问你的Rancher服务之前,需要进行身份认证。同时,只有拥有合法的API密钥才能使用Rancher API。

(1)活动目录

选择活动目录图标。 如果你想要通过TLS来使用活动目录,请确保你已经使用了相应的证书来启动Rancher Server。填写相关信息后,通过点击身份认证进行认证校验。 当活动目录认证成功后,你将自动以已认证的用户名身份登录。并且把你的账号设置为了管理员权限。

(2)Azure AD 验证

选择Azure AD图标。 填写相应信息并单击Azure认证进行认证校验。 当认证成功后,你将自动以已认证的用户名身份登录。并且把你的账号设置为了管理员权限。

(3)GitHub

选择GitHub图标,并按照用户界面中的说明将Rancher注册为GitHub应用程序。 点击使用GitHub进行身份认证后,当认证成功后,你将自动以已认证的Github账号登录。并且把你的账号设置为了管理员权限。

(4)local

选择本地图标。 通过提供登录用户名,全名和密码来创建管理员用户。 点击启用本地认证来启用本地身份认证。 通过单击此按钮,管理员用户将被创建并保存在数据库中。这时你将自动用刚刚创建的管理员帐户登录到Rancher服务。

(5)OpenLDAP

填写对应信息后,通过点击身份认证进行认证校验。当OpenLDAP认证成功后,你将自动以已认证的用户名身份登录。并且把你的账号设置为了管理员权限。

(6)Shibboleth

选择Shibboleth图标。 填写Shibboleth帐户的配置信息,点击保存保存信息,然后点击测试来测试访问控制是否正常工作。

在使用Shibboleth时,你应该注意一些已知的问题:

(1)不支持搜索或查找功能。 在添加用户时,请确保输入的用户ID是准确的,这样才能保证用户被添加成功。

(2)当添加用户到一个环境时, 不支持组ID,除非管理员是该组的成员之一。

功能模块比较复杂,后续补充。。。。。

转载于:https://www.cnblogs.com/duwamish/p/10950766.html

企业级rancher搭建Kubernetes(采用rancher管理平台搭建k8s)相关推荐

  1. 搭建kubernetes集群管理平台

    一. kubernetes和相关组件介绍 1. kubernetes概述 Kubernetes是google开源的容器集群管理系统,基于docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务 ...

  2. Kubernetes 学习总结(19)—— Kubernetes 集群管理平台如何选择?Rancher vs KubeSphere

    前言 Kubernetes(K8s)集群管理平台都是基于 Kubernetes 提供功能,可以说他们是在 K8s 的基础上封装了一层更为友好的操作方式.他们都是为了降低 k8s 集群运维复杂度,降低运 ...

  3. 基于Rancher实现kubernetes集群管理

    基于Rancher实现kubernetes集群管理 1.Rancher介绍 2.Rancher部署 添加kubernetes集群 3.Rancher简单操作 1.Rancher介绍 Rancher可以 ...

  4. 小白也能看懂!教你如何快速搭建实用的爬虫管理平台

    写在前面:本篇文章内容较多,涉及知识较广,读完需要大约 20 分钟,请读者耐心阅读. 如今大多数企业都离不开爬虫,它是获取数据的一种有效方式.但是对爬虫有着规模量级要求的企业或个人需要同时处理不同类别 ...

  5. 如何快速搭建实用的爬虫管理平台

    本篇文章内容较多,涉及知识较广,读完需要大约 20 分钟,请读者耐心阅读. 前言 大多数企业都离不开爬虫,爬虫是获取数据的一种有效方式.对搜索引擎来说,爬虫不可或缺:对舆情公司来说,爬虫是基础:对 N ...

  6. V2B管理平台搭建完全教程

    V2B管理平台搭建完全教程 V2B搭建 参考链接地址: https://zhujiget.com/4501.html soga接入trojan 1 申请独立的vps 地址: https://my.vu ...

  7. SpringCloud + kafka + ELK 搭建微服务日志管理平台

    SpringCloud + kafka + ELK 搭建微服务日志管理平台 2019-12-31,写在前面的话 今天是2019最后一天了,最近几天都在搞这块微服务日志管理的事情,有很多种方案实现,每种 ...

  8. Android手机管理平台搭建:STF和atxserver2

    STF(Smartphone Test Farm)是一个Android手机设备管理平台,通过在浏览器上远程调试智能手机.手表和其它设备,一般用于远程管理.调试.监控多个设备.atxserver2移动设 ...

  9. Rancher集群化docker管理平台部署、特性及破坏性测试。

    http://8941355.blog.51cto.com/8931355/1712683 rancher是一个docker集群化管理平台,相对于mesos和k8s架构,rancher的部署管理非常简 ...

最新文章

  1. 一条光纤的传输容量高达 661Tbps(附论文)
  2. php _set魔术方法的用法,PHP魔术方法__GET、__SET使用实例
  3. centos 7 防火墙和端口配置
  4. php fstat,PHP fstat( )用法及代码示例
  5. lvs web服务器不响应,lvs web服务器不响应
  6. 用easyx画五角星_冷军画了一把破剪刀, 竟然卖到了160万,被专家抨击:乱涂鸦!得奖后专家顿时不说话了...
  7. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第5节 使用骨架创建maven的java工程_11使用骨架创建maven的java工程...
  8. bex5与java的关系_WeX5 BeX5 页面框架核心之数据绑定
  9. 在Linux下进入目录,目录下创建、修改、删除文件所需权限
  10. 冒泡排序和鸡尾酒排序
  11. 这样做,你的面试成功率将达到 90%
  12. RT-Preempt笔记
  13. 利用mlxtend进行数据关联分析
  14. 计算机论文的参考文献,应该怎么引用? - 易智编译EaseEditing
  15. 【重识云原生】第六章容器基础6.4.9.2节——使用 Service 连接到应用
  16. Java进行图像缩放
  17. Python —— 魔方方法
  18. 搭档之家:刘强东章泽天共同成立企业管理公司,前者持股99%
  19. 计算机职业道德英语作文,考研英语作文范文-英语职业道德类作文来啦!
  20. AI的故事:半人马的诞生之路

热门文章

  1. Linux16.04下配置Caffe,Pycaffe,matcaffe
  2. [多图/秒懂]白话OpenPose,最受欢迎的姿态估计网络
  3. 图像梯度增强_使用梯度增强机在R中进行分类
  4. 机器学习学习吴恩达逻辑回归_机器学习基础:逻辑回归
  5. 贷款秒拒?你可能进了“灰名单”!
  6. tiny4412 SDK1312B LED驱动
  7. python中timedelta_Python – 使用时间戳,timedelta的日期和时间比较
  8. wpfdiagram 学习 教学_李倩、吴欣歆:新高考背景下高中语文教学的三个转变
  9. jmeter跨线程组传多个值_Jmeter 跨线程组传递参数 之两种方法(转)
  10. spark python 上传代码包_使用 Livy Rest API 提交 spark 批量任务 (jar,Python, streaming)...