【云原生】Rancher 从搭建到使用详解

前言

随着容器化的逐渐普及,以docker为基础的云原生概念也逐步有了市场,尤其是最近几年,docker的飞速发展,带动了一大批周边的生态构建,比如大家熟知的 k8s 等。

当越来越多的企业逐步开始尝试以容器化的方式部署应用服务时,一种基于容器化的编排,发布,运维等一体化的管理方案就亟需解决,于是市面上陆续出现了不少这种管理类的工具平台,比如:Openshift,蓝鲸,Rancher ,shipyard等;

不同的平台有各自的适用场景,从部署、搭建、运维等成本也不一样,本篇以Rancher 为例,做一个详细的说明。

一、什么是 Rancher

  • 官网地址:https://rancher.com ;
  • 开源的企业级的Pass容器管理平台,通过rancher,企业不需要再适用一系列的开源组件从头搭建自己的容器平台了;
  • Rancher提供了在生产环境下使用的管理Docker和Kubernetes的全栈化容器部署与管理平台;

二、Rancher 特性

1、作为企业级容器编排的基础设施

  • 可以使用任何公有云或者私有云的linux主机资源;
  • linux主机可以是虚拟机,也可以是物理机;
  • Rancher 只需要主机有CPU,内存,本地磁盘和网路资源即可,即从Rancher 的角度讲,一台云厂商提供的虚拟机和自己的一台物理机是一样的;

2、集中式的容器编排与调度

  • 几乎包含了当下全部主流的编排调度引擎,比如:Docker Swarm ,Kubernetes,Mesos;
  • 同一个用户可以创建Swarm或者Kubernetes集群,并且可以使用原生的Kubernetes或者Swarm工具管理创建的应用;
  • 除了 Swarm ,Kubernetes,Mesos 之外,Rancher还支持自己的Cattle容器编排调度引擎;
  • Cattle被广泛用于编排Rancher自己的基础设施服务以及用于Swarm 集群,Kubernetes集群和Mesos集群的配置,管理与升级等;

更详细的关于 Rancher的介绍参考:rancher中文文档 ,下图是Rancher提供的核心功能图

三、Rancher 安装与部署

rancher对网络要求比较高,因为其内部包含的组件比较多,需要下载大量的安装包,部分模块的组件可能需要从中央仓库(海外拉取),所以初次安装时可能会出现拉取镜像失败的问题,如果是云服务器,建议配置镜像加速源;

最低配置:2核 8G,建议配置:4核8G,推荐使用云服务器;

1、使用docker安装Rancher

使用下面的docker命令启动rancher容器(官方也有)

docker run -d --restart=unless-stopped -p 8888:8080 rancher/server

注意点

映射端口可以根据自己的情况指定,只要与系统中其他端口不冲突即可

安装过程

初次安装时,拉取镜像可能需要花费较长的时间,需要耐心等待一会儿,待启动完毕即可

控制台访问

使用IP+端口访问rancher控制台,初次访问效果如下 

如果英文看不懂,可切换右下角的语言为中文

 

修改密码

环境搭建好了之后,首先要做的是修改密码,否则管控台相当于是直接裸露的,点击“访问控制”进行密码修改;

注销之后再次刷新页面就来到了登录界面,输入用户名、密码即可

四、Rancher 核心功能演示

完成Rancher的安装部署之后,接下来以Rancher的核心功能为线索,体验下核心功能的使用,方便后续需要的时候可以快速查阅;

1、设置环境

在日常开发、测试与发布中,通常会涉及到多套环境,通过区分环境,可以让整个过程更加有序,管理也更方便,在rancher的管控台上,也可以创建不同的环境以应对后续的需要;

这里我们设置2个环境,一个开发环境,一个测试环境用于演示

2、应用商店

应用商店里提供了很多开发过程中可能涉及到的中间件,比如kafka,zk等,后续可以根据需要有选择的安装;

3、添加主机

通过上面的介绍,我们了解到其实Rancher的模式就是 server-client模式,比如上面安装完毕之后,这个就是Rancher的服务端,后面可以添加很多主机,这些主机就可以被server纳管,server端就可以通过控制台在安装其他服务时指定具体的某个主机;

 点击保存后来到下面的页面,在红框中填写主机IP

再将图中步骤5中的一段命令拷贝到填写的主机中运行

通过上一步的操作,可以理解为当前的这台机器就纳入到Rancher进行管理了,从主机菜单也可以看到,刚刚添加的主机已经被纳管,后续可以根据需要,将更多新的机器纳入进去;

4、容器管理

点击菜单栏中的“容器”,展示出了当前主机下的所有容器,比如运行中的,停止状态的,也可以针对单个容器进行日常的管理操作,比如启动、停止、删除等操作;

 以上简单介绍了Rancher管控台的常用功能,应该来说,这对大多数人来说都不难,多操作一下就会用了,接下来,让我们使用Rancher在线部署一些常用的中间件吧,通过Rancher管控台,就不需要像往常那样,比如使用docker安装mysql,需要敲一大堆的命令了,直接在线安装即可;

五、使用Rancher 部署中间件

1、部署redis6

还记得下面这个使用docker命令启动一个redis服务吗

docker run -itd --name my-redis -p 6379:6379 \
-v /usr/local/docker/redis/data:/data \
-v /usr/local/docker/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
redis:6.2.4 --requirepass 123456

点击添加应用

 

 创建完毕后,点击添加服务

 在这一栏主要填写容器的自定义名称,端口映射信息,redis版本号(版本号可以从中央仓库查询)

接下来,从左到的tab页,依次做如下设置

设置客户端连接密码

设置容器数据卷

其他的可以保存默认状态即可,然后点击创建,等待创建完成并启动后就可以使用了,可能过程会毕竟慢,初次启动要拉取镜像会耗费一定的时间;

 

进入之后,可以查看当前redis这个容器的详细信息,可以在这里对其进行日常的管理; 

服务升级

升级是Rancher提供的一个个人认为很实用也很好用的功能,试想在真实的生产环境下,通常服务都是集群(多节点)部署的以确保高可用,同样来说,在日常服务升级过程中,为了保证整个系统的服务不会因为某个服务升级而中断,通常可以采用灰度升级的方式,其核心就是服务轮起,即升级某个服务时,确保集群中的另一个服务可用;

在Rancher这里,提供了类似的功能,通过配置升级相关策略,可以确保在容器升级过程中,始终有一个或多个容器可对外提供服务,具体操作如下:

点击升级

只需要对下面的界面做简单的配置即可

 

点击创建后,可看到如下的状态,然后点击升级完成即可,升级完成后,只会保留一个可提供服务的容器;

 

 

也可以使用客户端尝试进行连接

 2、部署mysql

上面掌握了使用Rancher部署redis之后,再尝试部署一下mysql吧,下面的流程对大家来说就很简单了;

使用docker部署mysql命令

docker run -p 3309:3306 --name mysql57 \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root@123456 \
-d mysql:5.7

基础配置,名称,端口映射信息

环境变量,数据卷等

 然后点击创建即可,等待容器启动完成就可以使用了

使用客户端进行连接测试

总结

本文通过较大的篇幅详细讲解了Rancher的使用,更深入的内容有兴趣的同学可以结合官网进行学习,本篇作为一个引导为看到的同学提供一个参考,希望对您有用。

原文地址:https://blog.csdn.net/zhangcongyi420

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读942次。kube-controller-manager 和 kubelet 是异步工作的,这意味着延迟可能包括任何的网络延迟、apiserver 的延迟、etcd 延迟,一个节点上的负载引起的延迟等等。当 Kubernetes 中 Node 节点出现状态异常的情况下,节点上的 Pod 会被重新调度到其他节点上去,但是有的时候我们会发现节点 Down 掉以后,Pod 并不会立即触发重新调度,这实际上就是和 Kubelet 的状态更新机制密切相关的,Kubernetes 提供了一些参数配置来触发重新调度的时间。_node-monitor-period
文章浏览阅读3.8k次。上篇文章详细介绍了弹性云混部的落地历程,弹性云是滴滴内部提供给网约车等核心服务的容器平台,其基于 k8s 实现了对海量 node 的管理和 pod 的调度。本文重点介绍弹性云的调度能力,分为以下部分:调度链路图:介绍当前弹性云调度体系链路,对架构体系有一个初步的认知k8s 调度能力的运用:整体介绍弹性云现在用到的 k8s 调度能力和对其的增强k8s 版本的升级:介绍到从 k8s 1.12 到 1...._滴滴机房 腾讯
文章浏览阅读897次。对于cpu来说,这种分配方式并不会有太大问题,因为cpu可以灵活调度,numa调度时我们只计算绑定了numa cpu的pod是可以接受的,但是对于内存来说,numa node上申请了的内存无法做到随时迁移,这就会导致调度器视角numa node的mem资源足够,但是等到pod真正使用时,由于没有绑定numa node的pod申请的内存,导致numa node的mem资源不足,造成swap中断或者远端内存申请,这会对绑定mem的pod来带来性能损耗。忽略了没有绑定numa node的pod资源。_kubectl numa
文章浏览阅读796次,点赞17次,收藏15次。只要在Service定义中设置了ClusterIp:None,就定义了一个HeadLess Service, 它与普通的Service关键区别在于它没有ClusterIp地址,如果解析HeadLess Service的DNS域名,则会返回该Service对应的全部Pod的EndPoint列表,这就意味着客户端是直接与后端的pod建立了TCP/IP链接进行通信的。一个Label是一个键值对。注解:属于资源对象的元数据,可以被理解为一种特殊的标签,不过更多的是与程序挂钩,通常用于实现资源对象属性的自定义扩展。
文章浏览阅读763次。但是此时如果配置成 NONE, 租户创建成功了,但是无法创建资源文件,也就是无法上传文件,可能 dolphinscheduler 团队就想着将文件上传到 hdfs,暂不支持本地。需要将 resource.storage.type 置为 NONE, 因为我之前用的 1.3.6 版本的时候,即使资源文件存在本地文件也需要配置成 hdfs。_[error] 2023-10-24 18:10:43.762 +0800 org.apache.dolphinscheduler.api.servic
文章浏览阅读2.7k次,点赞2次,收藏13次。公司使用的是交老的k8s版本(1.16),由于老版本的K8s对于现在很多新特性不支持,所以需要升级到新版本。目前2023年7月11日最新版本的k8s是v1.27.3。通过参考官方文档进行k8s部署工作。其中涉及到操作系统配置、防火墙配置、私有镜像仓库等。_k8s最新版本
文章浏览阅读1.8w次,点赞14次,收藏27次。能节省你在kubeadm init 时遇到问题的排错时间⌚️。整合了网上大佬
文章浏览阅读1.1k次,点赞2次,收藏7次。具体操作步骤可以参考之前的教程,建议是先安装一台,然后克隆虚拟机,这样速度快。注意:在克隆时记得修改Mac地址、IP地址、UUID和主机名。(最后别忘了保存下快照~)_部署k8s集群
文章浏览阅读863次,点赞23次,收藏16次。当部署完 Kubernetes,便拥有了一个完整的集群。一组工作机器,称为节点, 会运行容器化应用程序。每个集群至少有一个工作节点。工作节点会 托管Pod ,而 Pod 就是作为应用负载的组件。控制平面管理集群中的工作节点和Pod。说人话版本:集群:cluster,多个几点被组织到一起共同为系统提供服务过程称之为集群。本质上是将承载同一个软件服务节点组织到一起,称之为该软件(服务)的集群,当然集群中的节点身份地位是不一样的。k8s集群也是如此,他也是多个节点组成。
文章浏览阅读943次。Rancher是一个开源的企业级多集群Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理,以确保集群的安全性,加速企业数字化转型。Rancher 1.0版本在2016年就已发布,时至今日,Rancher已经成长为企业在生产环境中运行容器和Kubernetes的首要选择。_rancher管理k8s
文章浏览阅读742次,点赞2次,收藏3次。本篇来讲解如何在centos下安装部署高可用k8s集群。_kubeadm ha keepalived + nginx
文章浏览阅读1.9k次,点赞21次,收藏25次。那么这个空间设置成内存的2倍大小。点击IPv4设置--手动--添加--设置ip--设置DNS服务器,最后点击--“保存”;首先选中--“本地标准磁盘”,存储配置--自定义分区,点击--“完成”;在--主机名--设置主机名:(例如k8s-master01),点击--点击+,设置--挂载点/boot--期望容量,点击--添加挂载点;点击--+--挂载点swap--期望容量,点击--“添加挂载点”;默认选择--亚洲--上海,并调整日期和时间,点击--“完成”;设备类型--确认--LVM,卷组--选择“修改”;_euler 服务器搭建
文章浏览阅读1k次。在1.25版本的k8s集群中部署gpu-manage时,虽然显示gpu节点上gpu-manage的pod实例都是running状态,但是给pod申领。既可以用源码的Makefile自动编译打包成新的镜像,但是源码的。说明gpu-manager和容器运行时接口通信失败了。编译后的镜像在1.25版本的k8s中可以正常使用。,但是在k8s1.23版本之后,接口路径已经改为。资源时,却始终找不到有资源的节点。,另外有一些依赖需要国际上的支持。可以看到这里用的运行时接口是。查看节点的详情时,返回的。_launch gpu manager 报错 can't create container runtime manager: context dead
文章浏览阅读1k次,点赞18次,收藏16次。SelfLink:API的资源对象之一,表示资源对象在集群当中自身的一个连结,self-Link是一个唯一的标识号,可以用于标识k8s集群当中的每个资源的对象。容器里使用的配置,在provisioner当中定义好环境变量,传给容器,storageclass的名称,NFS服务器的地址,NFS的目录。NFS的provisionner的客户端以pod的方式运行在集群当中,监听k8s集群当中PV的请求,然后动态的创建于NFS相关的PV。命名为 nfs-client-provisioner-clusterrole。
文章浏览阅读6.3k次,点赞2次,收藏20次。k8s证书过期解决方案之替换证书_k8s证书过期如何更换
文章浏览阅读1k次。KMS,Key Management Service,即密钥管理服务,在K8S集群中,以驱动和插件的形式启用对Secret,Configmap进行加密。以保护敏感数据
文章浏览阅读888次。exporter对于云服务的监控还是很不完美,毕竟每家都有自己的护城河。自动发现多实例这样的借助consul 阿波罗这样的会简单一些。aws可以借助cloudwatch这样的导入模板到grafana中。还是希望能将类似腾讯云云监控中的这些指标采集到prometheus中,但是这过程应该还很遥远grafana出图 prometheus查询语法这些东西有时间的好好研究一下。报警有必要进行分级别,收敛配置一下!_command: - "-redis.password-file=/redis_passwd.json
文章浏览阅读1k次。可以在此处(https://cloud.google.com/kubernetes-engine/docs/how-to/kube-dns)和此处(https://www.digitalocean.com/community/tutorials/an-introduction-to-the-kubernetes-dns-service)找到更多的详细信息。-or-ipvs/)和此处(https://arthurchiao.art/blog/cracking-k8s-node-proxy/)。_k8s默认命名空间
文章浏览阅读4.9k次,点赞11次,收藏32次。如果运行runc命令时提示:runc: error while loading shared libraries: libseccomp.so.2: cannot open shared object file: No such file or directory,则表明runc没有找到libseccomp,需要检查libseccomp是否安装,本次安装默认就可以查询到。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。所有主机均需要操作。_kubernetes 1.28
文章浏览阅读3.6w次,点赞118次,收藏144次。Canal 提供了网络功能,使得 Kubernetes 集群中的 Pod 可以相互通信,并与集群外部的服务进行通信。它通过网络插件的方式,为每个 Pod 分配唯一的 IP 地址,并管理网络流量的路由和转发。此外,Canal 还支持网络策略,用于定义 Pod 之间的通信规则和安全策略。Canal 基于 Calico 和 Flannel 项目,结合了二者的优点。它使用 Calico 的数据平面,提供高性能的网络转发和安全特性,同时使用 Flannel 的控制平面,实现 IP 地址管理和网络策略的配置。_k8s canal