云原生Kubernetes:Rancher管理k8s集群

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

一、理论

1.Rancher

2.Rancher 安装及配置

二、实验

1.Rancher 安装及配置

三、问题

1. Rancher 部署监控系统报错

四、总结


一、理论

1.Rancher

(1)  概念

Rancher 简介
Rancher 是一个开源的企业级多集群 Kubernetes 管理平台实现了 Kubernetes 集群在混合云+本地数据中心的集中部署与管理 以确保集群的安全性加速企业数字化转型。超过 40000 家企业每天使用 Rancher 快速创新。

官网https://docs.rancher.cn/

2Rancher 和 k8s 的区别
Rancher 和 k8s 都是用来作为容器的调度与编排系统。但是 rancher 不仅能够管理应用容器更重要的一点是能够管理 k8s 集群。 Rancher2.x 底层基于 k8s 调度引擎通过 Rancher 的封装用户可以在不熟悉 k8s 概念的情况下轻松的通过 Rancher 来部署容器到k8s集群当中。

3Rancher架构

Kubernetes 已经成为了容器管理的标准。大多数云服务和虚拟服务的提供商现在将 Kubernetes 作为标准的基础设施。用户可以使用 Rancher Kubernetes Engine简称 RKE或其他云服务提供商的容器服务如 GKE、AKS、 EKS 等创建 Kubernetes 集群。用户也可以将已有集群导入 Rancher集中管理。

Rancher架构如下

2.Rancher 安装及配置

1环境

表1 环境

节点主机IP地址
控制节点master1192.168.204.180
控制节点master2192.168.204.181
工作节点node1192.168.204.182
Rancher节点rancher192.168.204.30 

配置hosts文件

vim /etc/hosts

192.168.204.180   master1
192.168.204.181   master2    
192.168.204.182   node1
192.168.204.30    rancher

关闭安全机制

关闭防火墙
[root@ harbor~]# systemctl stop firewalld && systemctl disable firewalld


关闭selinux
[root@ harbor~]# setenforce 0
[root@harbor~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
注意修改selinux配置文件之后重启机器selinux才能永久生效

2安装docker

#配置docker-ce国内yum源阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装docker依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

#安装docker-ce
 yum install docker-ce -y

#启动docker服务
systemctl start docker && systemctl enable docker
 systemctl status docker

#查看Docker 版本信息
docker version  

#开启包转发功能和修改内核参数
modprobe br_netfilter

cat > /etc/sysctl.d/docker.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

sysctl -p /etc/sysctl.d/docker.conf

systemctl restart docker 

(3) 部署rancher

1、安装 rancher
#在 master1 节点下载 rancher-agent 镜像
docker pull rancher/rancher-agent:v2.5.7

#在 rancher 节点下载 rancher 镜像
docker pull rancher/rancher:v2.5.7

docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged --name rancher rancher/rancher:v2.5.7
#--restart=unless-stopped 表示在容器退出时总是重启容器但是不考虑在Docker守护进程启动时就已经停止了的容器

docker ps -a|grep rancher
23874501455d   rancher/rancher:v2.5.7   "entrypoint.sh"   30 seconds ago   Up 28 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   rancher


2、登录 Rancher 平台
需要先等一会儿再浏览器访问 http://192.168.204.30 由于未使用授信证书会有报警忽略即可
登录后如是英文页面可点击右下角语言选项选择中文

3、Rancher 管理已存在的 k8s 集群
选择【添加集群】点击【导入】
【集群名称】设置为 k8s-cluster点击【创建】
选择复制第三条命令绕过证书检查导入 k8s 集群

#在 k8s 控制节点 master01 上执行刚才复制的命令如第一次执行报错再执行一次即可
curl --insecure -sfL https://192.168.204.30/v3/import/l5kfqxwdgxlw8bsgjbzcskmjlnqmk8dd8kl5r976q9wnwq2vbf8xfh_c-jhkl2.yaml | kubectl apply -f -


kubectl get ns
NAME              STATUS   AGE
cattle-system          Active   2m20s
default                Active   93d
fleet-system           Active   2m2s
kube-node-lease        Active   93d
kube-public            Active   93d
kube-system            Active   93d
kubernetes-dashboard   Active   92d


kubectl get pods -n cattle-system -o wide
NAME                                    READY   STATUS    RESTARTS   AGE    IP           NODE     NOMINATED NODE   READINESS GATES
cattle-cluster-agent-f9bbd6fb8-d7dbg   1/1     Running   0          2m26s   10.244.137.65   master1   <none>           <none>

kubectl get pods -n fleet-system -o wide
NAME                           READY   STATUS    RESTARTS   AGE    IP           NODE     NOMINATED NODE   READINESS GATES
fleet-agent-55bfc495bd-gd95w   1/1     Running   0          117s   10.244.166.149   node1   <none>           <none>

4、Rancher 部署监控系统
点击【启用监控以查看实时监控】
【监控组件版本】选择 0.2.1其他的默认即可
点击【启用监控】启动监控时间可能比较长需要等待10分钟左右

5、使用 Rancher 仪表盘管理 k8s 集群
//以创建 nginx 服务为例
点击【仪表盘】进入 k8s 集群仪表盘界面

#创建名称空间 namespace
点击左侧菜单【Namespaces】再点击右侧【Create】
【Name】输入 dev【Description】选填可自定义
点击右下角【Create】

#创建 Deployment 资源
点击左侧菜单【Deployments】再点击右侧【Create】
【Namespace】下拉选择 dev【Name】输入 nginx-dev【Replicas】输入 3
点击中间选项【Container】【Container Image】输入 nginx:1.14【Pull Policy】选择 IfNotPresent
在【Pod Labels】下点击【Add Lable】【Key】输入 app【Value】输入 nginx
点击中间选项【Labels and Annotations】点击【Add Label】【Key】输入 app【Value】输入 nginx
点击右下角【Create】

#创建 service
点击左侧菜单【Services】再点击右侧【Create】
点击【Node Port】
【Namespace】下拉选择 dev【Name】输入 nginx-dev
【Port Name】输入 nginx【Listening Port】输入 80【Target Port】输入 80【Node Port】输入 30180
点击中间选项【Selectors】【Key】输入 app【Value】输入 nginx
点击右下角【Create】
点击【nginx-dev】查看 service 是否已关联上 Pod

#点击 service 资源的节点端口 30180/TCP可以访问内部的 nginx 页面了

二、实验

1.Rancher 安装及配置

1环境

表1 环境

节点主机IP地址
控制节点master1192.168.204.180
控制节点master2192.168.204.181
工作节点node1192.168.204.182
Rancher节点rancher192.168.204.30 

修改主机名

配置hosts文件

关闭安全机制

配置rancher到k8s主机互信

2安装docker

安装docker依赖包

安装docker-ce

启动docker服务

查看Docker 版本信息

(3) 安装rancher

在 master1 节点下载 rancher-agent 镜像

在 rancher 节点下载 rancher 镜像

--restart=unless-stopped 表示在容器退出时总是重启容器但是不考虑在Docker守护进程启动时就已经停止了的容器

查看进程

4登录 Rancher 平台

需要先等一会儿再浏览器访问 http://192.168.204.30 由于未使用授信证书会有报警忽略即可

登录后如是英文页面可点击右下角语言选项选择中文

提示关闭即可

5Rancher 管理已存在的 k8s 集群

右下角设置语言

选择【添加集群】点击【导入】

【集群名称】设置为 k8s-cluster点击【创建】

选择复制第三条命令绕过证书检查导入 k8s 集群
在 k8s 控制节点 master01 上执行刚才复制的命令如第一次执行报错再执行一次即可

添加成功

master节点查看信息

6Rancher 部署监控系统

启用监控

7使用 Rancher 仪表盘管理 k8s 集群

8创建名称空间 namespace

点击左侧菜单【Namespaces】再点击右侧【Create】

Name】输入 dev【Description】选填可自定义
点击右下角【Create】

9创建 Deployment 资源

点击左侧菜单【Deployments】再点击右侧【Create】
【Namespace】下拉选择 dev【Name】输入 nginx-dev【Replicas】输入 3
点击中间选项【Container】【Container Image】输入 nginx:1.14【Pull Policy】选择 IfNotPresent
在【Pod Labels】下点击【Add Lable】【Key】输入 app【Value】输入 nginx
点击中间选项【Labels and Annotations】点击【Add Label】【Key】输入 app【Value】输入 nginx
点击右下角【Create】

10创建 service

点击左侧菜单【Services】再点击右侧【Create】
点击【Node Port】
【Namespace】下拉选择 dev【Name】输入 nginx-dev
【Port Name】输入 nginx【Listening Port】输入 80【Target Port】输入 80【Node Port】输入 30180
点击中间选项【Selectors】【Key】输入 app【Value】输入 nginx
点击右下角【Create】

点击【nginx-dev】查看 service 是否已关联上 Pod
 

点击 service 资源的节点端口 30180/TCP可以访问内部的 nginx 页面了

三、问题

1. Rancher 部署监控系统报错

1报错

2原因分析

CPU内核数与内存需要扩容

3解决方法

调大内核与内存

修改前

修改后

四、总结

官方提供了三种安装模式docker、单节点、集群高可用
 

Rancher有docker安装在单节的模式也有这样的把rancher安装在K8S集群里的高可用模式。

Rancher有如下问题

直观上Rancher给人的感觉是它是K8S的上游可以管理多个K8S集群但是一个高可用的集群又往往需要安装在K8S集群中

Rancher可以理解为K8S的上层2.x版本以后有点像Anaconda与Python的关系但是由于Anaconda没有高可用问题结构很清晰早前Rancher和Kubernetes是在同一个赛道上的都是做容器编排的后来随K8S大火2.x以后Rancher就等价于Kubernetes的超集了。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: k8s