Skip to main content
开放网络的先行者与推动者—星融元
加入我们技术支持(Support)  TEL:(+86)4000989811
Kukernetes、容器

Rancher-Kubernetes容器化部署方案

1 Rancher简介

Rancher是一套容器管理平台,它可以帮助组织在生产环境中轻松快捷的部署和管理容器。 Rancher可以轻松地管理各种环境的Kubernetes,满足IT需求并为DevOps团队提供支持。

Kubernetes手动部署非常复杂,Rancher容器化部署相对来说比较简单,并且Rancher支持Web端管理Kubernetes,而Kubernetes原生的Dashboard只提供监控。

2 Kubernetes简介

Kubernetes已成为容器集群管理标准,通过YAML文件来管理配置应用程序容器和其他资源。Kubernetes执行诸如调度,扩展,服务发现,健康检查,密文管理和配置管理等功能。

3 组件

  一个Rancher-Kubernetes集群由多个节点组成:

  • Etcd database:通常在一个节点上运行一个etcd实例,存储K8s中IP地址等信息
  • Rancher-server:Rancher管理平台,用户通过Rancher Web端配置K8s集群
  • Master nodes:K8s主节点是无状态的,用于运行API Server,调度服务和控制器服务
  • Worker nodes:K8s工作负载节点,运行容器

4 Rancher-K8s对比源码K8s

优点:

  • 采用图形化方式:易用的Web管理界面,在Docker易用性的基础上,再一次降低了使用容器技术部署容器应用的难度
  • 支持多种调度器:通过环境模板,很容易地创建和部署Swarm、K8S容器集群管理调度平台
  • 管理主机集群:管理对象是多台主机的集群,而不仅仅是单台容器主机,创建和管理几台、几十台应用服务器集群,只需要复制粘贴就解决了
  • 内置应用商店:使用其中的应用模板,创建一个WordPress博客系统,只需点点鼠标,部署简单
  • 资源弹性分配内置应用负载均衡器,“服务”最小只需1个容器实例,当负载不够/或过剩时,只需点点鼠标,增加/减少“服务”中容器的实例数,即可解决问题,应用系统具有天生的弹性扩容能力。

缺点:

  • K8S部署的问题由于国内网络和国外网络访问的问题,在国内部署K8S集群,有点不方便
  • 应用商店的问题默认的Rancher官方认证和社区贡献的应用商店内容有限,应用还不够丰富,基本上都是网络和存储等基础的应用;个别应用部署后,无法通过相同的操作,再部署同样的另一套应用,比如Rancher NFS
  • 故障拍错的问题:因为Rancher-K8s是一键打包部署好的,组件容器化,如果遇到问题会为排障带来很大的困难

5 环境准备

本次部署三台Server,一台作为Rancher-server,一台作为Master,另一台为Worker节点。服务器具体配置如下:

  • 1个千兆网口
  • 至少8G内存
  • 磁盘至少40G
  • Rancher-server:192.168.4.210
  • Master:192.168.4.211
  • Worker:192.168.4.212

6 部署过程

6.1 关闭SELinux 【所有节点】

SeLinux不关闭会发生无法访问的情况。

[root@localhost  ~]# setenforce 0
[root@localhost  ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

6.2 关闭防火墙【所有节点】

防止安装时出现各个组件的端口不能访问的问题。

[root@localhost  ~]#systemctl stop firewalld && systemctl disable firewalld                          

6.3 设置主机名【所有节点】

Rancher-server。

[root@localhost ~]# hostname rancher
[root@localhost ~]# echo “rancher” > /etc/hostname

Master

[root@localhost ~]# hostname master
[root@localhost ~]# echo “master” > /etc/hostname

Worker

[root@localhost ~]# hostname worker
[root@localhost ~]# echo “worker” > /etc/hostname

6.4 安装Git【Rancher节点】

安装Git拉取GitHub文件。

[root@localhost  ~]# yum -y install epel-release
[root@localhost  ~]# yum -y install git
[root@localhost  ~]# git clone https://github.com/yx464050145/Ansible-Rancher.git

6.5 安装Ansible【Rancher节点】

Rancher使用Ansible脚本自动化安装,并且修改Ansible配置文件。

[root@localhost  ~]# yum -y install ansible
[root@localhost  ~]# vi /etc/ansible/ansible.cfg
[defaults]
host_key_checking = False

6.6 修改Rancher-ansible配置文件【Rancher节点】

[root@localhost  ~]# vi /root/Ansible-Rancher/inventory/hosts
[rancher]
192.168.4.210 ansible_ssh_user='root' ansible_ssh_pass='tera123'   
[master]
192.168.4.211 ansible_ssh_user='root' ansible_ssh_pass='tera123'
[worker]
192.168.4.212 ansible_ssh_user='root' ansible_ssh_pass='tera123'

[root@localhost  ~]# vi /root/Ansible-Rancher/rancher_server/vars/main.yml
# defaults file for rancher
rancher_name: 'rancher_server'
rancher_port: 80
rancher_image: rancher/rancher:stable
rancher_data: /var/rancher
rancher_ssl_ports: 443
rancher_url: https://192.168.4.210
rancher_admin_password: "tera123"
validate_certs: false

[root@localhost  ~]# vi /root/Ansible-Rancher/rancher_master/vars/main.yml
# defaults file for rancher
rancher_url: https://192.168.4.210
rancher_admin_password: "tera123"
validate_certs: false
rancher_network_provider: "calico"
rancher_cluster_name: asterfusion
rancher_master_role: "--etcd --controlplane"
rancher_project_name: "asterfusion"

[root@localhost  ~]# vi /root/Ansible-Rancher/rancher_worker/vars/main.yml
rancher_url: "https://192.168.4.210"
rancher_admin_password: "tera123"
validate_certs: false
rancher_network_provider: "calico"
rancher_cluster_name: asterfusion
rancher_worker_role: "--worker"

6.7 Ansible-playbook部署Rancher集群【Rancher节点】

[root@localhost  ~]# cd /root/Ansible-Rancher
[root@localhost  ~]# ansible-playbook -i inventory/hosts rancher.yml

6.8 Rancher Web

Rancher Web

6.9 Rancher K8s集群

图中可以看出K8s集群部署完成,Master上部署了etcd、control,Worker部署容器。

K8s集群部署

6.10 部署Pod

  • 名称:Pod名字(必填)
  • Docker镜像:容器镜像(必填)
  • 端口映射:端口映射规则和网络模式,如果不需要外网访问可以不填(选填)
  • 类型:Pod类型(必填)

下图Nginx Pod已经部署好了

Nginx Pod部署

6.11 Kubelet命令行

Kubelet命令行

6.12 报错问题

部署过程中如果速度太慢并且报错,是因为网络原因导致拉取镜像失败或者超时。可以选择拷贝镜像到各个节点中免去拉取镜像的过程。在部署完成后耐心等待所有容器组件状态正常才可部署Pod。

7 参考资料

  1. Rancher官网:https://rancher.com/docs/rancher/v2.x/en
  2. Kubernetes官网:https://kubernetes.io/

更多内容请参考:A-Lab

A-lab-云网络, A-lab-部署验证

对星融元产品感兴趣?

立即联系!

返回顶部

© 星融元数据技术(苏州)有限公司 苏ICP备17070048号-2