一、理论基础:

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、拓扑图:

rancher配置docker启动命令 rancher docker swarm_Rancher

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分区
  1. 安装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
  1. 安装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
  1. 准备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
  1. 安装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登录密码(仅限第一次登录):

rancher配置docker启动命令 rancher docker swarm_k8s_02

rancher配置docker启动命令 rancher docker swarm_Rancher_03

2、登录Rancher:

rancher配置docker启动命令 rancher docker swarm_k8s_04

rancher配置docker启动命令 rancher docker swarm_k8s_05

3、创建K8s集群:

rancher配置docker启动命令 rancher docker swarm_k8s_06

rancher配置docker启动命令 rancher docker swarm_rancher配置docker启动命令_07

rancher配置docker启动命令 rancher docker swarm_rancher配置docker启动命令_08

rancher配置docker启动命令 rancher docker swarm_rancher配置docker启动命令_09

在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

rancher配置docker启动命令 rancher docker swarm_Kubernetes_10

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

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

rancher配置docker启动命令 rancher docker swarm_rancher配置docker启动命令_11

rancher配置docker启动命令 rancher docker swarm_Spring Boot_12

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

rancher配置docker启动命令 rancher docker swarm_k8s_13

rancher配置docker启动命令 rancher docker swarm_rancher配置docker启动命令_14

rancher配置docker启动命令 rancher docker swarm_Kubernetes_15

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

rancher配置docker启动命令 rancher docker swarm_Spring Boot_16

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

rancher配置docker启动命令 rancher docker swarm_Spring Boot_17

rancher配置docker启动命令 rancher docker swarm_k8s_18

rancher配置docker启动命令 rancher docker swarm_Rancher_19

rancher配置docker启动命令 rancher docker swarm_Spring Boot_20

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

rancher配置docker启动命令 rancher docker swarm_Kubernetes_21

5、PVC挂载:

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

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

rancher配置docker启动命令 rancher docker swarm_Kubernetes_22

rancher配置docker启动命令 rancher docker swarm_Spring Boot_23

2、添加PVC:

rancher配置docker启动命令 rancher docker swarm_Kubernetes_24

rancher配置docker启动命令 rancher docker swarm_Rancher_25

rancher配置docker启动命令 rancher docker swarm_rancher配置docker启动命令_26

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

rancher配置docker启动命令 rancher docker swarm_Kubernetes_27

rancher配置docker启动命令 rancher docker swarm_Rancher_28

rancher配置docker启动命令 rancher docker swarm_Kubernetes_29

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

rancher配置docker启动命令 rancher docker swarm_rancher配置docker启动命令_30

在命令行执行如下命令:

cd /data
touch a

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

rancher配置docker启动命令 rancher docker swarm_k8s_31

四、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、部署应用:

rancher配置docker启动命令 rancher docker swarm_Rancher_32

rancher配置docker启动命令 rancher docker swarm_Spring Boot_33

访问部署的Spring Boot应用:

rancher配置docker启动命令 rancher docker swarm_rancher配置docker启动命令_34