第六十二章 Docker容器部署问题和Rancher介绍
第1集 微服务容器化部署的问题和容器编排介绍
简介:微服务容器化部署的问题和容器编排介绍
- Docker容器化部署微服务比传统方式快,一直容器化部署一直爽
在实操中发现,像 Docker 之类的容器引擎,折腾少量容器还行
但如今的云原生应用、机器学习任务或者大数据分析业务,动辄就要使用成百上千的容器
要管理这么多容器,Docker 们就力不从心了
- 问题
- 简单的几个容器可以方便管理,但稍微有规模的公司里面肯定是成千上万的容器在运行
- 怎么快速部署容器
- 怎么管理这些容器
- 怎么监控这些容器状态
- 容器之间通讯怎么管理
-
和云基础设施的任何其他组件一样,容器需要监控和控制,否则将根本不知道服务器上运行的是什么
-
技术人员都是”懒的“
- 有需求就有改变,市场上就出现了一批【容器编排】工具,典型的是 Swarm、Mesos 和 K8S等
-
为了解决容器管理的问题,就有了容器编排管理工具
- 什么是容器编排
提供调度和管理集群的技术,提供用于基于容器应用可扩展性的基本机制,这些工具使用容器服务,并编排他们以决定容器之间如何进行交互, 包括网络, 存储, 负载均衡, DNS和安全模块等的编排调度
- 主流的容器编排工具
- Docker Swarm
- Apache Mesos
- Kubernetes
经过几年的竞争,K8S 击败 Swarm 和 Mesos,几乎成了当前容器编排的事实标准 K8S 最初是由 Google 开发的,后来捐赠给了 CNCF(云原生计算基金会,隶属 Linux 基金会)
-
K8S 既然那么猛,直接拿来用不香吗?
- 文档 http://docs.kubernetes.org.cn/251.html
- 如果当练习,看官方文档很快上手,上手的前提要懂很多概念
Pod、ingress、Service、Node、kubelet、kube-proxy、API Server、Scheduler、Labels、Deployment...
- 当要搭建生产环境的时候,事情就变得不一样了
- 不止搭建集群过程很复杂,后期还要面对更繁琐的 K8S 控制平面维护工作,版本升级、安全管控、数据备份
- 对于k8s集群的运维复杂度也很高
-
等你掌握一系列概念后且搭建过本地的k8s
- 开发人员的你:一个月后你会忘记80%的知识
- 公司里:能用上k8s的公司,基本不太可能让一个业务开发人员去操作到k8s的东西
- 公司谁负责:运维工程师、容器开发工程师、云平台开发工程师等
第2集 一线互联网大厂里面的一站式DevOps平台介绍
简介:一线互联网大厂里面的一站式DevOps平台介绍
-
阿里、腾讯、字节、京东、美团等都有一站式DevOps平台
- 提供从「需求->开发->测试->发布->运维->运营」端到端的协同服务和研发工具
-
大厂里面是如何操作的
- 专门的团队开发维护好自己BU的容器管理平台(k8s)
- 阿里的Aone-》对应阿里云产品 云效 https://devops.aliyun.com/
-
咱们工程师都是“懒的”
- 容器编排正快速发展,从主要的基础设施公司到PAAS供应商,不仅仅是编排工具,更重要的是要构建、部署、CI/CD等一系列功能
- 很多厂商也在PaaS平台做一些工作,重点在于让开发人员不必关心底层应用部署细节,只需想好要什么即可
-
容器编排PaaS云平台
-
KubeSphere
- https://kubesphere.com.cn/
KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用 (plug-and-play) 的集成。
-
-
Rancher
- https://rancher.com/
是一个开源的企业级容器管理平台, 通过Rancher企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。 Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台
-
Rancher+KubeSphere总结
都是基于K8s提供功能,是比较优秀的k8s集群管理平台,对于降低k8s集群运维复杂度,降低运维成本,使开发人员能尽快上手部署微服务
第3集 容器编排管理平台Rancher介绍和概念讲解
简介:容器编排管理平台Rancher介绍和概念讲解
- 什么是Rancher
- 地址:https://rancher.com/
- 是一个开源的企业级PaaS容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台
- Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台
- 通信模型介绍
- Client-Server模式
- 每个Linux主机是Client端,需要连接到Rancher的Server端
特性
-
基础设施编排
- 可以使用任何公有云或者私有云的Linux主机资源
- Linux主机可以是虚拟机,也可以是物理机
- Rancher仅需要主机有CPU,内存,本地磁盘和网络资源,从Rancher的角度来说,一台云厂商提供的云主机和一台自己的物理机是一样的
-
容器编排与调度
- 包含了当前全部主流的编排调度引擎,例如Docker Swarm, Kubernetes, 和Mesos
- 同一个用户可以创建Swarm或者Kubernetes集群。并且可以使用原生的Swarm或者Kubernetes工具管理应用
- 除了Swarm,Kubernetes和Mesos之外,Rancher还支持自己的Cattle容器编排调度引擎
- Cattle被广泛用于编排Rancher自己的基础设施服务以及用于Swarm集群,Kubernetes集群和Mesos集群的配置,管理与升级
-
中文文档
- https://docs.rancher.cn/
第4集 云服务器Docker容器化部署Rancher2.x实战
简介:云服务器Docker容器化部署Rancher2.x实战
-
注意事项
-
基于Docker镜像安装Rancher,阿里云 Linux CentOS 7.8 + Docker-20.10.10
- 2核8g内存+5M带宽
-
选择Rancher机器可以把【内存+带宽】弄大点,因为Rancher部署好后需要下载很多的镜像,不要因为内存问题导致部署没成功
-
-
安装Docker
# 1.先安装yml
yum install -y yum-utils device-mapper-persistent-data lvm2
# 2.设置阿里云镜像
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#3. 安装docker
yum -y install docker-ce-20.10.10-3.el7
#4. 查看docker版本
docker -v
#5. 启动docker
systemctl start docker
#6. 查看docker 启动状态
systemctl status docker
-
安装Rancher
- 创建Rancher挂载目录
mkdir -p /data/rancher_home/rancher mkdir -p /data/rancher_home/auditlog
- 部署Rancher
docker run -d --privileged --restart=unless-stopped -p 80:80 -p 443:443 \ -v /data/rancher_home/rancher:/var/lib/rancher \ -v /data/rancher_home/auditlog:/var/log/auditlog \ --name class_rancher1 rancher/rancher:v2.5.7
-
登录Rancher
- 启动成功rancher后, 可以打开浏览器输入IP地址来进入Rancher
- 登录地址为:http://+IP ,如:http://47.106.69.xxx
- 配置账号密码,填写完账号密码后直接Continue即可。
保存配置
- 点击Continue后进入到Server URL页面,这里显示的是IP(公网ip)地址,不用管直接点击SaveURL
- 设置Rancher语言,在主页面的右下角点击切换一下即可
第六十三章 Rancher2.X配置镜像和Client节点添加实战
第1集 Rancher2.X配置Docker镜像加速实战
简介:Rancher2.X配置Docker镜像加速实战
-
Rancher平台知识点很多
- 根据课程了解常用的即可
-
配置阿里云镜像加速地址
- 为啥要配置?Rancher依赖组件多,不配置下载镜像慢容易出问题
- 阿里云入口地址 https://cr.console.aliyun.com/cn-shenzhen/instances/mirrors
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://pkuk89br.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
- 镜像加速器获取方式
第2集 Rancher2.X添加集群配置RancherAgent节点
简介:Rancher2.X添加集群配置RancherAgent节点
- 创建项目集群
- 进入到添加集群-Custom页面
- 我们点击下一步
添加Linux主机节点
- 需要安装Docker
# 1.先安装yml
yum install -y yum-utils device-mapper-persistent-data lvm2
# 2.设置阿里云镜像
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#3. 安装docker
yum -y install docker-ce-20.10.10-3.el7
#4. 查看docker版本
docker -v
#5. 启动docker
systemctl start docker
#6. 查看docker 启动状态
systemctl status docker
- 终端中运行复制下来的命令按Enter键等待下载好相应的镜像即可
- 我们就把主机给添加到所创建的集群中
- 回到Rancher的主界面
- 点击自己所创建的集群,可以进去看到所监控集群的信息
第3集 Rancher2.X配置私有镜像仓库实战
简介:Rancher2.X配置私有镜像仓库实战
私有镜像仓库配置
- 在顶部的导航栏找到-资源->密文
- 最右边有添加凭证按钮,点击进去
添加镜像库凭证
成功添加镜像库凭证
镜像地址
服务:registry.cn-shenzhen.aliyuncs.com/class-dcloud/dcloud-account:v1.1
registry.cn-shenzhen.aliyuncs.com
111111111@qq.com
baidu.net168
当然也可以使用自己的 私有仓库:
以下是一个搭建私有镜像仓库的示例:
系统资源规划:确保有足够的系统资源,包括CPU、内存和存储空间。
系统软件安装:安装Docker和Docker Compose。
下载私有仓库镜像:使用以下命令下载私有仓库镜像:
bash
docker pull registry
启动私有仓库容器:使用以下命令启动私有仓库容器:
bash
docker run -d -p 5000:5000 --name=registry registry
打开浏览器,输入私有仓库服务器的IP地址和端口号(默认为5000),查看是否能够访问到私有仓库的界面。如果能够成功访问,则表示搭建成功。
修改daemon.json文件:在Docker的配置文件/etc/docker/daemon.json中添加以下内容:
json
{
"insecure-registries": ["<私有仓库服务器的IP地址:端口号>"]
}
然后重启Docker服务。
7. 创建镜像标签:在本地构建一个Docker镜像,并使用以下命令将镜像上传到私有仓库:
bash
docker tag <本地镜像名称>:<本地镜像标签> <私有仓库服务器的IP地址:端口号>/<镜像名称>:<标签>
docker push <私有仓库服务器的IP地址:端口号>/<镜像名称>:<标签>
测试镜像访问:在本地Docker中拉取私有仓库中的镜像,并查看是否能够成功拉取和使用。
注意:搭建私有仓库需要一定的技术基础和经验,建议在熟悉Docker和Linux系统的基础上进行操作。同时,需要确保网络安全和数据备份,以防止数据丢失或被攻击。
第六十四章 Rancher2.X部署短链平台微服务实战
第1集 Rancher2.X部署短链平台-Gateway实战
简介:Rancher2.X部署短链平台-Gateway实战
- 部署顺序
- dcloud-gateway
- dcloud-account
- dcloud-shop
- dcloud-data
- dcloud-link
- 注意
- 需要的Linux服务器资源比较多,两台节点部署
- 对应的Nacos、Mysql、Redis、RabbitMQ、Kafka等先不改动,后续再转移部署
部署网关
- 新增工作负载
编辑集群-端口可用范围
第2集 Rancher2.X部署account-shop微服务实战
简介:Rancher2.X部署account-shop微服务实战
-
部署顺序
- dcloud-gatway
- dcloud-account
- dcloud-shop
- dcloud-data
- dcloud-link
-
部署实战
- 注意:通过网关内部访问,不用配置端口映射
-
Nacos控制台查看和接口测试
- 网关所在机器,网络安全组开放 8888
第3集 Rancher2.X部署data-link微服务实战
简介:Rancher2.X部署data-link微服务实战
- 部署顺序
- dcloud-gateway
- dcloud-account
- dcloud-shop
- dcloud-data
- dcloud-link
- 部署实战
- Nacos控制台查看和接口测试
第4集 Rancher2.X部署中间件-Mysql8.0
简介:Rancher2.X部署中间件-Mysql8.0
-
注意
- 常规互联网企业里面的中间件,运维工程师负责搭建
- 部分组件可以选择直接部署:容器、源码编译,并非一定要某个方式
- 比如某些组件需要特定的版本,但是平台存在不兼容或者配置方式不支持等
-
部署Mysql
-
需要【两个节点】
- 一个是Nacos和Xxl-Job使用
- 名称 midware-mysql
- 端口 :3306:3306
- 一个是业务微服务使用,如果有需要可以每个微服务一个节点
- 名称:service-mysql
- 端口 :3307:3306
- 一个是Nacos和Xxl-Job使用
-
配置
镜像:mysql:8.0 环境变量: MYSQL_ROOT_PASSWORD=class.net168 路径映射 /home/data/mysql/data /var/lib/mysql:rw /etc/localtime /etc/localtime:ro 在创建 Docker 容器时,加上 “-v /etc/localtime:/etc/localtime:ro” 参数 让容器使用宿主机的时间,容器时间与宿主机时间同步,:ro 指定该 volume 为只读
-
第5集 Mysql新建Nacos和XXl-Job库表实战
简介:Mysql新建Nacos和XXl-Job库表实战
-
导入nacos持久化库表
-
导入Xxl-Job持久化库表
-
注意
- sql在资料里面
第六十五章 Rancher2.X部署短链平台业务中间件
第1集 Ranche2.X部署Nacos和调整JVM内存实战
简介:Ranche2.X部署Nacos和调整JVM内存实战
- 部署Nacos
镜像:nacos/nacos-server:2.0.2
端口:8848:8848
环境变量:
JVM_XMN=128m
JVM_XMS=128m
JVM_XMX=128m
MODE=standalone
MYSQL_SERVICE_DB_NAME=nacos_config
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false
MYSQL_SERVICE_HOST=112.74.107.230
MYSQL_SERVICE_PASSWORD=xdclass.net168
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=root
NACOS_AUTH_ENABLE=true
SPRING_DATASOURCE_PLATFORM=mysql
-Xms:初始堆大小
-Xmx:最大堆大小
-Xmn:新生代大小
- 网络安全组开放端口
- 本地代码调整
第2集 Ranche2.X部署XXL-Job和Redis6实战
简介:Ranche2.X部署XXL-Job和Redis6实战
-
注意
- 很多中间件并非要Rancher部署,常规源码或者Docker部署就行
- 课程方便管理为主则用Rancher部署
- 实际公司里面,运维负责搭建安装部署,开发人员使用即可
-
部署XXL-Job
- http://ip:8080/xxl-job-admin
- admin / 123456
镜像:xuxueli/xxl-job-admin:2.2.0 端口:8080:8080 环境变量: PARAMS=--spring.datasource.url=jdbc:mysql://112.74.107.230:3306/xxl_job?Unicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai \ --spring.datasource.username=root \ --spring.datasource.password=xdclass.net168 \ --xxl.job.accessToken=class.net
-
部署Redis
- 在rancher中设置的,redis密码不是环境变量,而是命令入口配置
- 网络安全组记得开放端口
镜像:redis:6.2.4 端口:6379:6379 数据卷: /mydata/redis/data /data 入口命令 redis-server --requirepass xdclass.net
- 网络安全组开放端口
- 本地代码调整
第3集 Ranche2.X部署RabbitMQ和ClickHouse实战
简介:Ranche2.X部署RabbitMQ和ClickHouse实战
- 部署RabbitMQ
镜像:rabbitmq:3.8.15-management
端口:15672:15672
5672:5672
环境变量:
RABBITMQ_DEFAULT_PASS=password
RABBITMQ_DEFAULT_USER=admin
- 部署ClickHouse
镜像:clickhouse/clickhouse-server:22.1.4.30
端口:8123:8123 9000:9000 9009:9009
nofile=262144
privileged=true
ulimit=262144
1.log卷
clickhouse-log
/mydata/docker/clickhouse/log
/var/log/clickhouse-server
2.data卷
clickhouse-data
/mydata/docker/clickhouse/data
/var/lib/clickhouse
- dbeaver连接测试
- 默认http端口是8123,tcp端口是9000, 同步端口9009
CREATE TABLE default.visit_stats
(
`code` String,
`referer` String,
`is_new` UInt64,
`account_no` UInt64,
`province` String,
`city` String,
`ip` String,
`browser_name` String,
`os` String,
`device_type` String,
`pv` UInt64,
`uv` UInt64,
`start_time` DateTime,
`end_time` DateTime,
`ts` UInt64
)
ENGINE = ReplacingMergeTree(ts)
PARTITION BY toYYYYMMDD(start_time)
ORDER BY (
start_time,
end_time,
code,
province,
city,
referer,
is_new,
ip,
browser_name,
os,
device_type);
- dbeaver连接测试
- 默认http端口是8123,tcp端口是9000, 同步端口9009
CREATE TABLE default.visit_stats
(
`code` String,
`referer` String,
`is_new` UInt64,
`account_no` UInt64,
`province` String,
`city` String,
`ip` String,
`browser_name` String,
`os` String,
`device_type` String,
`pv` UInt64,
`uv` UInt64,
`start_time` DateTime,
`end_time` DateTime,
`ts` UInt64
)
ENGINE = ReplacingMergeTree(ts)
PARTITION BY toYYYYMMDD(start_time)
ORDER BY (
start_time,
end_time,
code,
province,
city,
referer,
is_new,
ip,
browser_name,
os,
device_type);
第4集 Ranche2.X部署Zookeeper和Kafka
简介:Ranche2.X部署Zookeeper和Kafka
- 部署Zookeeper
镜像:wurstmeister/zookeeper
端口:2181:2181
- 部署Kafka
镜像:wurstmeister/kafka:2.13-2.7.0
端口:9092:9092
环境变量:
KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://120.25.217.15:9092
KAFKA_BROKER_ID=0
KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
KAFKA_ZOOKEEPER_CONNECT=172.31.101.8:2181
KAFKA_PORT=9092
`pv` UInt64,
`uv` UInt64,
`start_time` DateTime,
`end_time` DateTime,
`ts` UInt64
)
ENGINE = ReplacingMergeTree(ts)
PARTITION BY toYYYYMMDD(start_time)
ORDER BY (
start_time,
end_time,
code,
province,
city,
referer,
is_new,
ip,
browser_name,
os,
device_type);
#### 第4集 Ranche2.X部署Zookeeper和Kafka
**简介:Ranche2.X部署Zookeeper和Kafka**
- 部署Zookeeper
镜像:wurstmeister/zookeeper
端口:2181:2181
[外链图片转存中...(img-Mvtd9QE0-1723444570174)]
- 部署Kafka
镜像:wurstmeister/kafka:2.13-2.7.0
端口:9092:9092
环境变量:
KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://120.25.217.15:9092
KAFKA_BROKER_ID=0
KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
KAFKA_ZOOKEEPER_CONNECT=172.31.101.8:2181
KAFKA_PORT=9092