一、理论基础:
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平台:
-
初始化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分区
-
安装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
-
安装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
-
准备
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
-
安装
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应用: