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

kubernetes第六天

1.deployments资源

将rs资源的kind的值改为Deployment即可。

相比rs资源,升级时无须删除pod,

deployments资源不会直接控制pod,而是通过控制rs资源控制pod

strategy升级策略(与template同级)

strategy:# 升级的类型,"Recreate" or "RollingUpdate"# Recreate:#   先停止所有的Pod运行,然后在批量创建更新。#   生产环节中不推荐使用这种策略,因为升级过程中用户将无法访问服务!# RollingUpdate:#   滚动更新,即先实现部分更新,逐步替换原有的pod,是默认策略。# type: Recreatetype: RollingUpdate# 自定义滚动更新的策略rollingUpdate:# 在原有Pod的副本基础上,多启动Pod的数量。# maxSurge: 2maxSurge: 2# 在升级过程中最大不可访问的Pod数量.# maxUnavailable: 1maxUnavailable: 1

2.deployments资源交互式升级和非交互式升级

交互式升级:

kubectl edit -f 01-deploy-update.yaml

kubectl edit deployments.apps

非交互式升级:

kubectl set image deploy web-deploy nginx=harbor.lxcedu.com/base-img/nginx:3

即kubectl set image deploy deploy资源名 容器名=镜像名

3.svc的type之NodePort

NodePort类型的Service允许从集群外部访问集群内部的服务,如下配置,访问宿主机的30080端口相当于访问pod的80端口

 type: NodePort# 指定端口映射相关信息ports:# 指定svc的端口号- port: 80# 指定Pod端口号targetPort: 80# 指定协议protocol: TCP# 指定访问宿主机的端口,该端口的报文会被转发后端的容器端口# 默认svc有效端口范围是:"30000-32767"nodePort: 30080# 指定ClusterIP的地址clusterIP: 10.200.100.200

访问Node节点的IP加上nodePort(即30080)时,流量不会先到集群内部的clusterIP:port(即10.200.100.200:80),而是直接通过Node节点的IP和指定的nodePort(30080)进入集群,并由Kubernetes的网络组件(如kube-proxy)负责将流量转发到后端Pod的对应端口(在这个例子中是80端口)。

具体来说,当外部客户端通过Node节点的IP和nodePort访问Service时,Kubernetes的网络组件会识别出这是一个NodePort类型的Service请求,并根据Service的配置将流量转发到后端的一组Pods中的一个(这通常是通过负载均衡算法来实现的)。

4.coreDNS

作用:将coreDNS的名称解析为ClusterIP

查看clusterDNS地址:

配置文件 /var/lib/kubelet/config.yaml

clusterDNS:
- 10.200.0.10
#集群域名
clusterDomain: lxcedu.com

解析coreDNS的A记录

方式一:

默认集群域名时:<service name>.<namespace name>.svc.cluster.local

因为我这里集群域名是lxc.edu.com,所以使用时是<service name>.<namespace name>.svc.lxc.edu.com

如下图

方式二:

使用bind-utils验证

yum install -y bind-utils

5.deployment实现蓝绿发布

1.部署当前版本(旧版本)

2.部署service

3.部署新版本(使用新的deployment名称或label标签)

4.切换service标签到新的pod

缺点:浪费资源

6.deployment实现灰度发布

1.部署当前版本(旧版本)

2.部署service

3.部署新版本deployments,pod数量为一个,标签与旧版本一致

4.无异常时,逐渐减小旧版本pod数量,增大新版本pod数量,直至所有pod变为新版本

7.job控制器

job概述:一次性任务,pod完成作业后并不重启,重启策略为restartPolicy:Never

apiVersion: batch/v1
kind: Job
metadata:name: pi
spec:template:spec:containers:- name: piimage: perl:5.34# 它计算π到2000个位置并打印出来。大约需要 10 秒才能完成。command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]restartPolicy: Never# 指定标记此作业失败之前的重试次数。默认值为6backoffLimit: 4

作业完成之后,pod的状态为competed

8.CronJob

概述:周期性任务,CronJob底层逻辑是周期性创建Job控制器来实现周期性任务的。

apiVersion: batch/v1
kind: CronJob
metadata:name: hello
spec:# 定义调度格式,参考链接:https://en.wikipedia.org/wiki/Cron# ┌───────────── 分钟 (0 - 59)# │ ┌───────────── 小时 (0 - 23)# │ │ ┌───────────── 月的某天 (1 - 31)# │ │ │ ┌───────────── 月份 (1 - 12)# │ │ │ │ ┌───────────── 周的某天 (0 - 6)(周日到周一;在某些系统上,7 也是星期日)# │ │ │ │ │                          或者是 sun,mon,tue,web,thu,fri,sat# │ │ │ │ │# │ │ │ │ │# * * * * *schedule: "* * * * *"jobTemplate:spec:template:spec:containers:- name: helloimage: busybox:1.28imagePullPolicy: IfNotPresentcommand:- /bin/sh- -c- date; echo Hello restartPolicy: OnFailure


http://www.mrgr.cn/news/83289.html

相关文章:

  • 国产3D CAD将逐步取代国外软件
  • Go语言的 的设计模式(Design Patterns)核心知识
  • KubeVirt 进阶:设置超卖比、CPU/MEM 升降配、在线磁盘扩容
  • C#中的数组用法
  • 基于 Pod 和 Service 注解的服务发现
  • 夯实前端基础之HTML篇
  • 01-51单片机LED与独立按键
  • 理解Unity脚本编译过程:程序集
  • .NET framework、Core和Standard都是什么?
  • python学习笔记—16—数据容器之元组
  • 微信小程序——创建滑动颜色条
  • 【前端】【CSS3】基础入门知识
  • 初学stm32 --- ADC单通道采集
  • 英伟达 RTX 5090 显卡赋能医疗大模型:变革、挑战与展望
  • 记录一下vue2项目优化,虚拟列表vue-virtual-scroll-list处理10万条数据
  • EasyExcel的应用
  • 基于phpstudy快速搭建本地php环境(Windows)
  • Linux x86_64 程序静态链接之重定位
  • 前端for循环遍历——foreach、map使用
  • CSS基础入门
  • 设计模式 行为型 状态模式(State Pattern)与 常见技术框架应用 解析
  • vue3 面试题:vue3和vue2有什么区别?
  • uniapp 微信小程序内嵌h5实时通信
  • MatLab基本语法
  • Freemarker-语法笔记
  • 单例模式-如何保证全局唯一性?