目录

如何快速高效部署K8s集群

Rancher是什么

为什么是Rancher

1.0、安装Rancher

1.1、环境

1.2、选择Rancher版本

1.3、拉取镜像

2.0、容器启动高级选项

2.1、SSL加密方式访问Rancher

默认自签名证书:

自定义自签名证书:

2.2、启用API审核日志

2.3、Air Gap

2.4、持久化数据

3.0、启动容器

4.0、访问UI

5.0、Rancher多节点HA部署

5.1、准备:

5.2、部署需求:

HA 节点

MySQL数据库

外部负载均衡服务器

5.3、HA模式下的RANCHER SERVER节点


如何快速高效部署K8s集群

众所周知的K8s集群的部署非常麻烦而且坑又多,为了提升效率必须借助一些工具

Rancher是什么

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

为什么是Rancher

目前创建K8S集群的安装程序最受欢迎的有Kops,Kubespray,kubeadm,rancher,以及个人提供的脚本集等。

(对于Kubernetes容器化的方式运行,容灾恢复比在物理机优秀。所以忽略二进制部署在物理机上)

  • Kops和Kubespary在国外用的比较多,国内因为GFW原因使用不多。
  • kubeadm是Kubernetes官方提供的k8s部署工具,不过不支持HA,且支持的docker版本、K8S版本也有限,因此也不是生产首选的安装程序。
  • Rancher2016年的新起之秀,可以做到极简快速部署管理Docker,并支持多种编排方式:Cattle、Kubernetes、Mesos、Swarm等。通过修改镜像库的方式可以实现在国内的使用。所以我们选择Rancher作为Docker管理部署框架。

Kubernetes官方文档:https://kubernetes.io/docs/reference/

Kubernetes官方Git地址:https://github.com/kubernetes/kubernetes

Rancher官方地址: https://www.cnrancher.com/

1.0、安装Rancher

1.1、环境

Centos7.4

docker 18.06.1-ce

Rancher 2.0

三台服务器

k8s-master  192.168.146.50

k8s-node1  192.168.146.51

k8s-node1  192.168.146.52

1.2、选择Rancher版本

Rancher Server 镜像版本有两个latest 和stable

Tag Description
rancher/rancher:latest 最新的开发版本。这些版本是通过我们的CI自动化框架进行验证。这些版本不推荐用于生产环境。
rancher/rancher:stable 最新的稳定版本。这个标签是生产建议。
rancher/rancher:<v2.X.X> 你可以安装特定版本的Rancher,在DockerHub上查看那些tag可用。

Notes:

不要使用任何带有 rc{n} 前缀的release,这些是Rancher测试团队使用的

本文使用rancher/server:v2.0.0-beta4

1.3、拉取镜像

[root@K8s-master ~]# docker pull registry.docker-cn.com/rancher/server:v2.0.0-beta4
v2.0.0-beta4: Pulling from rancher/server
f56c16792d1e: Pull complete
e2f3fcbcaacd: Pull complete
29f1503c00f8: Pull complete
b5ce6675ff39: Pull complete
a29a9bdc981f: Pull complete
4758641d8c60: Pull complete
a30a6a05c4ed: Pull complete
1ec93119bf5e: Pull complete
74bc3b84fcb6: Pull complete
567d9245728b: Pull complete
Digest: sha256:09507919e8c16395393ab170b3129d3919ab6797d8f7fc1bdfc94cb4f989c151
Status: Downloaded newer image for registry.docker-cn.com/rancher/server:v2.0.0-beta4

2.0、容器启动高级选项

2.1、SSL加密方式访问Rancher

处于安全的目的,我们选择通过https方式

SSL可以保护所有Rancher网络通信,例如登录或与群集交互时。

证书生成方式:

  • 默认自签名证书
  • 自定义自签名证书

默认自签名证书:

#直接暴露端口运行就可以

docker run -d --restart=unless-stopped  -p 80:80 -p 443:443  rancher/rancher:latest

自定义自签名证书:

使用功能OpenSSl生成

#生成根证书私钥(pem文件)                                                                                                   

openssl genrsa -out cakey.pem 2048                                                                                        

#生成根证书签发申请文件(csr文件)                                                                                           

openssl req -new -key cakey.pem -out ca.csr -subj "/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myCA"   

#自签发根证书(cer文件)                                                                                                     

openssl x509 -req -days 365 -sha1 -extensions v3_ca -signkey cakey.pem -in ca.csr -out  cacert.pem

#生成服务端私钥                                                                                                            

openssl genrsa -out key.pem 2048                                                                                          

#生成证书请求文件                                                                                                          

openssl req -new -key key.pem -out server.csr -subj "/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myServer"

#使用根证书签发服务端证书                                                                                                  

openssl x509 -req -days 365 -sha1 -extensions v3_req -CA cacert.pem -CAkey cakey.pem -CAserial ca.srl -CAcreateserial -in server.csr -out cert.pem

#使用CA证书验证server端证书                                                                                                

openssl verify -CAfile cacert.pem  cert.pem

容器启动

docker run -d --restart=unless-stopped \

-p 80:80 -p 443:443 \

-v /<CERT_DIRECTORY>/<FULL_CHAIN.pem>:/etc/rancher/ssl/cert.pem \

-v /<CERT_DIRECTORY>/<PRIVATE_KEY.pem>:/etc/rancher/ssl/key.pem \

-v /<CERT_DIRECTORY>/<CA_CERTS.pem>:/etc/rancher/ssl/cacerts.pem \

rancher/rancher:latest

2.2、启用API审核日志

API审核日志记录通过Rancher服务器进行的所有用户和系统事务。

默认情况下,API审核日志会在rancher容器内写入/ var / log / auditlog。将该目录共享为卷并设置AUDIT_LEVEL以启用日志。

docker run -d --restart=unless-stopped \

  -p 80:80 -p 443:443 \

  -v /var/log/rancher/auditlog:/var/log/auditlog \

  -e AUDIT_LEVEL=1 \

  rancher/rancher:latest

2.3、Air Gap

If you are visiting this page to complete an air gap installation, you must pre-pend your private registry URL to the server tag when running the installation command in the option that you choose. Add <REGISTRY.DOMAIN.COM:PORT> with your private registry URL in front of rancher/rancher:latest.

Example:

 <REGISTRY.DOMAIN.COM:PORT>/rancher/rancher:latest

--取值官网,不过没有弄明白作用是什么。。

2.4、持久化数据

持久性数据位于容器中的/var/lib/rancher

docker run -d --restart=unless-stopped \

  -p 80:80 -p 443:443 \

  -v /host/rancher:/var/lib/rancher \

  rancher/rancher:latest

3.0、启动容器

启用ssl,api审核,数据持久化

#环境准备
[root@K8s-master ~]# mkdir -p /home/rancher/{cert,log,data}
#生成证书过程省略
[root@K8s-master /home/rancher/cert]# ll
总用量 28
-rw-r--r-- 1 root root 1216 1月 25 15:10 cacert.pem
-rw-r--r-- 1 root root 1013 1月 25 15:10 ca.csr
-rw-r--r-- 1 root root 1679 1月 25 15:10 cakey.pem
-rw-r--r-- 1 root root 17 1月 25 15:11 ca.srl
-rw-r--r-- 1 root root 1224 1月 25 15:11 cert.pem
-rw-r--r-- 1 root root 1675 1月 25 15:10 key.pem
-rw-r--r-- 1 root root 1017 1月 25 15:10 server.csr
#生成容器
[root@K8s-master ~]#docker run -d --restart=unless-stopped \
-p 8090:80 -p 8443:443 \
-v /home/rancher/cert/cert.pem:/etc/rancher/ssl/cert.pem \
-v /home/rancher/cert/key.pem:/etc/rancher/ssl/key.pem \
-v /home/rancher/cert/cacert.pem:/etc/rancher/ssl/cacerts.pem \
-v /home/rancher/log/auditlog:/var/log/auditlog \
-e AUDIT_LEVEL=1 \
-v /home/rancher/data/rancher:/var/lib/rancher \
registry.docker-cn.com/rancher/server:v2.0.0-beta4

等待容器启动完成访问对应IP的端口

4.0、访问UI

权限管理,2.X 在第一次登录就会提示你写入密码

通过右下角更改语言

相对于1.6 认证减少了 ,现在只有两项了

而且好像默认这是了允许本地数据库中的账号访问

Rancher部署就先到这里了。

说一下HA吧

5.0、Rancher多节点HA部署

在高可用(HA)的模式下运行Rancher Server与使用外部数据库运行Rancher Server一样简单,需要暴露一个额外的端口,添加额外的参数到启动命令中,并且运行一个外部的负载均衡就可以了。

HA Rancher安装了第4层负载均衡器,描述了入口控制器的SSL终止

--取值官网

5.1、准备:

  • kubectl - Kubernet中的命令行工具。
  • rke - Rancher Kubernetes Engine,用于构建Kubernetes集群的cli。
  • helm - Kubernetes的包管理。

note:

v2.12.0和cert-manager存在问题,请使用Helm v2.12.1或更高版本

5.2、部署需求:

  • HA 节点

    • 1GB内存
    • 9345, 8080 端口需要在各个节点之间能够互相访问
    • 所有安装有支持的Docker版本的现代Linux发行版 RancherOS, Ubuntu, RHEL/CentOS 7 都是经过严格的测试。
      • 对于 RHEL/CentOS, 默认的 storage driver, 例如 devicemapper using loopback, 并不被Docker推荐。 请参考Docker的文档去修改使用其他的storage driver。
      • 对于 RHEL/CentOS, 如果你想使用 SELinux, 你需要 安装额外的 SELinux 组件.
  • MySQL数据库

    • 至少 1 GB内存
    • 每个Rancher Server节点需要50个连接 (例如:3个节点的Rancher则需要至少150个连接)
    • MYSQL配置要求
      • 选项1: 用默认COMPACT选项运行Antelope
      • 选项2: 运行MySQL 5.7,使用Barracuda。默认选项ROW_FORMAT需设置成Dynamic
  • 外部负载均衡服务器

    • 负载均衡服务器需要能访问Rancher Server节点的 8080 端口

在每个需要加入Rancher Server HA集群的节点上,运行以下命令:

docker run -d --restart=unless-stopped -p 8080:8080 -p 9345:9345 rancher/server \
--db-host DB_host.com --db-port 3306 --db-user username --db-pass password --db-name cattle \
--advertise-address <Node IP>

note:

每个节点的<Node IP> 唯一,这个IP会被添加到HA的设置中。

如果你修改了 -p 8080:8080 并在host上暴露了一个不一样的端口,你需要添加 --advertise-http-port <host_port> 参数到命令中。

5.3、HA模式下的RANCHER SERVER节点

如果你的Rancher Server节点上的IP修改了,你的节点将不再存在于Rancher HA集群中。

你必须停止在--advertise-address配置了不正确IP的Rancher Server容器并启动一个使用正确IP地址的Rancher Server的容器。

note:

每一个Rancher Server节点需要有4 GB 或者8 GB的堆空间,意味着需要8 GB或者16 GB内存

MySQL数据库需要有高性能磁盘

对于一个完整的HA,建议使用一个有副本的Mysql数据库。另一种选择则是使用Galera集群并强制写入一个MySQL节点。

参考:

https://rancher.com/docs/rancher/v2.x/en/overview/

https://my.oschina.net/wenzhenxi/blog/1822075

kubernetes (一)使用Rancher搭建集群的更多相关文章

  1. Kubernetes 部署 Nebula 图数据库集群

    Kubernetes 是什么 Kubernetes 是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效,Kubernetes 提供了应 ...

  2. k8S 搭建集群

    k8S 搭建集群1:修改主机名称hostnamectl --static set-hostname masterhostnamectl --static set-hostname node1hostn ...

  3. k8s+crio+podman搭建集群

    前言 在传统的k8s集群中,我们都是使用docker engine做为底层的容器管理软件的,而docker engine因为不是k8s亲生的解决方案,所以实际使用中会有更多的分层.之前我们也讲过,k8 ...

  4. ELK——Elasticsearch 搭建集群经验

    本文内容 背景 ES集群中第一个master节点 ES slave节点 本文总结 Elasticsearch(以下简称ES)搭建集群的经验.以 Elasticsearch-rtf-2.2.1 版本为例 ...

  5. redis 一二事 - 搭建集群缓存服务器

    在如今并发的环境下,对大数据量的查询采用缓存是最好不过的了,本文使用redis搭建集群 (个人喜欢redis,对memcache不感冒) redis是3.0后增加的集群功能,非常强大 集群中应该至少有 ...

  6. kubernetes kubeadm部署高可用集群

    k8s kubeadm部署高可用集群 kubeadm是官方推出的部署工具,旨在降低kubernetes使用门槛与提高集群部署的便捷性. 同时越来越多的官方文档,围绕kubernetes容器化部署为环境 ...

  7. Hadoop化繁为简-从安装Linux到搭建集群环境

    简介与环境准备 hadoop的核心是分布式文件系统HDFS以及批处理计算MapReduce.近年,随着大数据.云计算.物联网的兴起,也极大的吸引了我的兴趣,看了网上很多文章,感觉还是云里雾里,很多不必 ...

  8. Linux+.NetCore+Nginx搭建集群

    本篇和大家分享的是Linux+NetCore+Nginx搭建负载集群,对于netcore2.0发布后,我一直在看官网的文档并学习,关注有哪些新增的东西,我,一个从1.0到2.0的跟随者这里只总结一句话 ...

  9. Redis 实战篇之搭建集群

    Redis 集群简介# Redis Cluster 即 Redis 集群,是 Redis 官方在 3.0 版本推出的一套分布式存储方案.完全去中心化,由多个节点组成,所有节点彼此互联.Redis 客户 ...

随机推荐

  1. TCP/IP中的传输层协议TCP、UDP

    TCP提供可靠的通信传输,而UDP则常用于让广播和细节控制交给应用的通信传输. 传输层协议根据IP数据报判断最终的接收端应用程序. TCP/IP的众多应用协议大多以客户端/服务端的形式运行.客户端是请 ...

  2. python学习之由

    2019python之年: 2019是个挫折之年,但又是幸运之年,这一年创业遭遇滑铁卢,几与破产,充满着迷茫,路在何方?? 开始接触python是在微信朋友圈,结缘于广告,觉得很有意思,但一直没有深入 ...

  3. Java中的形参和实参的区别以及传值调用和传引用调用

    名词解析: 1.形参:用来接收调用该方法时传递的参数.只有在被调用的时候才分配内存空间,一旦调用结束,就释放内存空间.因此仅仅在方法内有效. 2.实参:传递给被调用方法的值,预先创建并赋予确定值. 3 ...

  4. ubuntu上安装lamp环境命令清单

    #install configuration manager sudo apt-get install tasksel #install basic lamp stack sudo tasksel i ...

  5. Ubuntu 修改$PS1 自定义命令提示符

    文章更新于:2020-03-25 文章目录 一.自定义命令提示符 1.可修改的是那部分? 2.修改 $PS1 变量 3.$PS1 变量格式 4.如何修改背景颜色 5.修改字体 二.Enjoy! 一.自 ...

  6. 【Selenium01篇】python+selenium实现Web自动化:搭建环境,Selenium原理,定位元素以及浏览器常规操作!

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 二.话不多说,直接开干,开始搭建自动化测试环境 这里以前在 ...

  7. day01-课后作业

    #1.写一个登陆的程序,最多登陆失败3次#2.输入账号 密码,如果登录成功,程序结束,提示 欢迎 xx 登录,今天的日期是 xx#3.登录失败,重新登陆#3.要判断输入是否为空,什么也不输入,输入空格 ...

  8. 深入了解CI/CD:工具、方法、环境、基础架构的全面指南

    本文来自Rancher Labs 持续集成和持续交付(CI/CD)是DevOps背后的助推力之一.如果你的企业正在考虑使用DevOps,那么CI/CD绝对是需要考虑的其中一部分.但是CI/CD到底意味 ...

  9. STC15F2K60S2串口通信的应用。

    前言:由于不可抗拒因素,初始的STC12C5A60S2芯片由于无法进行烧录(...因为没带有锁紧座的开发板),暂且使用STC15F2K60S2芯片.. 一 串行通信概述: 串口通信有SPI IIC U ...

  10. std::lock_guard和std::unique_lock的区别

    std::lock_guard 1 初始化的时候锁定std::mutex std::mutex m_mtx; std::lock_guard<std::mutex> m_lock(m_mt ...