1.rancher是什么,有什么作用

Rancher 是一款开源的企业级多云容器管理平台,专为简化 Kubernetes 及其相关生态系统的部署、管理和运维而设计。

提供图形化界面:Rancher 提供友好的 web 界面,将复杂的 Kubernetes 配置和操作抽象为易于理解和使用的界面元素,使得非专家用户也能轻松管理 Kubernetes 集群、工作负载、服务等资源。

2. 作用

更快,更稳,更好,更安全。

更快的部署速度,通过内网一次性打包生成镜像,内网拉取镜像部署项目集群,避免当前在jenkins部署集群项目需要每个单独点击多次打包;

更稳定的部署,通过配置健康检查能无缝切换项目成功运行的项目,然后再自动旧版本项目,使项目更加稳定,避免当前部署时集群项目需要人工查看项目部署情况,避免当前集群项目升级时需要等待的情况;

更好的分配,可控地自动分配项目在不同的节点间部署项目,占用更少资源,也为以后多云部署提供基础条件。

更安全的部署,目前整套的部署大多是基于内网环境下的部署配置,安全性更高。

3.rancher配置

1.全局配置

  1. 镜像仓库:
    全局配置->system-default-registry->配置地址:registry.cn-hangzhou.aliyuncs.com
    image.png

  2. api token允许不过期设置:
    全局配置->auth-token-max-ttl-minutes -> 设置为0

image.png

2.集群镜像仓库配置方案一 (http请求的)

配置镜像仓库http端点(可以配置自定义仓库,如harbor等)

image.png  

3. 集群镜像仓库配置方案二*(https请求的)

服务-》secret-》配置项目的容器镜像仓库阿里云仓库

1
2
3
镜像仓库域名:registry-vpc.cn-shenzhen.aliyuncs.com
账号:xxxx
密码:xxxx

image.png

4.存储和动态更新常规配置信息configmap(如rancher日志收集文件配置 )

存储-》configmap-》自定义名称,配置好对应的key和value
例如key:filebeat.yml

image.png

5. rancher项目配置

1.项目配置+环境变量

1.项目配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
镜像:registry-vpc.cn-shenzhen.aliyuncs.com/xxx/xxxx:latest
镜像拉取策略:always
拉取密文:ali(之前配置的项目容器镜像仓库)
网络:可选
### 环境变量
TZ:Asia/Shanghai
SPRING_PROFILES_ACTIVE:pro
# podfield类型
spring_cloud_nacos_discovery_ip:status.hostIP
spring_cloud_nacos_discovery_port:xxx

###健康检查
就绪检查:HTTP 请求返回成功的状态(200-399)
检查端口:8080
请求路径:/xxxx/
其他默认

##副本数量:2
项目部署2个集群

image.png

  image.png

image.png

image.png

2.映射目录+映射文件

2.1pod 配置

pod配置下
1.映射空目录-日志目录
2.映射日志配置文件-configmap 形式,filebeat配置文件 ,默认模式设置为644

image.png

2.2 项目映射日志地址

container-0-》存储-》添加卷-》空目录

1
挂载点:/var/wwwlog

image.png

3. 项目日志收集配置

3.1 容器配置

容器配置日志收集,把container-0的日志通过container-1(sidecar 模式,辅助性质的服务) 收集
配置

1
2
3
容器镜像:elastic/filebeat:7.12.1
容器拉取策略:IfNotPresent
拉取密文:ali(之前配置的项目容器镜像仓库)

image.png

3.2 配置文件及空目录

container-1-》存储-》选择卷-》空目录

1
挂载点:/var/wwwlog

container-1-》存储-》选择卷-》configmap

1
2
挂载点:/usr/share/filebeat/filebeat.yml
卷内子路径:filebeat.yml

image.png

6.常用部署

deploment->项目设置->执行命令/重新部署

image.png

7.远程API部署

1.token 生成(api调用时需要token)

1
2
持有者令牌
token键:token值

账号头像->账号&API密钥->创建api密钥
image.png

2.项目地址查询

从api端点,进入/v3 目录(https://rancher地址/v3),查找对象<项目>,对应<命名空间>,对应<工作负载>下的项目操作redeploy地址(部署操作):
获取部署地址
https://ip/v3/project/c-m-h6vrw2bq:p-25js6/workloads/deployment:project:ent-mini?action=redeploy
如图:

image.png

3. 远程调用方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/bin/bash  
# 配置变量 ip为内网ip或者外网ip或者域名
RANCHER_URL="https://+ip+/v3/project/c-m-h6vrw2bq:p-25js6/workloads/deployment:project:ent-mini?action=redeploy"
#持有者令牌,键值对
RANCHERTOKEN="token键:token值"
# 发送请求重新部署工作负载,并捕获详细输出
response=$(curl -k -u "${RANCHERTOKEN}" -X POST -H 'Content-Type: application/json' "${RANCHER_URL}" -w "\n%{http_code}\n")

# 提取 HTTP 响应码
http_code=$(echo "$response" | tail -n1)

# 提取响应内容(去除最后一行的 HTTP 响应码)
response_content=$(echo "$response" | sed '$d')

# 检查请求结果
if [ $? -eq 0 ]; then
if [[ "$http_code" =~ ^2 ]]; then
echo "Deployment updated successfully."
# 输出响应内容成功
echo "Response: $response_content"
else
# 输出响应内容失败
echo "Failed to update deployment. HTTP Status Code: $http_code"
echo "Response: $response_content"
exit 1
fi
else
# 输出响应内容失败
echo "Failed to execute curl command."
echo "Response: $response_content"
exit 1
fi