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

做网站在哪里做比较好网站开发信息发布

做网站在哪里做比较好,网站开发信息发布,网站的所有权,溧阳建设工程监理网站目录 一、Deployments - 控制器应用 二、Deployment升级回滚和弹性收缩 2.1、创建一个 1.14 版本的 pod 2.2、应用升级 2.3、查看升级状态 2.4、查看历史版本 2.5、应用回滚 2.6、弹性伸缩 三、StatefulSet - 有状态应用 四、DaemonSet - 守护进程 五、Job - 单次任…目录 一、Deployments - 控制器应用 二、Deployment升级回滚和弹性收缩 2.1、创建一个 1.14 版本的 pod 2.2、应用升级 2.3、查看升级状态 2.4、查看历史版本 2.5、应用回滚 2.6、弹性伸缩  三、StatefulSet - 有状态应用 四、DaemonSet - 守护进程 五、Job - 单次任务 六、Cronjob - 定时任务 一、Deployments - 控制器应用 Deployment 表示用户对 K8S 集群的一次更新操作。Deployment 控制器可以部署无状态应用管理 Pod 和 ReplicaSet、部署滚动升级等功能。 下面是一个 Deployment 示例。 其中创建了一个 ReplicaSet负责启动三个 nginx Pod vim simple-deployment.yam apiVersion: apps/v1 kind: Deployment metadata:name: nginx-deployment # 后续创建 ReplicaSet 和 Pod 的命名基础labels:app: nginx spec:replicas: 3 # pod的副本数量selector:matchLabels:app: nginx # 定义所创建的 ReplicaSet 如何查找要管理的 Podtemplate:metadata:labels:app: nginx # pod模板标签spec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80 创建Deployment $ kubectl create -f simple-deployment.yaml deployment.apps/nginx-deployment created# 查看deployment是否创建 $ kubectl get deployments NAME READY UP-TO-DATE AVAILABLE AGE nginx-deployment 3/3 3 3 13s 注意 Deployment 已创建全部三个副本并且所有副本都是最新的它们包含最新的 Pod 模板 并且可用。字段说明 NAME 列出了名字空间中 Deployment 的名称。READY 显示应用程序的可用的“副本”数。显示的模式是“就绪个数/期望个数”。UP-TO-DATE 显示为了达到期望状态已经更新的副本数。AVAILABLE 显示应用可供用户使用的副本数。AGE 显示应用程序运行的时间。 我们可以通过kubectl describe [deployment-name]查看deployment的相关事件 $ kubectl describe deploy nginx-deployment Name: nginx-deployment Namespace: default CreationTimestamp: Mon, 06 Feb 2023 06:58:59 0000 Labels: appnginx Annotations: deployment.kubernetes.io/revision: 1 Selector: appnginx Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 25% max unavailable, 25% max surge Pod Template:Labels: appnginxContainers:nginx:Image: nginx:1.14.2Port: 80/TCPHost Port: 0/TCPEnvironment: noneMounts: noneVolumes: none Conditions:Type Status Reason---- ------ ------Available True MinimumReplicasAvailableProgressing True NewReplicaSetAvailable OldReplicaSets: none NewReplicaSet: nginx-deployment-85996f8dbd (3/3 replicas created) Events:Type Reason Age From Message---- ------ ---- ---- -------Normal ScalingReplicaSet 101s deployment-controller Scaled up replica set nginx-deployment-85996f8dbd to 3 我们看到最下面的Scaled up replica set nginx-deployment-85996f8dbd to 3其实就是运行三个副本的Pod在k8s中deployment是通过ReplicaSet副本集来实现的当我们创建一个deployment的时候会自动创建一个ReplicaSet来管理pod的副本数量。 查看 Deployment 创建的 ReplicaSetrs $ kubectl get rs NAME DESIRED CURRENT READY AGE nginx-deployment-85996f8dbd 3 3 3 3m13s ReplicaSet 输出中包含以下字段 NAME 列出名字空间中 ReplicaSet 的名称DESIRED 显示应用的期望副本个数即在创建 Deployment 时所定义的值。 此为期望状态CURRENT 显示当前运行状态中的副本个数READY 显示应用中有多少副本可以为用户提供服务AGE 显示应用已经运行的时间长度。 注意 ReplicaSet 的名称格式始终为 [Deployment 名称]-[哈希]。 该名称将成为所创建的 Pod 的命名基础。 其中的哈希字符串与 ReplicaSet 上的 pod-template-hash 标签一致。 查看ReplicaSet相关事件 $ kubectl describe rs nginx-deployment-85996f8dbd Name: nginx-deployment-85996f8dbd Namespace: default Selector: appnginx,pod-template-hash85996f8dbd Labels: appnginxpod-template-hash85996f8dbd Annotations: deployment.kubernetes.io/desired-replicas: 3deployment.kubernetes.io/max-replicas: 4deployment.kubernetes.io/revision: 1 Controlled By: Deployment/nginx-deployment Replicas: 3 current / 3 desired Pods Status: 3 Running / 0 Waiting / 0 Succeeded / 0 Failed Pod Template:Labels: appnginxpod-template-hash85996f8dbdContainers:nginx:Image: nginx:1.14.2Port: 80/TCPHost Port: 0/TCPEnvironment: noneMounts: noneVolumes: none Events:Type Reason Age From Message---- ------ ---- ---- -------Normal SuccessfulCreate 3m24s replicaset-controller Created pod: nginx-deployment-85996f8dbd-q9pltNormal SuccessfulCreate 3m24s replicaset-controller Created pod: nginx-deployment-85996f8dbd-knwkvNormal SuccessfulCreate 3m24s replicaset-controller Created pod: nginx-deployment-85996f8dbd-vcs8d 可以看到replicaset-controller负责创建三个nginx的Pod。 二、Deployment升级回滚和弹性收缩  升级 假设从版本为 1.14 升级到 1.15 这就叫应用的升级【升级可以保证服务不中断】回滚从版本 1.15 变成 1.14这就叫应用的回滚弹性伸缩我们根据不同的业务场景来改变 Pod 的数量对外提供服务这就是弹性伸缩 2.1、创建一个 1.14 版本的 pod apiVersion: apps/v1 kind: Deployment metadata:creationTimestamp: nulllabels:app: webname: web spec:replicas: 1selector:matchLabels:app: webstrategy: {}template:metadata:creationTimestamp: nulllabels:app: webspec:containers:# 修改 nginx 版本 1.14- image: nginx:1.14name: nginxresources: {} status: {} 创建pod $ kubectl apply -f nginx.yaml 如上图可以看到 当前运行的nginx容器的镜像版本是1.14。 2.2、应用升级 $ kubectl set image deployment web nginxnginx:1.15 升级过程 $ kubectl set image deployment web nginxnginx:1.15 deployment.apps/web image updated# 首先是开始的 nginx 1.14 版本的 Pod 在运行然后 1.15 版本的在创建 $ kubectl get pod NAME READY STATUS RESTARTS AGE web-66bf4959f5-qhzsd 1/1 Running 0 52s web-bbcf684cb-bbmqv 0/1 ContainerCreating 0 3s# 然后在 1.15 版本创建完成后就会暂停 1.14 版本 $ kubectl get pod NAME READY STATUS RESTARTS AGE web-66bf4959f5-qhzsd 1/1 Terminating 0 67s web-bbcf684cb-bbmqv 1/1 Running 0 18s# 最后把 1.14 版本的 Pod 移除完成我们的升级 $ kubectl get pod NAME READY STATUS RESTARTS AGE web-bbcf684cb-bbmqv 1/1 Running 0 33s 我们在下载 1.15 版本容器就处于 ContainerCreating 状态然后下载完成后就用 1.15 版本去替换 1.14 版本了这么做的好处就是升级可以保证服务不中断。 2.3、查看升级状态 $ kubectl rollout status deployment web deployment web successfully rolled out 2.4、查看历史版本 $ kubectl rollout history deployment web deployment.apps/web REVISION CHANGE-CAUSE 1 none 2 none 2.5、应用回滚 # 回滚到上一版本 $ kubectl rollout undo deployment web# 回滚到指定版本 $ kubectl rollout undo deployment web --to-revision2 如上图可以看到通过kubectl rollout undo成功回滚到上一个版本镜像版本又变成1.14了。当然还可以指定--to-revision回滚到指定的版本。 2.6、弹性伸缩  # 创建5个pod副本 $ kubectl scale deployment web --replicas5 deployment.apps/web scaled# 输出结果等一会就会全部 Running $ kubectl get pod NAME READY STATUS RESTARTS AGE web-5b9d46fdff-2v2rt 1/1 Running 0 24s web-5b9d46fdff-4lz7w 1/1 Running 0 24s web-5b9d46fdff-7tq9x 1/1 Running 0 3m42s web-5b9d46fdff-mfqhb 1/1 Running 0 24s web-5b9d46fdff-sfx6q 1/1 Running 0 24s 三、StatefulSet - 有状态应用 Deployment控制器设计原则管理的所有Pod一模一样提供同一个服务也不考虑在哪台Node 运行可随意扩容和缩容。这种应用称为“无状态”例如Web服务。 在实际的场景中并不能满足所有应用尤其是分布式应用会部署多个实例这些实例之间往往有依赖关系例如主从关系、主备关系这种应用称为“有状态”例如MySQL主从、Etcd集群。 这时候就需要有状态部署了有状态部署有以下几个特点 1、每个pod角色不同不对等2、pod之间有连接关系3、每个pod都有独立的存储 StatefulSet控制器用于部署有状态应用满足一些有状态应用的需求 • Pod有序的部署、扩容、删除和停止 • Pod分配一个稳定的且唯一的网络标识 • Pod分配一个独享的存储 稳定的Pod网络标识使用Headless Service相比普通Service只是将spec.clusterIP定义为None。 维护Pod网络身份会为每个Pod分配一个数字编号并且按照编号顺序部署。 稳定主要体现在主机名和Pod A记录 • 主机名statefulset名称-编号 • Pod DNS A记录statefulset名称-编号.service-name .namespace.svc.cluster.local 通过一个StatefulSet有状态应用的例子来说明 准备sta.yaml文件 apiVersion: v1 kind: Service metadata:name: nginxnamespace: defaultlabels: app: nginx spec:clusterIP: Noneports:- port: 80name: nginxprotocol: TCPtargetPort: 80selector:app: nginxtype: ClusterIP---apiVersion: apps/v1 kind: StatefulSet metadata:name: nginx-statefulsetnamespace: default spec:serviceName: nginxselector:matchLabels:app: nginxreplicas: 3template:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx 创建并查看pod $ kubectl apply -f sta.yaml service/nginx created statefulset.apps/nginx-statefulset created$ kubectl get pods NAME READY STATUS RESTARTS AGE nginx-statefulset-0 1/1 Running 0 62s nginx-statefulset-1 1/1 Running 0 43s nginx-statefulset-2 1/1 Running 0 39s 可以看到每个pod都有一个唯一的名称。 [rootlocalhost ~]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 none 443/TCP 13m nginx ClusterIP None none 80/TCP 110s 可以看到CULSTER-IP为None说明这是一个Headless Service。 四、DaemonSet - 守护进程 DaemonSet 确保全部节点上都运行一个 Pod 的副本。 当有节点加入集群时 也会为他们新增一个 Pod 。 当有节点从集群移除时这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。 DaemonSet 的一些典型用法 在每个节点上运行集群守护进程在每个节点上运行日志收集守护进程在每个节点上运行监控守护进程 一种简单的用法是为每种类型的守护进程在所有的节点上都启动一个 DaemonSet。 一个稍微复杂的用法是为同一种守护进程部署多个 DaemonSet每个具有不同的标志 并且对不同硬件类型具有不同的内存、CPU 要求。 DaemonSet示例 vim daemonset.yaml apiVersion: apps/v1 kind: DaemonSet metadata:name: nginx spec:selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx创建并查看pod  # 当前集群中存在两个节点 $ kubectl get nodes NAME STATUS ROLES AGE VERSION controlplane Ready control-plane 2d17h v1.26.0 node01 Ready none 2d16h v1.26.0$ kubectl apply -f daemonset.yaml daemonset.apps/nginx created# nginx pod在两个节点都处于运行状态 $ kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-frmjc 1/1 Running 0 6s 192.168.1.4 node01 none none nginx-qdb7s 1/1 Running 0 6s 192.168.0.8 controlplane none none 五、Job - 单次任务 Job 会创建一个或者多个 Pod并将继续重试 Pod 的执行直到指定数量的 Pod 成功终止。 随着 Pod 成功结束Job 跟踪记录成功完成的 Pod 个数。 当数量达到指定的成功个数阈值时任务即 Job结束。 删除 Job 的操作会清除所创建的全部 Pod。 挂起 Job 的操作会删除 Job 的所有活跃 Pod直到 Job 被再次恢复执行。 示例 Job下面是一个 Job 配置示例。它负责计算 π 到小数点后 2000 位并将结果打印出来。 此计算大约需要 10 秒钟完成。 vim job.yaml apiVersion: batch/v1 kind: Job metadata:name: pi-job spec:template:spec:containers:- name: piimage: perl:5.34.0command: [perl, -Mbignumbpi, -wle, print bpi(2000)]restartPolicy: NeverbackoffLimit: 4 创建并查看job  $ kubectl apply -f job.yaml job.batch/pi-job created$ kubectl get job NAME COMPLETIONS DURATION AGE pi-job 1/1 30s 82s$ kubectl describe job pi-job Name: pi-job Namespace: default Selector: controller-uid63b08866-0f04-4326-98ac-08118ec419d7 Labels: controller-uid63b08866-0f04-4326-98ac-08118ec419d7job-namepi-job Annotations: batch.kubernetes.io/job-tracking: Parallelism: 1 Completions: 1 Completion Mode: NonIndexed Start Time: Sun, 29 Jan 2023 07:48:01 0000 Completed At: Sun, 29 Jan 2023 07:48:31 0000 Duration: 30s Pods Statuses: 0 Active (0 Ready) / 1 Succeeded / 0 Failed Pod Template:Labels: controller-uid63b08866-0f04-4326-98ac-08118ec419d7job-namepi-jobContainers:pi:Image: perl:5.34.0Port: noneHost Port: noneCommand:perl-Mbignumbpi-wleprint bpi(2000)Environment: noneMounts: noneVolumes: none Events:Type Reason Age From Message---- ------ ---- ---- -------Normal SuccessfulCreate 84s job-controller Created pod: pi-job-q7h7cNormal Completed 54s job-controller Job completed 要查看 Job 对应的已完成的 Pod可以执行 kubectl get pod  $ kubectl get pod NAME READY STATUS RESTARTS AGE pi-job-q7h7c 0/1 Completed 0 117s# 查看Pod的标准输出 $ kubectl logs pi-job-q7h7c 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632788659361533818279682303019520353018529689957736225994138912497217752834791315155748572424541506959508295331168617278558890750983817546374649393192550604009277016711390098488240128583616035637076601047101819429555961989467678374494482553797747268471040475346462080466842590694912933136770289891521047521620569660240580381501935112533824300355876402474964732639141992726042699227967823547816360093417216412199245863150302861829745557067498385054945885869269956909272107975093029553211653449872027559602364806654991198818347977535663698074265425278625518184175746728909777727938000816470600161452491921732172147723501414419735685481613611573525521334757418494684385233239073941433345477624168625189835694855620992192221842725502542568876717904946016534668049886272327917860857843838279679766814541009538837863609506800642251252051173929848960841284886269456042419652850222106611863067442786220391949450471237137869609563643719172874677646575739624138908658326459958133904780275901 六、Cronjob - 定时任务 CronJob 创建基于时隔重复调度的 Job。 CronJob 用于执行排期操作例如备份、生成报告等。 一个 CronJob 对象就像 Unix 系统上的 crontabcron table文件中的一行。 它用 Cron 格式进行编写 并周期性地在给定的调度时间执行 Job。 CronJob示例下面的 CronJob 示例清单会在每分钟打印出当前时间和问候消息 vim cronjob.yaml apiVersion: batch/v1 kind: CronJob metadata:name: hello-cronjob spec:schedule: * * * * *jobTemplate:spec:template:spec:containers:- name: busyboximage: busybox:1.28imagePullPolicy: IfNotPresentcommand:- /bin/sh- -c- date; echo Hello from the Kubernetes clusterrestartPolicy: OnFailure 创建并查看cronjob $ kubectl create -f cronjob.yaml cronjob.batch/hello-cronjob created$ kubectl get cronjob NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE hello-cronjob * * * * * False 0 none 6s$ kubectl describe cronjob hello-cronjob Name: hello-cronjob Namespace: default Labels: none Annotations: none Schedule: * * * * * Concurrency Policy: Allow Suspend: False Successful Job History Limit: 3 Failed Job History Limit: 1 Starting Deadline Seconds: unset Selector: unset Parallelism: unset Completions: unset Pod Template:Labels: noneContainers:busybox:Image: busybox:1.28Port: noneHost Port: noneCommand:/bin/sh-cdate; echo Hello from the Kubernetes clusterEnvironment: noneMounts: noneVolumes: none Last Schedule Time: Sun, 29 Jan 2023 07:57:00 0000 Active Jobs: hello-cronjob-27916317 Events:Type Reason Age From Message---- ------ ---- ---- -------Normal SuccessfulCreate 1s cronjob-controller Created job hello-cronjob-27916317 查看cronjob生成的pod $ kubectl get pod NAME READY STATUS RESTARTS AGE hello-cronjob-27916317-zdc9d 0/1 Completed 0 100s hello-cronjob-27916318-nx65t 0/1 Completed 0 40s$ kubectl logs hello-cronjob-27916317-zdc9d Sun Jan 29 07:57:02 UTC 2023 Hello from the Kubernetes cluster$ kubectl logs hello-cronjob-27916318-nx65t Sun Jan 29 07:58:00 UTC 2023 Hello from the Kubernetes cluster 可以看到cronjob每分钟就会生成一个对应的pod然后日志输出当前时间和对应的提示消息。
http://www.huolong8.cn/news/246521/

相关文章:

  • 响应式网站建设外文文献网站开发中期检查
  • 做玩网站怎么上传图片云电脑免费版永久使用
  • 销售一个产品的网站怎么做的商城和营销型网站建设
  • 万网搭建淘宝客网站创意创新设计方案
  • 网站注册页面怎么做安徽建工网
  • 重庆南坪网站建设咨询400深圳机场最新消息今天
  • 社区网站制作忻州市忻府区
  • 建设执业资格注册管理中心网站优秀网站要素
  • 自己网站wordpress主题怎么wordpress黄聪文件上传
  • 电子商务前景怎么样西安seo优化系统
  • 网站策划专员招聘网站建设的征求意见稿
  • 网站导航网站可以做吗网站技术维护
  • 怎样注册自己的网站海南在线 海南一家
  • 做qq链接的网站关键词的分类和优化
  • 青岛房地产网站建设做润滑油网站图片
  • 沧州做网站价格河南住房和城乡建设厅网站资质
  • 易语言网站开发在工商局网站怎么做清算
  • 云南网站建设天锐科技国外app素材网站
  • 做数据分析好看的网站wordpress导入excel
  • 免费logo网站云南建设工程有限公司
  • 收款网站怎么建设如何做h5 网站
  • 网站优化怎么样做做网站如何设计数据库
  • WordPress怎么新建首页页面wordpress插件dx seo下载
  • 湖南网站制作电话电子商务网站建设与管理的实验报告
  • 企业网站建设费怎么核算怎样做网站代理
  • 长春专业网站建设推广费用中国核工业二三建设有限公司官网
  • 昆明市城建设档案馆网站hao123网址之家
  • 宜昌 房地产网站建设网站图片设计怎样才能高大上
  • 什么是电子商务网站建设seo诊断的网络问题
  • 帮助中心网站源码seo优化软件下载