当前位置: 首页 > news >正文

网站做多个产品/seo推广一年要多少钱

网站做多个产品,seo推广一年要多少钱,idc主机托管,门户网站系统设计k8s通过service标签实现蓝绿发布 通过k8s service label标签实现蓝绿发布方法1:使用kubelet完成蓝绿切换1. 创建绿色版本1.1 创建绿色版本 Deployment1.2 创建绿色版本 Service 2. 创建蓝色版本2.1 创建蓝色版本 Deployment2.2 创建蓝色版本 Service 3. 创建蓝绿切换SVC (用于外…

k8s通过service标签实现蓝绿发布

    • 通过`k8s service label`标签实现`蓝绿发布`
    • 方法1:使用kubelet完成蓝绿切换
      • 1. 创建绿色版本
        • 1.1 创建绿色版本 Deployment
        • 1.2 创建绿色版本 Service
      • 2. 创建蓝色版本
        • 2.1 创建蓝色版本 Deployment
        • 2.2 创建蓝色版本 Service
      • 3. 创建`蓝绿切换SVC` (用于外部访问)
      • 4. 创建 Ingress
      • 5. 切换蓝绿版本
        • 5.1 将 `app-svc` 指向绿色版本:
        • 5.2 将 `app-svc` 切换到蓝色版本:
      • 总结
    • 方法2:k8s 蓝绿yaml 配置
      • `service.yaml` 文件
      • `deploy.yaml` 文件
        • 蓝`v1-deploy.yaml` 文件
        • 绿`v2-deploy.yaml`文件
      • 部署与测试
        • 测试流量是否到v1版本
        • 切换入口流量从v1 到 v2
        • 测试流量是否到v2版本

通过k8s service label标签实现蓝绿发布

  • 两个版本deploysvc,
  • svc版本标签,
  • 然后选择Service Label标签对应的deploy版本

方法1:使用kubelet完成蓝绿切换

在 Kubernetes 中,使用 kubectl 命令完成蓝绿部署.


1. 创建绿色版本


1.1 创建绿色版本 Deployment
# 创建一个名为 "yewu-app-green-deploy" 的 Deployment
kubectl create deployment yewu-app-green-deploy \--image=yewu-app:v2  # 使用镜像 "yewu-app:v2" 部署应用

1.2 创建绿色版本 Service
# 将名为 "yewu-app-green-deploy" 的 Deployment 暴露为一个 Service
## port是service的端口
## --target-port是pod(中的容器)的端口
## --type 指定Service 的类型为ClusterIP,用于通过节点的IP和指定端口访问服务
## --name=green-svc 指定 Service 的名称为 "green-svc"
## --save-config 保存当前命令的配置到资源的注解中,便于后续管理
kubectl expose deployment yewu-app-green-deploy --type=ClusterIP --name=green-svc --port=80 --target-port=8080 --save-config

2. 创建蓝色版本


2.1 创建蓝色版本 Deployment
# 创建一个名为 "yewu-app-blue-deploy" 的 Deployment
kubectl create deployment yewu-app-blue-deploy \--image=yewu-app:v1  # 使用镜像 "yewu-app:v1" 部署应用

2.2 创建蓝色版本 Service
# 将名为 "yewu-app-blue-deploy" 的 Deployment 暴露为一个 Service
## port是service的端口
## --target-port是pod(中的容器)的端口
## --type 指定Service 的类型为ClusterIP,用于通过节点的IP和指定端口访问服务
## --name=blue-svc 指定 Service 的名称为 "blue-svc"
## --save-config 保存当前命令的配置到资源的注解中,便于后续管理
kubectl expose deployment yewu-app-blue-deploy --type=ClusterIP --name=blue-svc --port=80 --target-port=8080 --save-config

3. 创建蓝绿切换SVC (用于外部访问)

创建一个外部 Service,用于切换蓝绿版本:

# 创建一个 ClusterIP 类型的 Service,名称为 "app-svc"
kubectl create service clusterip app-svc \--tcp=80:80  # 将 Service 的端口 80 映射到后端 Pod 的端口 80

4. 创建 Ingress

创建 Ingress 资源以暴露服务:

# 使用 kubectl 创建一个 Ingress 资源
kubectl create ingress app-ingress \--rule="your-domain.com/*=app-svc:80"# --rule 参数定义了 Ingress 的规则:# - your-domain.com 是主机名# - /* 表示匹配所有路径# - app-svc:80 表示将流量转发到名为 app-svc 的 Service 的 80 端口

5. 切换蓝绿版本


5.1 将 app-svc 指向绿色版本:
# 更新名为 "app-svc" 的 Service 的 selector,使其指向绿色版本的 Deployment
kubectl patch svc app-svc \-p '{"spec":{"selector":{"app":"yewu-app-green-deploy"}}}'# -p 参数指定了一个 JSON 格式的部分更新内容# 将 Service 的 selector 更新为匹配标签 "app=yewu-app-green-deploy"

5.2 将 app-svc 切换到蓝色版本:
# 更新名为 "app-svc" 的 Service 的 selector,使其指向蓝色版本的 Deployment
kubectl patch svc app-svc \-p '{"spec":{"selector":{"app":"yewu-app-blue-deploy"}}}'# -p 参数指定了一个 JSON 格式的部分更新内容# 将 Service 的 selector 更新为匹配标签 "app=yewu-app-blue-deploy"

总结

先完成蓝绿部署,然后通过修改 app-svcselector 来切换流量。


方法2:k8s 蓝绿yaml 配置


service.yaml 文件

# 定义 API 版本为 v1
apiVersion: v1
# 定义资源类型为 Service
kind: Service
# 定义 Service 的元数据
metadata:# 定义 Service 的名称为 demoname: demo# 定义 Service 所在的命名空间为 defaultnamespace: default# 定义 Service 的标签,app 标签值为 demolabels:app: demo
# 定义 Service 的规格
spec:# 定义 Service 的端口配置ports:# 定义一个端口配置- # 定义端口为 80port: 80# 定义目标端口为 httptargetPort: http# 定义协议为 TCPprotocol: TCP# 定义端口名称为 httpname: http# 注意这里我们匹配 app 和 version 标签,当要切换流量的时候,我们更新 version 标签的值,比如:v2# 定义 Service 的选择器selector:# 定义选择器的 app 标签值为 demoapp: demo# 定义选择器的 version 标签值为 v1version: v1

deploy.yaml 文件


v1-deploy.yaml 文件
# 定义 API 版本为 apps/v1
apiVersion: apps/v1
# 定义资源类型为 Deployment
kind: Deployment
# 定义 Deployment 的元数据
metadata:# 定义 Deployment 的名称为 demo1-deploymentname: demo1-deployment# 定义 Deployment 所在的命名空间为 defaultnamespace: default# 定义 Deployment 的标签,app 标签值为 demolabels:# 定义 app 标签值为 demoapp: demo# 定义 version 标签值为 v1version: v1
# 定义 Deployment 的规格
spec:# 定义副本数量为 1replicas: 1# 定义修订历史限制为 3revisionHistoryLimit: 3# 定义更新策略strategy:# 定义滚动更新策略rollingUpdate:# 定义最大 surge 百分比为 30%maxSurge: 30%# 定义最大不可用百分比为 30%maxUnavailable: 30%# 定义选择器selector:# 定义选择器的标签匹配规则matchLabels:# 定义 app 标签值为 demoapp: demo# 定义 version 标签值为 v1version: v1# 定义 Pod 模板template:# 定义 Pod 的元数据metadata:# 定义 Pod 的标签labels:# 定义 app 标签值为 demoapp: demo# 定义 version 标签值为 v1version: v1# 定义 Pod 的规格spec:# 定义容器列表containers:# 定义一个容器- # 定义容器名称为 demo1name: demo1# 定义容器使用的镜像为 mritd/demoimage: mritd/demo# 定义存活探针livenessProbe:# 定义 HTTP GET 请求httpGet:# 定义请求路径为 /path: /# 定义请求端口为 80port: 80# 定义请求协议为 HTTPscheme: HTTP# 定义初始延迟秒数为 30initialDelaySeconds: 30# 定义超时秒数为 5timeoutSeconds: 5# 定义周期秒数为 30periodSeconds: 30# 定义成功阈值为 1successThreshold: 1# 定义失败阈值为 5failureThreshold: 5# 定义就绪探针readinessProbe:# 定义 HTTP GET 请求httpGet:# 定义请求路径为 /path: /# 定义请求端口为 80port: 80# 定义请求协议为 HTTPscheme: HTTP# 定义初始延迟秒数为 30initialDelaySeconds: 30# 定义超时秒数为 5timeoutSeconds: 5# 定义周期秒数为 10periodSeconds: 10# 定义成功阈值为 1successThreshold: 1# 定义失败阈值为 5failureThreshold: 5# 定义容器端口列表ports:# 定义一个端口- # 定义端口名称为 httpname: http# 定义容器端口为 80containerPort: 80# 定义协议为 TCPprotocol: TCP

绿v2-deploy.yaml文件
# 定义 API 版本为 apps/v1
apiVersion: apps/v1
# 定义资源类型为 Deployment
kind: Deployment
# 定义 Deployment 的元数据
metadata:# 定义 Deployment 的名称为 demo1-deploymentname: demo1-deployment# 定义 Deployment 所在的命名空间为 defaultnamespace: default# 定义 Deployment 的标签,app 标签值为 demolabels:# 定义 app 标签值为 demoapp: demo# 定义 version 标签值为 v1version: v1
# 定义 Deployment 的规格
spec:# 定义副本数量为 1replicas: 1# 定义修订历史限制为 3revisionHistoryLimit: 3# 定义更新策略strategy:# 定义滚动更新策略rollingUpdate:# 定义最大 surge 百分比为 30%maxSurge: 30%# 定义最大不可用百分比为 30%maxUnavailable: 30%# 定义选择器selector:# 定义选择器的标签匹配规则matchLabels:# 定义 app 标签值为 demoapp: demo# 定义 version 标签值为 v1version: v1# 定义 Pod 模板template:# 定义 Pod 的元数据metadata:# 定义 Pod 的标签labels:# 定义 app 标签值为 demoapp: demo# 定义 version 标签值为 v1version: v1# 定义 Pod 的规格spec:# 定义容器列表containers:# 定义一个容器- # 定义容器名称为 demo1name: demo1# 定义容器使用的镜像为 mritd/demoimage: mritd/demo# 定义存活探针livenessProbe:# 定义 HTTP GET 请求httpGet:# 定义请求路径为 /path: /# 定义请求端口为 80port: 80# 定义请求协议为 HTTPscheme: HTTP# 定义初始延迟秒数为 30initialDelaySeconds: 30# 定义超时秒数为 5timeoutSeconds: 5# 定义周期秒数为 30periodSeconds: 30# 定义成功阈值为 1successThreshold: 1# 定义失败阈值为 5failureThreshold: 5# 定义就绪探针readinessProbe:# 定义 HTTP GET 请求httpGet:# 定义请求路径为 /path: /# 定义请求端口为 80port: 80# 定义请求协议为 HTTPscheme: HTTP# 定义初始延迟秒数为 30initialDelaySeconds: 30# 定义超时秒数为 5timeoutSeconds: 5# 定义周期秒数为 10periodSeconds: 10# 定义成功阈值为 1successThreshold: 1# 定义失败阈值为 5failureThreshold: 5# 定义容器端口列表ports:# 定义一个端口- # 定义端口名称为 httpname: http# 定义容器端口为 80containerPort: 80# 定义协议为 TCPprotocol: TCP
  • 上面定义的资源对象中,最重要的就是Service 中 label selector的定义:
  selector:app: demoversion: v1

部署与测试

  • 部署v1 v2 deploy服务 和 service服务
# 使用 kubectl 工具应用多个 YAML 配置文件
# -f service.yaml: 应用服务配置文件
# -f v1-deploy.yaml: 应用版本1的部署配置文件
# -f v2-deploy.yaml: 应用版本2的部署配置文件
kubectl apply -f service.yaml -f v1-deploy.yaml -f v2-deploy.yaml

测试流量是否到v1版本
# 登陆任意一个pod,向 demo service 发起请求
while sleep 0.3; do curl http://demo; done# 输出日志
Host: demo1-deployment-b5bd596d8-dw27b, Version: v1
Host: demo1-deployment-b5bd596d8-dw27b, Version: v1

切换入口流量从v1 到 v2
# 使用 kubectl 工具更新服务的配置
# patch service demo: 对名为 demo 的服务进行补丁操作
# -p '{"spec":{"selector":{"version":"v2"}}}': 指定补丁内容,将服务的选择器更新为 version=v2
kubectl patch service demo -p '{"spec":{"selector":{"version":"v2"}}}'

测试流量是否到v2版本
# 登陆任意一个pod,向 demo service 发起请求
while sleep 0.3; do curl http://demo; done# 输出日志
Host: demo2-deployment-b5bd596d8-dw27b, Version: v2
Host: demo2-deployment-b5bd596d8-dw27b, Version: v2
http://www.whsansanxincailiao.cn/news/31974978.html

相关文章:

  • 小企业网站建设/今天发生了什么重大新闻
  • vs网站开发效果图/搜索引擎的关键词优化
  • 产品盘网站建设/网站新站整站排名
  • wordpress多合一seo包/东莞seo建站优化工具
  • 旅游网站管理系统论文/seo网站优化培训
  • 做的比较漂亮的中国网站/浙江网站建设营销
  • 做搜狗网站排名首页/站长工具四叶草
  • 我的世界是谁做的视频网站/爱站网站排名查询工具
  • 网站开发管理招聘/河南网站定制
  • 哈尔滨企业建站哪家靠谱/外贸谷歌优化
  • 网站建设的具体方法/上海全国关键词排名优化
  • 网站开发毕业论文/百度关键词排名查询
  • 网站在公司做有什么要求吗/品牌传播推广方案
  • php js做网站/品牌seo如何优化
  • 美容北京公司网站建设/广州网站建设推荐
  • 这么建立com的网站/电商数据分析
  • 网站盈利/2022最新小学生新闻
  • 网站报名照片怎么做/广州百度网站推广
  • wordpress 过滤词/seo服务加盟
  • 咨询聊城做网站/2022年新闻大事
  • 安陆做网站公司/百度seo服务方案
  • 怎么建设免费小说网站/外贸网站免费推广
  • 专业的河南网站建设公司哪家好/大连seo
  • 中山建设网站的公司/天津seo推广软件
  • 盘锦网站建设服务/windows优化大师下载
  • 没有网站百度推广吗/百度搜索名字排名优化
  • 上海疫情通报最新/seo网上培训
  • 如何做网站进行推广/线上产品推广方案
  • 全国精品课程建设网站/优化seo排名
  • 北京网站建设哪家便宜/百度人工优化