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

贵州网站建设营销公司无锡网站建设标准

贵州网站建设营销公司,无锡网站建设标准,城乡建设网站证件查询系统,seo赚钱吗StatefulSet 文章目录 StatefulSet一、介绍与特点1.1、介绍1.2、特点1.3、组成部分1.4、为什么需要无头服务1.5、为什么需要volumeClaimTemplate 二、教程2.1、创建StatefulSet2.2、查看部署资源 三、StatefulSet中的Pod3.1、检查Pod的顺序索引3.2、使用稳定的网络身份标识3.3、…StatefulSet 文章目录 StatefulSet一、介绍与特点1.1、介绍1.2、特点1.3、组成部分1.4、为什么需要无头服务1.5、为什么需要volumeClaimTemplate 二、教程2.1、创建StatefulSet2.2、查看部署资源 三、StatefulSet中的Pod3.1、检查Pod的顺序索引3.2、使用稳定的网络身份标识3.3、查看主机明内部DNS地址 四、扩容/缩容StatefulSet4.1、扩容4.2、缩容 五、更新StatefulSet5.1、滚动更新 一、介绍与特点 1.1、介绍 RC、Deployment、DaemonSet都是面向无状态的服务它们所管理的Pod的IP、名字、启停顺序等都是随机的而StatefulSet是什么顾名思义有状态的集合管理所有有状态服务比如MySQL、MongoDB集群等。StatefulSet本质上是Deployment的一种变体在v1.9版本中已成为GA版本它为了解有状态服务的问题它所管理的Pod拥有固定的Pod名称启停顺序在StatefulSet中Pod名称为网络标识(hostname)还必须要用到共享存储。在Deployment中与之对应的服务是service而在StatefulSet中与之对应的是headless service即无头服务与service的与别是它没有ClusterIP解析它的名称时将返回该Headless Service对印的全部Pod的Endpoint端点列表。除此之外StatefulSet在Headless Service的基础上又为StatefulSet控制的每个Pod副本创建了一个DNS域名这个域名的格式为$(podname).(headless server name)FQDN: (podname).(headless servername).namespace.svc.cluster.local 1.2、特点 Pod的一致性包含次序启停、停止次序、网络一致性。此一致性与Pod相关与 呗调度到哪个node节点无关。 稳定的次序对于N个副本的StatefulSet每个Pod都在[0-N]的范围内分配一个数字序号且是唯一的。 稳定的网络Pod的hostname模式为(StatefulSet名称)-(序号)。 稳定的存储通过VolumeClaimTemplate为每个Pod创建一个PV。删除、减少副本不会删除相关的卷。 1.3、组成部分 Headless Service用来定义Po的网络标识DNS domain volumeClaimTemplates存储卷申请模板创建PVC指定pvc名称大小将自动创建pvc且pvc必须由存储类供应 1.4、为什么需要无头服务 在用Deployment时每一个Pod名称是没有顺序的是随机字符串因此Pod名称是无序的但是在StatefulSet中要求必须是有序的每个Pod不能随意取代Pod重建后Pod名称还是一样的。而Pod IP是变化的所以是以Pod名称来识别Pod名称是Pod唯一性的标识符必须持久稳定有效这时候要用到无头服务它可以给每个Pod一个唯一的名称。 1.5、为什么需要volumeClaimTemplate 对于有状态的副本集都会用到持久存储对于分布式系统来讲它的最大特点是数据的不一样的所以各个节点不能使用同一存储卷每个节点有自己的专用存储但是如果在Deployment中的Pod template里定义存储卷是所有副本共有一个存储卷数据是相同的因为是基于模板来创建的而StatefulSet中每个Pod都要自己的专有存储卷所以StatefulSet的存储卷就不能再用Pod模板来创建了于是StatefulSet使用volumeClaimTemplate称为卷申请模板它会为每个Pod生成不同的pvc并绑定pv从而实现各pod有专用存储。这就是为什么要用volumeClaminTemplate的原因。 二、教程 开始之前确保你已经正常部署Kubernetes集群 2.1、创建StatefulSet 作为开始使用如下示例创建了一个StatefulSet以及它所依赖的Service。它和StatefulSet概念中的示例相似。它创建了一个Headless Servicenginx用来发布StatefulSetweb中的Pod的IP地址。 [rootmaster ~]# vim nginx-statefulset.yaml apiVersion: v1 kind: Service metadata:name: nginxlabels:app: nginx spec:ports:- port: 80name: webclusterIP: None # Service的类型设置为None将标识这是个Headless Service即无头服务selector: app: nginx # 表示这个Service关联的Pod将会选择标签带有appnginx的Pod---apiVersion: apps/v1 kind: StatefulSet metadata:name: web spec:serviceName: nginx # 声明它属于哪个Headless Service无头服务replicas: 2selector:matchLabels:app: nginx # 这个StatefulSet将会管理标签是appnginx的Podtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:latestimagePullPolicy: IfNotPresent# 定义挂载卷,这只是一个演示生产环境一定不会这样用的volumeMounts:- name: wwwmountPath: /usr/share/nginx/htmlvolumes:- name: wwwhostPath:# 每个运行Pod的宿主机挂载容器中的目录路径path: /mnt# 使用此命令加载资源 [rootmaster ~]# kubectl apply -f nginx-statefulset.yaml2.2、查看部署资源 StatefulSet默认以严格的顺序创建其Pod。对于一个拥有n个副本的StatefulSetPod被部署时是按照{0…n-1}的序号顺序创建的请注意直到web-0Pod处于Running并Ready状态后web-1Pod才会被启动。 # 查看Pod [rootmaster ~]# kubectl get pod -l appnginx NAME READY STATUS RESTARTS AGE web-0 1/1 Running 0 2m50s web-1 1/1 Running 0 2m48s# 查看StatefulSet [rootmaster ~]# kubectl get statefulset web NAME READY AGE web 2/2 2m6s# 查看Service无头服务 [rootmaster ~]# kubectl get service nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx ClusterIP None none 80/TCP 3m29s三、StatefulSet中的Pod StatefulSet中的每个Pod拥有一个唯一的顺序索引和稳定的网络身份标识。 3.1、检查Pod的顺序索引 如果StatefulSet盖尼奥中所提到的StatefulSet中的每个Pod拥有一个具有黏性的、独一无二的身份标志这个标志基于StatefulSet控制器分配给每个Pod的唯一顺序索引。Pod名称的格式为statefulset 名称-序号索引。WebStatefulSet拥有两个副本所以它创建了两个Podweb-0和web-1 [rootmaster ~]# kubectl get pod -l appnginx NAME READY STATUS RESTARTS AGE web-0 1/1 Running 0 10m web-1 1/1 Running 0 10m3.2、使用稳定的网络身份标识 每个Pod都拥有一个基于顺序索引的稳定的主机名。使用kubectl exex在每个Pod中执行hostname [rootmaster ~]# for i in 0 1; do kubectl exec web-$i -- sh -c hostname; done web-0 web-13.3、查看主机明内部DNS地址 使用kubectl run运行一个提供nslookup命令的容器该命令来自于dnsutils包。通过对Pod的主机名执行nslookup你可以检查这些主机名在集群内部的DNS地址 # 命令终端中运行一个Pod终端 [rootmaster ~]# kubectl run -i --tty --image busybox:1.28 dns-test --restartNever --rm# 使用以下命令解析web-0Pod的内部DNS地址 / # nslookup web-0.nginx Server: 10.96.0.10 Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.localName: web-0.nginx Address 1: 10.244.1.2 web-0.nginx.default.svc.cluster.local四、扩容/缩容StatefulSet 扩容/缩容StatefulSet指增加或减少它的副本数。这通过更新replicas字段完成水平缩放。你也可以使用kubectl sacale或者kubectl pathch来缩容/缩容一个StatefulSet。 4.1、扩容 扩容意味着添加更多副本。如果你的应用程序能够在整个StatefulSet范围内分派工作则新的更大的Pod及可以执行更多的工作。 StatefulSet控制器扩展了副本的数量。如同创建StatefulSet所述StatefulSet按序号索引扩容各个Pod并且会等待前一个Pod变为Running和Ready才会启动下一个Pod。 # 将Pod容扩容为5个 [rootmaster ~]# kubectl scale statefulset web --replicas5# 可以提前执行效果更加明显 # 可以看出前一个Pod创建完成并且成功运行之后才会去创建下一个Pod而且创建Pod顺序也有要求仔细观察可以看出顺序是由低到高。 [rootmaster ~]# kubectl get pod -l appnginx --watch NAME READY STATUS RESTARTS AGE web-0 1/1 Running 0 27m web-1 1/1 Running 0 26m web-2 0/1 Pending 0 0s web-2 0/1 Pending 0 0s web-2 0/1 ContainerCreating 0 0s web-2 1/1 Running 0 2s web-3 0/1 Pending 0 0s web-3 0/1 Pending 0 0s web-3 0/1 ContainerCreating 0 0s web-3 1/1 Running 0 1s web-4 0/1 Pending 0 0s web-4 0/1 Pending 0 0s web-4 0/1 ContainerCreating 0 0s web-4 1/1 Running 0 1s[rootmaster ~]# kubectl get pod NAME READY STATUS RESTARTS AGE web-0 1/1 Running 0 27m web-1 1/1 Running 0 27m web-2 1/1 Running 0 22s web-3 1/1 Running 0 20s web-4 1/1 Running 0 19s4.2、缩容 缩容意味着减少副本数量。例如你可能因为服务的流量水平已降低并且在当前规模下存在空闲资源的原因执行缩容操作。 # 将Pod缩容为3个 [rootmaster ~]# kubectl patch sts web -p {spec:{replicas:3}}# 缩容的同时可以看出一共5个Pod缩容为3个之后是由从高到底的顺序去缩容的 [rootmaster ~]# kubectl get pod -l appnginx --watch web-4 1/1 Terminating 0 3m43s web-4 0/1 Terminating 0 3m44s web-4 0/1 Terminating 0 3m44s web-4 0/1 Terminating 0 3m44s web-3 1/1 Terminating 0 3m45s web-3 0/1 Terminating 0 3m46s web-3 0/1 Terminating 0 3m46s web-3 0/1 Terminating 0 3m46s五、更新StatefulSet StatefulSet控制器支持自动更新。更新策略由StatefulSet API对象的spec.updateStrategy字段决定。这个特性能够用更新一个StatefulSet中Pod的容器镜像、资源请求和限制、标签和注解。有两个有效的更新策略RollingUpdate默认和OnDelete 5.1、滚动更新 RollingUpdate更新策略会更新一个StatefulSet中的所有Pod采用与序号索引相反的顺序并遵循StatefulSet的保证StatefulSet里的Pod采用和序号相反的顺序更新。在更新下一个Pod前StatefulSet控制器终止每个Pod并等待它们变成Running和Ready。请注意虽然在顺序后继者变成Running和Ready之前StatefulSet控制器不会更新下一个Pod # 执行patch操作再次该表容器镜像 [rootmaster ~]# kubectl patch statefulset web --typejson -p[{op: replace, path: /spec/template/spec/containers/0/image, value:registry.k8s.io/nginx:1.20}]# 查看滚动更新状态 [rootmaster ~]# kubectl rollout status statefulset web partitioned roll out complete: 3 new pods have been updated...# 查看pod状态 [rootmaster ~]# kubectl get pod -l appnginx NAME READY STATUS RESTARTS AGE web-0 1/1 Running 0 64s web-1 1/1 Running 0 66s web-2 1/1 Running 0 9m17s# 查看滚动更新后的Nginx版本 [rootmaster ~]# for p in 0 1 2; do kubectl get pod web-$p --template {{range $i, $c : .spec.containers}}{{$c.image}}{{end}}; echo; done registry.k8s.io/nginx:1.20 registry.k8s.io/nginx:1.20 registry.k8s.io/nginx:1.20
http://www.hkea.cn/news/14442358/

相关文章:

  • 县级网站建设培训会浙江专业网站seo
  • 成功网站建设案例门户网站建设方案公司
  • 福建住房城乡建设厅网站小型网站开发时间周期
  • 建设高校网站的现实意义建设网站怎样分配给用户空间
  • 网站认证金额怎么做分录成都高端网站制作公司
  • 最新传奇手游开服网站推广引流渠道平台
  • 做平台交易网站怎么收款智能建站系统开发
  • 网站开发教程 模板三水区建设局网站
  • 网站开发人员的 生活南宁网站公司
  • wordpress 获取标签所有文章seo长沙
  • 北京社保网站减员怎么做wordpress注册没用
  • 装修网站效果图品牌建设方式有哪些?
  • 收录查询 站长工具永久免费的crm软件系统
  • 网站里的图片是怎么做的斗牛网站开发
  • 南宁做网站开发的公司个人工作室可以做哪些项目
  • wordpress看文网站上海城隍庙几点关门
  • 网站服务器搬迁学ps网课平台哪个好
  • 高端企业网站源码太原论坛建站模板
  • 网站分几个阶段建设那些做环保网站的好处
  • 网站设计的目的和任务手表设计网站
  • 片头网站互联网创业项目什么赚钱
  • 响应式网站模板html5禹城有做网站
  • 企业在线咨询服务系统昆明百度seo排名优化
  • 网站设计工程师静态网页文件
  • 个人网站有商业内容备案本地网站开发环境搭建
  • 网站建设合同免费下载垂直电商网站建设方案
  • 制作自助网站中华建设
  • 资阳建设机械网站海口网约车最新政策
  • 做网站推广话术平台搭建与拆除流程
  • 山西网站建设交流建筑的网站