Rancher学习

一、理论基础:

1、Docker:

Docker是一个容器引擎,容器是由Docker创建的。

2、Docker-Compose:

Docker-Compose是用来管理容器的,有点像容器的管家,想象一下当Docker中有成百上千的容器需要启动时,如果一

个一个的启动费时费力。有了Docker-Compose只需要编写一个文件,执行一些这个文件,Docker就会按照声明的配置去

把所有的容器启动起来,Docker-Compose只能管理当前主机上的Docker,不能启动其他主机上的Docker容器。

3、Docker Swarm:

Docker Swarm是一款用来管理多主机上的Docker容器的工具,可以负责启动容器、监控容器状态,如果容器的状态

不正常它会重新启动一个新的容器来提供服务,同时也提供服务之间的负载均衡,而这些是Docker-Compose做不到的。

4、Kubernetes:

Kubernetes本身的角色定位和Docker Swarm是相同的,Kubernetes是谷歌公司根据自身多年的运维经验研发的一款跨

主机的容器管理平台。

5、Rancher:

​Rancher是更上层的管理框架,更像是一个微容器云的PAAS管理平台,可以帮助企业在生产环境中运行和管理Docker

和Kubernetes,而无需从头开始构建容器服务平台,只需512M RAM即可运行。Rancher简化了使用Kubernetes的流

程,开发者可以随处运行Kubernetes(Run Kubernetes Everywhere),增强DevOps团队的能力。可以把Rancher看做是

相比于Kubernetes更上层的管理平台,对Kubernetes进行了功能的扩展与实现了和Kubernetes集群交互的一些便捷工

具,包括执行命令行、管理多个Kubernetes集群、查看Kubernetes集群节点的运行状态等。

二、搭建Rancher:

1、服务器资源划分:

IP 配置 作用
192.168.1.90 2C/4G/40G rancher-server、harbor、nfs
192.168.1.91 2C/4G/40G etcd、control
192.168.1.92 2C/4G/40G rancher-agent(worker)
192.168.1.93 2C/4G/40G rancher-agent(worker

2、拓扑图:

3、搭建Rancher平台:

  1. 初始化centos7:

    # 1、设置网卡信息
    #    vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
    TYPE=Ethernet
    BOOTPROTO=static                         # 设置静态手动分配ip
    DEFROUTE=yes
    PEERDNS=yes
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_PEERDNS=yes
    IPV6_PEERROUTES=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=enp0s3
    UUID=f60b3b48-1d0d-46b1-ab4e-7d6e27f59d8e
    DEVICE=enp0s3
    ONBOOT=yes                              # 系统启动时是否激活网卡 yes表示激活网卡
    IPADDR=192.168.1.90                     # 系统固定ip
    NETMASK=255.255.255.0                   # 子网掩码
    GATEWAY=192.168.1.1                     # 网关
    DNS=8.8.8.8                             # DNS
    # 2、重启network
    systemctl restart network
    # 3、配置主机名
    hostnamectl set-hostname distributed-env-90
    hostnamectl set-hostname distributed-env-91
    hostnamectl set-hostname distributed-env-92
    hostnamectl set-hostname distributed-env-93
    hostnamectl set-hostname distributed-env-94
    # 4、yum源更新
    yum -y update
    # 5、时间钟同步
    yum install ntpdate -y  
    ntpdate time.windows.com
    # 6、关闭SELINUX
    sed -i 's/enforcing/disabled/' /etc/selinux/config   # 永久关闭selinux
    setenforce 0                                         # 临时关闭selinux
    # 7、关闭系统防火墙
    systemctl stop firewalld                             # 关闭防火墙
    systemctl disable firewalld                          # 禁用防火墙
    # 8、关闭Swap分区
    sed -ri 's/.*swap.*/#&/' /etc/fstab                 # 永久关闭swap分区
    swapoff -a                                          # 临时关闭swap分区
    
  2. 安装docker、docker-compose:

    # 1、安装docker yum源
    yum -y install yum-utils
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    # 2、安装docker
    yum install -y docker-ce
    # 3、设置docker开机自启动
    systemctl enable docker
    # 4、启动docker服务
    systemctl start docker
    # 5、修改docker镜像仓库
    #    vim /etc/docker/daemon.json
    {
      "registry-mirrors": ["https://d3mf5ikh.mirror.aliyuncs.com/"]
    }
    # 6、重启docker服务
    systemctl restart docker
    # 7、下载docker-compose
    sudo curl -L https://github.com/docker/compose/releases/download/1.29.1/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
    # 8、配置docker-compose二进制文件可执行权限
    sudo chmod +x /usr/local/bin/docker-compose
    
  3. 安装harbor、配置私服(192.168.1.90):

    # 1、下载harbor安装包
    wget https://github.com/goharbor/harbor/releases/download/v2.2.1/harbor-offline-installer-v2.2.1.tgz
    # 2、加压harbor安装包
    tar -zxvf harbor-offline-installer-v2.2.1.tgz
    # 3、修改harbor.yml配置信息
    #    vim harbor.yml
    hostname: 192.168.0.94               # 配置成本机ip
    http:
      port: 80                           # 默认端口号80
    harbor_admin_password: Harbon12345   # 默认管理员登录密码
    # 4、执行prepare
    ./prepare
    # 5、安装harbo
    sh install.sh
    # 6、配置docker私服(在需要使用私服的机器上配置)
    #    vim /etc/docker/daemon.json
    {
      "registry-mirrors": ["https://d3mf5ikh.mirror.aliyuncs.com"],
      "insecure-registries": ["192.168.1.94"]
    }
    # 7、重启docker服务
    systemctl restart docker
    
  4. 准备NFS(192.168.1.90):

    # 下载NFS
    yum install -y nfs-common nfs-utils rpcbind
    # 分配权限
    mkdir /nfsdata && chmod 666 /nfsdata && chown nfsnobody /nfsdata
    # 配置挂载
    vim /etc/exports
    /nfsdata *(rw,no_root_squash,no_all_squash,sync)
    # 启动
    systemctl start rpcbind && systemctl start nfs
    
  5. 安装Rancher Server(192.168.1.90):

    # 1、设置网卡转发
    #    vim /etc/sysctl.conf
    net.ipv4.ip_forward=1
    # 重启网卡服务
    systemctl restart network
    # 查看网卡转发是否配置成功
    sysctl net.ipv4.ip_forward
    # 2、启动rancher-server
    docker run -d --restart=unless-stopped 
    -p 8888:80 -p 8443:443 
    -e CATTLE_SYSTEM_CATALOG-bundled 
    -e AUDIT_LEVEL=3 
    --privileged 
    rancher/rancher:latest
    

三、使用Rancher搭建K8s集群:

1、设置Rancher登录密码(仅限第一次登录):

2、登录Rancher:

3、创建K8s集群:

在192.168.1.91机器上安装Etcd、Control Plane

sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run  rancher/rancher-agent:v2.5.7 --server https://192.168.1.90:8443 --token krp7hvb299qpnd9kdv9d8jj5j2tggpq982rjs87hd6lkhst2m2ghc9 --ca-checksum a3e9ed2c5b550f67f4e5012d8cdccbf49a292acc5757802f777fe557159e351a --etcd --controlplane

在192.168.1.92~93机器上安装Worker

sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run  rancher/rancher-agent:v2.5.7 --server https://192.168.1.90:8443 --token krp7hvb299qpnd9kdv9d8jj5j2tggpq982rjs87hd6lkhst2m2ghc9 --ca-checksum a3e9ed2c5b550f67f4e5012d8cdccbf49a292acc5757802f777fe557159e351a --worker

根据网络及服务器配置情况,集群安装过程中可能会比较耗时。

4、测试K8s集群——部署Nginx:

输入应用名称、Docker镜像构点击保存。

Nginx容器启动后,如何访问?

通过生成的随机端口即可访问部署的nginx容器,如下:

5、PVC挂载:

PVC挂载可以实现每一个Pod容器内特定的目录下的数据同步到指定的外部存储,使用场景最多的就是同步日志数据。

1、先添存储-->持久卷(PV):

2、添加PVC:

3、将nginx容器的某个目录挂载到PVC存储:

验证容器挂载PVC是否成功:

在命令行执行如下命令:

cd /data
touch a 

在启动nfs服务的节点进入/nfsdata目录下查看:

四、Spring Cloud应用部署到K8S集群中:

1、编译源码:

mvn clean package -Dmaven.test.skip=true

2、构建docker镜像:

docker build -t gateway-service .

3、给镜像打标签:

docker tag gateway-service 192.168.1.90/pub/gateway-service:1.0

4、将镜像推送到docker私服:

docker login 192.168.1.90
docker push 192.168.1.90/pub/gateway-service:1.0

5、部署应用:

访问部署的Spring Boot应用:

原文地址:https://www.cnblogs.com/xiaoshuzhagen/p/14722427.html