您当前的位置: 首页 > 

cuiyaonan2000

暂无认证

  • 0浏览

    0关注

    248博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Rancher2.x--stable版本环境搭建

cuiyaonan2000 发布时间:2020-10-30 14:55:10 ,浏览量:0

序言

    目前K8S是大趋所示,对容器的编排管理有一统江湖的意思。

  • Rancher 2.0发布之后,基础编排平台从Cattle变成了Kubernetes,Rancher 2.0使用的编排技术完成转向成为Kubernetes,
  • Rancher 2.0与Rancher 1.6有了很大区别。目前,在这两个版本之间还没有直接的升级路径。

    基于如上的种种原因我们直接从Rancher2.X开始学习,没有必要再去学习一定会被取代的东西和知识点了。

本文主要内容来自于:

  1. 入门必读 | Rancher文档  -----------api说明
  2. Rancher 2.0.x - 2.4.x 文档 | Rancher | Rancher文档               ----------------------rancher2.X版本总说明页面
  3. 安装指南 | Rancher文档                 ------------2.4.X版本的安装与2.5.X版本的安装不一样.
  4. centos7系统部署rancher2.x,并创建k8s集群_51CTO博客_k8s集群部署    (特别鸣谢+>+)
准备工作 安装失败处理办法

如果内置启动创建K8S会有很多问题,这时候就需要清空下实例,重新搭建.方法如下(心酸的血泪史,建议不要安装最新版本的rancher因为未知的坑在等待你,选择rancher/rancher:stable版本):

docker stop $(docker ps -aq)
docker system prune -f
docker volume rm $(docker volume ls -q)

for mount in $(mount | grep tmpfs | grep '/var/lib/kubelet' | awk '{ print $3 }') /var/lib/kubelet /var/lib/rancher; do umount $mount; done

rm -rf /etc/ceph \
       /etc/cni \
       /etc/kubernetes \
       /opt/cni \
       /opt/rke \
       /run/secrets/kubernetes.io \
       /run/calico \
       /run/flannel \
       /var/lib/calico \
       /var/lib/etcd \
       /var/lib/cni \
       /var/lib/kubelet \
       /var/lib/rancher/rke/log \
       /var/log/containers \
       /var/log/pods \
       /var/run/calico

 

安装Rancher 2.x

首先需要安装Docker,具体参考Docker概述与安装使用_cuiyaonan2000的博客-CSDN博客

#修改时区
[cuiyaonan2000@mzdssop soft]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime


#首先同步时间,这个在集群环境中非常重要
[cuiyaonan2000@mzdssop soft]# yum -y install ntp
[cuiyaonan2000@mzdssop soft]# systemctl enable ntpd
[cuiyaonan2000@mzdssop soft]# systemctl start ntpd
[cuiyaonan2000@mzdssop soft]# timedatectl set-ntp yes
[cuiyaonan2000@mzdssop soft]# ntpdate -u cn.pool.ntp.org
[cuiyaonan2000@mzdssop soft]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime   
[cuiyaonan2000@mzdssop soft]# watch -n 1 'date'

#关闭Selinux
[cuiyaonan2000@mzdssop soft]# sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

#修改语言环境
[cuiyaonan2000@mzdssop soft]# sudo echo 'LANG="en_US.UTF-8"' >> /etc/profile;source /etc/profile





#安装anchore最新版本 
#注意这里增加了一个 --privileged,如果不加则会报错
#privileged 的作用其实就是启动的 container内的root拥有真正的root权限
#2.4.X即以前不需要使用privileged
#2.5.X需要使用privileged
[cuiyaonan2000@mzdssop soft]# sudo docker run -d --privileged --restart=unless-stopped --name myRancher  -p 80:80 -p 443:443 rancher/rancher

设置账号密码,以及设置能访问该rancher的ip或者域名

右下角将英文切换成中文,左下角是rancher的版本号

创建K8S集群

点击集群选项卡右上角的----添加集群--》选择自定义创建

可以看到K8S的服务商有很多哈,这里我们是选择从现有节点中创建。cuiyaonan2000@163.com

这里只输入个集群名称就行了,同时也可以选择K8S的版本这里我就用的默认

如下的这个步骤很重要(这里的命令是用于添加集群,同时给运行的集群设置角色,------即不同机器添加不同的角色,运行不同的命令)

  • 主机选项中勾选 Etcd 与 Control 两个选项,复制命令,然后在 master 主机执行命令---如此表示该主机是管理机器
  • 主机选项中勾选 Worker ,复制命令,然后在 node 主机执行命令----如此表示该主机是工作主机
  • 官方文档说明的是,在主机和工作机器上都分别执行后再点击如下截图的完成。但是后续应该可以再动态添加的。cuiyaonan2000@163.com

执行完上面的步骤后--其实要很长时间这里我就做了2台虚拟机。

如下所示:红色字体表示当前正在做的事情-----全自动。中间如果服务器挂掉了也没事它也会自动重启然后在继续搭建k8s服务器

因为--restart=unless-stopped   总之这是个很漫长的过程 慢慢等待吧,除非有什么问题。

如下可以看到2个角色 一个是 所有角色 一个 worker角色,且都在配置阶段------这个有点坑为啥呢,因为中间如果有问题你不知道啊,然后程序就会不断的重启去搭建K8S。。。。。。很坑

最终如果现实如下的内容就表示成功了.状态是active,处理器和内存占有率可以看到,最新版本的安装把我坑惨了,各种问题~~~~~~~~~~~~~~~~~~~~~~~~~

部署工作负载

工作负载即 Kubernetes 对一组 Pod 的抽象模型,用于描述业务的运行载体,包括 Deployment、Statefulset、Daemonset、Job、CronJob 等多种类型,详情请参考名词解释。

官网上提供了两种类型的工作负载:它们都是将集群外部流量导入到集群内的方式,只是实现方式不同-----cuiyaonan2000。

  • 部署带有 Ingress 的工作负载
  • 部署带有 NodePort 的工作负载
NodePort

NodePort 服务是引导外部流量到你的服务的最原始方式。

NodePort,正如这个名字所示,在所有节点(虚拟机)上开放一个特定端口,任何发送到该端口的流量都被转发到对应服务。

Ingress

Ingress 事实上不是一种服务类型。相反,它处于多个服务的前端,扮演着“智能路由”或者集群入口的角色。

例如:任何发往域名 foo.yourdomain.com 的流量转到 foo 服务,将路径 yourdomain.com/bar/path 的流量转到 bar 服务。

创建过程
  1. 访问集群页面,选择您刚刚创建的集群,进入集群页面。

  2. 从集群页面的主菜单中选择项目/命名空间。

  3. 打开 项目:Default。

  4. 单击资源 > 工作负载。如果您使用的是 v2.3.0 之前的版本,请单击 工作负载 > 工作负载。

  5. 单击部署。结果: 打开部署工作负载 页面。

  6. 输入工作负载的名称。

  7. 在Docker 镜像一栏,输入nginx的镜像地址,请注意区分大小写字母。

  8. 余下的选项保持默认配置即可。

  9. 单击运行。

 

暴露服务#

上述步骤帮助您完成了工作负载的部署,现在您需要将服务暴露出来,让其他服务可以通过网络连接和调用这个工作负载。

  1. 访问集群页面,选择您刚刚创建的集群,进入集群页面。

  2. 从集群页面的主菜单中选择项目/命名空间。

  3. 打开 项目 > Default。

  4. 单击资源 > 工作负载 > 负载均衡。如果您使用的是 v2.3.0 之前的版本,请单击 工作负载 > 负载均衡。

  5. 单击添加 Ingress

  6. 输入 Ingress 负载均衡的名称,如 “hello”。

  7. 在目标一栏,从下拉菜单选择您服务的名称。

  8. 在端口一栏输入 80

  9. 余下的选项保持默认配置即可,单击保存。

结果: 这个工作负载分配到了一个sslip.io地址,已经暴露出去了。可能需要 1~2 分钟完成服务关联。

用例部署

Rancher Server 中存在一个项目的概念,默认存在两个项目:default 和 system,类似于 namespaces 但是并不是 namespaces,而且 namespaces 还率属于某项目下,项目可以配置 Pod 安全策略以及资源配额,可以理解为更好的划分各个项目资源隔离。default 项目可以理解为非系统项目的个人自定义项目,system 项目可以理解为具有所有 Kubernetes 和 Rancher 系统命名空间的系统项

在我们成功创建一个集群后,系统会自动创建2个项目一个是Default,一个是System,如下图所示.这里我们选择Default里面进行相关容器的部署

选择-->部署服务

你可以在部署页中输入你的应用名称,可以指定部署多少个Pod(k8s中的概念),选择对应的镜像,然后配置各种参数策略,

如果你想进行数据持久化可以到数据卷的tab中进行配置,

如果你有参数的定义可以到环境变量的tab中进行指定,最后再启动它。

这看起来似乎是更方便的让我们执行了docker run命令,前提是你得熟悉docker中各种命令的使用及含义

如下我们启动一个tomcat镜像----这里有个小问题就是tomcat镜像没法用,启动了访问不了,使用tomcat:alpine镜像就没问题cuiyaonan2000@163.com

Rancher自带Nginx端口解决

其实吧Rancher的负载均衡也是使用的Nginx这是防止在System命名空间中的,所以他会默认占用80端口.如果有冲突我们就需要去修改System命名空间下的Nginx端口cuiyaonan2000@163.com

修改映射端口

 修改nginx启动参数

最后增加http-port 或者根据需要同时添加https-port即可

Ui界面设置私有仓库连接的账号密码信息

首先选择集群 然后选择对应的命名空间,后在在资源中选择密文,主要应用于我们没有在docker环境中 login到其它的镜像仓库. 但是我们在Rancher创建负载的时候制定了其它的镜像仓库地址cuiyaonan2000@163.com

 

容器发现

对于创建的每个工作负载,都会创建一个相应的服务发现。此服务发现使用以下命名约定为工作负载的容器启用 DNS 解析: ..svc.cluster.local。同理删除工作负载的时候也会同时删除相应的服务发现.

您还可以创建其他服务发现。您可以使用这些 DNS 记录,让用户可以通过 DNS 解析到一个或多个外部 IP 地址,外部主机名,另一个 DNS 记录的别名,其他工作负载或一组与您创建的选择器匹配的 Pod。-----------可以灵活的自定义服务的路由规则

操作流程:

  1. 从全局视图中,打开要添加 DNS 记录的项目。

  2. 在主导航栏中单击资源。单击服务发现标签。(在 v2.3.0 之前的版本中,只需单击服务发现选项卡。)然后单击添加记录。

  3. 输入 DNS 记录的名称。此名称用于 DNS 解析。

  4. 从下拉列表中选择一个命名空间。或者您可以通过单击添加到新命名空间来动态创建新命名空间。

  5. 选择一个解析到选项,以将请求路由到 DNS 记录。

    1. 一个或多个外部 IP 地址(用于容器访问外部的服务的路由设置,使用IP)

      在目标 IP 地址字段中输入 IP 地址。通过单击添加 目标 IP添加更多 IP 地址。

    2. 外部主机名(用于容器访问外部的服务的路由设置,使用域名)

      输入目标主机名。

    3. 另一个 DNS 记录值的别名

      单击添加目标记录,然后从值下拉列表中选择另一个 DNS 记录。

    4. 一个或多个工作负载

      单击 添加目标工作负载 然后从值下拉列表中选择另一个工作量.

    5. 与选择器匹配的 Pods

    输入的键值对标签选择器为与您的参数匹配的所有 Pod 创建记录。

  6. 单击 创建

结果: 创建了一个新的 DNS 记录。

您可以通过项目的服务发现选项卡查看记录。 您可以通过 ..svc.cluster.local 来使用新创建的 DNS 记录,它将按照您的配置进行解析。

项目&命名空间

项目是 Rancher 引入的一个概念,是由一个或多个命名空间构成的集合。您可以将多个命名空间作为一个组进行管理,并在其中执行 Kubernetes 操作。您可以使用项目来支持租户权限管理,例如设置团队可以访问集群中的某个项目,但不能访问同一集群中的其他项目。

命名空间是 Kubernetes 的概念,它允许在集群中创建虚拟集群,这对于将集群划分为单独的“虚拟集群”非常有用,每个虚拟集群都有自己的访问控制和资源配额。

创建项目&命名空间

 

 如下我们还能根据不同的项目设置它的硬件使用情况.棒棒cuiyaonan2000@163.com

关注
打赏
1638267374
查看更多评论
立即登录/注册

微信扫码登录

0.0417s