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

上海网站开发建设最简单的网站代码

上海网站开发建设,最简单的网站代码,东莞做网站公司首选,wordpress eaccelerator一 控制器 控制器是 k8s内置的管理工具。可以帮助用户实现 Pod的自动部署、自维护、扩容、滚动更新等功能的自动化程序。 为什么要使用控制器? 有大量的 Pod需要维护管理需要维护 Pod的健康状态控制器可以像机器人一样可以替用户完成维护管理的工作 二 Deployment 1 概…一  控制器 控制器是 k8s内置的管理工具。可以帮助用户实现 Pod的自动部署、自维护、扩容、滚动更新等功能的自动化程序。 为什么要使用控制器? 有大量的 Pod需要维护管理需要维护 Pod的健康状态控制器可以像机器人一样可以替用户完成维护管理的工作 二  Deployment 1  概述 最常用的无状态服务控制器由 Deploymen、ReplicaSet、Pod 组成、支持集群扩容缩容滚动、更新、自动维护 Pod 可用性及·副本量等功能 ReplicaSet 和 Pod 由 Deployment 自动管理用户无需干预 2  Deploy 图例 3  Deploy 资源文件 # 清理 Pod 使用控制器创建 [rootmaster ~]# kubectl delete pod --all # 资源对象模板 [rootmaster ~]# kubectl create deployment myweb --imagemyos:httpd --dry-runclient -o yaml [rootmaster ~]# vim mydeploy.yaml --- kind: Deployment # 资源对象类型 apiVersion: apps/v1 # 版本 metadata: # 元数据name: myweb # 名称 spec: # 详细定义replicas: 2 # 副本数量selector: # 定义标签选择器matchLabels: # 支持 matchExpressions 表达式语法app: httpd # 通过标签来确定那个 Pod 由它来管理template: # 定义用来创建 Pod 的模板,以下为 Pod 定义metadata: # Pod元数据labels: # 名称由控制器生成app: httpd # 这里只能定义标签spec: # Pod的详细定义restartPolicy: Always # 重启策略containers: # 容器定义- name: apache # 容器名称image: myos:httpd # 创建容器使用的镜像imagePullPolicy: Always # 镜像下载策略# 创建 Deployment [rootmaster ~]# kubectl apply -f mydeploy.yaml deployment.apps/myweb created [rootmaster ~]# kubectl get deployments NAME READY UP-TO-DATE AVAILABLE AGE myweb 2/2 2 2 68s [rootmaster ~]# kubectl get replicasets NAME DESIRED CURRENT READY AGE myweb-64b544dcbc 2 2 2 73s [rootmaster ~]# kubectl get pods NAME READY STATUS RESTARTS AGE myweb-64b544dcbc-5mhqn 1/1 Running 0 76s myweb-64b544dcbc-nt6tz 1/1 Running 0 76s 4  ClusterIP 服务 如何访问 Deployment 资源? Deployment 管理多个 Pod可以使用服务对其资源进行访问 # 创建服务访问集群 [rootmaster ~]# vim websvc.yaml --- kind: Service apiVersion: v1 metadata:name: websvc spec:type: ClusterIPclusterIP: 10.245.1.80selector:app: httpdports:- protocol: TCPport: 80targetPort: 80[rootmaster ~]# kubectl apply -f websvc.yaml service/websvc created [rootmaster ~]# curl -m 3 http://10.245.1.80 Welcome to The Apache. 5  Pod维护管理 # 自维护自治理 [rootmaster ~]# kubectl get pods NAME READY STATUS RESTARTS AGE myweb-64b544dcbc-5mhqn 1/1 Running 0 4m16s myweb-64b544dcbc-nt6tz 1/1 Running 0 4m16s# Pod 被删除后Deploy 会自动创建新的 Pod 来维护集群的完整性 [rootmaster ~]# kubectl delete pod myweb-64b544dcbc-5mhqn pod myweb-64b544dcbc-5mhqn deleted [rootmaster ~]# kubectl get pods NAME READY STATUS RESTARTS AGE myweb-64b544dcbc-g8l9p 1/1 Running 0 3s myweb-64b544dcbc-nt6tz 1/1 Running 0 4m25s 6  集群扩缩容 # 设置 1 Pod 集群 [rootmaster ~]# kubectl scale deployment myweb --replicas1 deployment.apps/myweb scaled [rootmaster ~]# kubectl get pods NAME READY STATUS RESTARTS AGE myweb-64b544dcbc-nt6tz 1/1 Running 0 5m46s # 设置 3 Pod 集群 [rootmaster ~]# kubectl scale deployment myweb --replicas3 deployment.apps/myweb scaled [rootmaster ~]# kubectl get pods NAME READY STATUS RESTARTS AGE myweb-64b544dcbc-5sf5z 1/1 Running 0 3s myweb-64b544dcbc-6r6dw 1/1 Running 0 3s myweb-64b544dcbc-nt6tz 1/1 Running 0 5m56s 7  历史版本信息 # 查看历史版本 [rootmaster ~]# kubectl rollout history deployment myweb deployment.apps/myweb REVISION CHANGE-CAUSE 1 none# 添加注释信息 [rootmaster ~]# kubectl annotate deployments myweb kubernetes.io/change-causehttpd.v1 deployment.apps/myweb annotated [rootmaster ~]# kubectl rollout history deployment myweb deployment.apps/myweb REVISION CHANGE-CAUSE 1 httpd.v1 8  滚动更新 # 修改镜像滚动更新集群 [rootmaster ~]# kubectl set image deployment myweb apachemyos:nginx deployment.apps/myweb image updated # 给新版本添加注释信息 [rootmaster ~]# kubectl annotate deployments myweb kubernetes.io/change-causenginx.v1 deployment.apps/myweb annotated # 查看历史版本信息 [rootmaster ~]# kubectl rollout history deployment myweb deployment.apps/myweb REVISION CHANGE-CAUSE 1 httpd.v1 2 nginx.v1# 访问验证服务 [rootmaster ~]# curl -m 3 http://10.245.1.80 Nginx is running ! 9  版本回滚 # 历史版本与回滚 [rootmaster ~]# kubectl rollout undo deployment myweb --to-revision 1 deployment.apps/myweb rolled back [rootmaster ~]# curl -m 3 http://10.245.1.80 Welcome to The Apache.[rootmaster ~]# kubectl rollout history deployment myweb deployment.apps/myweb REVISION CHANGE-CAUSE 2 nginx.v1 3 httpd.v1# 删除控制器方法1 [rootmaster ~]# kubectl delete deployments myweb deployment.apps myweb deleted # 删除控制器方法2 [rootmaster ~]# kubectl delete -f mydeploy.yaml deployment.apps myweb deleted 三  DaemonSet 1  概述 无法自定义副本数量所创建的 Pod与 node 节点绑定每个node 上都会运行一个 Pod当有新 Node 加入集群时会为他新增 Pod 副本当 Node 从集群移除时这些 Pod 也会被回收典型应用kube-proxy 2  DS图例 3  资源对象案例 [rootmaster ~]# cp -a mydeploy.yaml myds.yaml [rootmaster ~]# vim myds.yaml --- kind: DaemonSet # 资源对象类型 apiVersion: apps/v1 metadata:name: myds # 控制器名称 spec:# replicas: 2 # 删除副本参数selector:matchLabels:app: httpdtemplate:metadata:labels:app: httpdspec:restartPolicy: Alwayscontainers:- name: apacheimage: myos:httpdimagePullPolicy: Always# 创建 DaemonSet 资源对象与 node 绑定每节点都创建容器 [rootmaster ~]# kubectl apply -f myds.yaml daemonset.apps/myds created [rootmaster ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE myds-msrcx 1/1 Running 0 31s 10.244.1.11 node-0001 myds-lwq8l 1/1 Running 0 31s 10.244.2.17 node-0002 myds-4wt72 1/1 Running 0 31s 10.244.3.14 node-0003 myds-6k82t 1/1 Running 0 31s 10.244.4.15 node-0004 myds-9c6wc 1/1 Running 0 31s 10.244.5.19 node-0005 4  污点干扰 # 设置污点重建 daemonset [rootmaster ~]# kubectl taint node node-0001 kv:NoSchedule node/node-0001 tainted [rootmaster ~]# kubectl delete -f myds.yaml daemonset.apps myds deleted [rootmaster ~]# kubectl apply -f myds.yaml daemonset.apps/myds created # 有污点不会部署特殊需求可以设置容忍策略 [rootmaster ~]# kubectl get pods NAME READY STATUS RESTARTS AGE myds-pkdn9 1/1 Running 0 2s myds-pkp6b 1/1 Running 0 2s myds-j84cw 1/1 Running 0 2s myds-5c69p 1/1 Running 0 2s # 删除污点后会立即部署 [rootmaster ~]# kubectl taint node node-0001 kv:NoSchedule- node/node-0001 untainted [rootmaster ~]# kubectl get pods NAME READY STATUS RESTARTS AGE myds-2c86p 1/1 Running 0 1s myds-pkdn9 1/1 Running 0 9s myds-pkp6b 1/1 Running 0 9s myds-j84cw 1/1 Running 0 9s myds-5c69p 1/1 Running 0 9s# 删除控制器 [rootmaster ~]# kubectl delete -f myds.yaml daemonset.apps myds deleted 四  Job/CronJob 1  概述 Job 是一个单任务控制器负责执行一次任务保证任务在一个或多个Pod上执行成功 CronJob 像是Job的升级版他是基于时间管理的 Job 控制器 2  Job图例 3  Job 控制器 # 资源对象模板 [rootmaster ~]# kubectl create job myjob --imagemyos:8.5 --dry-runclient -o yaml -- sleep 3 [rootmaster ~]# vim myjob.yaml --- kind: Job apiVersion: batch/v1 metadata:name: myjob # 资源对象名称 spec: # job 的详细定义template: # 以下定义 Pod 模板spec: # pod的详细定义restartPolicy: OnFailure # 只支持[OnFailure,Never]containers: # 容器定义- name: myjob # 容器名称image: myos:8.5 # 创建容器使用的镜像command: [/bin/bash] # 自定义任务可以使用脚本args:- -c- |sleep 3exit $((RANDOM%2))# restartPolicy 会判断 exit 状态码 # 状态码为 0 表示正常其他都表示失败[rootmaster ~]# kubectl apply -f myjob.yaml job.batch/myjob created# 失败了会重启 [rootmaster ~]# kubectl get pods -l job-namemyjob -w NAME READY STATUS RESTARTS AGE myjob--1-lrtbk 1/1 Running 0 2s myjob--1-lrtbk 0/1 Error 0 4s myjob--1-lrtbk 1/1 Running 1 (1s ago) 5s myjob--1-lrtbk 0/1 Completed 1 9s[rootmaster ~]# kubectl get jobs.batch NAME COMPLETIONS DURATION AGE myjob 1/1 8s 12s# 删除Job控制器 [rootmaster ~]# kubectl delete -f myjob.yaml job.batch myjob deleted 4  CJ图例 资源对象案例 # 资源对象模板 [rootmaster ~]# kubectl create cronjob mycj --imagemyos:8.5 --schedule* * * * * --dry-runclient -o yaml -- sleep 3 [rootmaster ~]# vim mycj.yaml --- kind: CronJob apiVersion: batch/v1 metadata:name: mycj # 资源名称 spec: # cronjob 的详细定义schedule: * * * * 1-5 # 时间周期[分、时、日、月、周]jobTemplate: # 以下定义 Job 模板spec: # Job的详细定义template: # 创建pod的模板spec: # Pod的详细定义restartPolicy: OnFailure# 只支持[OnFailure,Never]containers: # 容器定义- name: myjob # 容器名称image: myos:8.5 # 创建容器使用的镜像command: [/bin/bash]# 自定义任务args:- -c- |sleep 3 # 脚本exit $((RANDOM%2)) # 退出状态码失败后会重新运行[rootmaster ~]# kubectl apply -f mycj.yaml cronjob.batch/mycj created# cronjob 会按照时间周期运行 [rootmaster ~]# kubectl get cronjobs NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE mycj */1 * * * 1-5 False 0 none 4s# 按照时间周期每分钟触发一个任务 [rootmaster ~]# kubectl get jobs -w NAME READY STATUS RESTARTS AGE mycj-27808172--1-w6sbx 0/1 Pending 0 0s mycj-27808172--1-w6sbx 0/1 ContainerCreating 0 0s mycj-27808172--1-w6sbx 1/1 Running 0 1s mycj-27808172--1-w6sbx 0/1 Completed 1 4s# 保留三次结果多余的会被删除 [rootmaster ~]# kubectl get jobs NAME COMPLETIONS DURATION AGE mycj-27605367 1/1 31s 3m30s mycj-27605368 1/1 31s 2m30s mycj-27605369 1/1 31s 90s mycj-27605370 0/1 30s 30s [rootmaster ~]# kubectl get jobs NAME COMPLETIONS DURATION AGE mycj-27605368 1/1 31s 2m33s mycj-27605369 1/1 31s 93s mycj-27605370 1/1 31s 33s# 删除CJ控制器 [rootmaster ~]# kubectl delete -f mycj.yaml cronjob.batch mycj deleted 五  StatefulSet 1  概述 StatefulSet旨在与有状态的应用及分布式系统一起使用涉及了 Headless 服务、存储卷、DNS 等相关知识点是一个宽泛而复杂的话题 2  STS图例 3  headless服务 在配置 StatefulSets 的时候首先要定义一个 Headless 的服务。 在创建 Pod的时候会自动把 Pod名称 注册为域名 # 配置 headless 服务 [rootmaster ~]# cp websvc.yaml mysvc2.yaml [rootmaster ~]# vim mysvc2.yaml --- kind: Service apiVersion: v1 metadata:name: mysvc2 # 服务名称 spec:type: ClusterIPclusterIP: None # 设置 IP 为 Noneselector:app: httpdports:- protocol: TCPport: 80targetPort: 80[rootmaster ~]# kubectl apply -f mysvc2.yaml service/mysvc2 created [rootmaster ~]# kubectl get service mysvc2 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE mysvc2 ClusterIP None none 80/TCP 61s 4  创建 StatefulSets 资源对象文件 [rootmaster ~]# cp -a mydeploy.yaml mysts.yaml [rootmaster ~]# vim mysts.yaml --- kind: StatefulSet # 资源对象类型 apiVersion: apps/v1 metadata:name: mysts # 控制器名称 spec:serviceName: mysvc2 # 新增 headless 服务名称replicas: 2selector:matchLabels:app: httpdtemplate:metadata:labels:app: httpdspec:restartPolicy: Alwayscontainers:- name: apacheimage: myos:httpdimagePullPolicy: Always[rootmaster ~]# kubectl apply -f mysts.yaml statefulset.apps/mysts created[rootmaster ~]# kubectl get pods NAME READY STATUS RESTARTS AGE mysts-0 1/1 Running 0 2s mysts-1 1/1 Running 0 1s# Pod 名称自动注册 DNS 服务 [rootmaster ~]# host mysts-0.mysvc2.default.svc.cluster.local 10.245.0.10 Using domain server: Name: 10.245.0.10 Address: 10.245.0.10#53 Aliases: mysts-0.mysvc2.default.svc.cluster.local has address 10.244.1.81[rootmaster ~]# host mysvc2.default.svc.cluster.local 10.245.0.10 Using domain server: Name: 10.245.0.10 Address: 10.245.0.10#53 Aliases: mysvc2.default.svc.cluster.local has address 10.244.2.83 mysvc2.default.svc.cluster.local has address 10.244.1.81# 删除sts控制器 [rootmaster ~]# kubectl delete -f mysts.yaml -f mysvc2.yaml statefulset.apps mysts deleted service mysvc2 deleted 六  HPA控制器 1  HorizontalPodAutoscaling概述 HorizontalPodAutoscaling 简称 HPA可以在 Kubernetes集群中基于CPU利用率或其他应程序提供的度量指标实现水平自动伸缩的功能自动缩放POD的数量 控制器会周期性的获取平均利用率 与目标值相比较后来调整副本数量 2  HPA图例 3  创建后端服务 # 为 Deploy 模板添加资源配额 [rootmaster ~]# vim mydeploy.yaml --- kind: Deployment apiVersion: apps/v1 metadata:name: myweb spec:replicas: 1 # 修改副本数量selector:matchLabels:app: httpdtemplate:metadata:labels:app: httpdspec:restartPolicy: Alwayscontainers:- name: apacheimage: myos:httpdimagePullPolicy: Alwaysresources: # 为该资源设置配额requests: # HPA 控制器会根据配额使用情况伸缩集群cpu: 200m # CPU 配额[rootmaster ~]# vim websvc.yaml --- kind: Service apiVersion: v1 metadata:name: websvc spec:type: ClusterIPclusterIP: 10.245.1.80selector:app: httpdports:- protocol: TCPport: 80targetPort: 80[rootmaster ~]# kubectl apply -f mydeploy.yaml -f websvc.yaml deployment.apps/myweb created service/websvc created# 验证服务 [rootmaster ~]# kubectl top pods NAME CPU(cores) MEMORY(bytes) myweb-c8c66f894-2cfjv 1m 17Mi [rootmaster ~]# curl -s http://10.245.1.80 Welcome to The Apache. 4  创建HPA控制器 [rootmaster ~]# vim myhpa.yaml --- kind: HorizontalPodAutoscaler # 资源对象类型 apiVersion: autoscaling/v1 # 版本 metadata: # 元数据name: myweb # 资源对象名称 spec: # 详细定义minReplicas: 1 # 最少保留的副本数量maxReplicas: 5 # 最大创建的副本数量targetCPUUtilizationPercentage: 50 # 警戒值以百分比计算scaleTargetRef: # 监控的资源对象kind: Deployment # 资源对象类型apiVersion: apps/v1 # 版本name: myweb # 资源对象名称# 创建弹性集群 [rootmaster ~]# kubectl apply -f myhpa.yaml horizontalpodautoscaler.autoscaling/myweb created# 刚刚创建 unknown 是正常现象最多等待 60s 就可以正常获取数据 [rootmaster ~]# kubectl get horizontalpodautoscalers.autoscaling NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE myweb Deployment/myweb unknown/50% 1 5 0 4s# 最多等待 60s 即可正常获取资源状态 [rootmaster ~]# kubectl get horizontalpodautoscalers.autoscaling NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE myweb Deployment/myweb 0%/50% 1 5 1 71s 5  验证测试 持续访问 Web服务增加CPU负载在超过警戒值之后会触发扩容操作等待几秒之后发现副本数量增加了。 停止访问让CPU空闲为了防止集群性能抖动副本不会立即释放必须300秒内的平均负载小于警戒值才开始释放副本当副本达到最小值时候停止释放 测试时可以通过访问php 脚本增加CPU的负载 # 终端 1 访问提高负载 [rootmaster ~]# while sleep 1;docurl -s http://10.245.1.80/info.php?id100000 -o /dev/null done # 终端 2 监控 HPA 变化 [rootmaster ~]# kubectl get hpa -w NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE myweb Deployment/myweb 0%/50% 1 3 1 8m21s myweb Deployment/myweb 49%/50% 1 3 1 9m myweb Deployment/myweb 56%/50% 1 3 1 9m15s myweb Deployment/myweb 56%/50% 1 3 2 9m30s myweb Deployment/myweb 37%/50% 1 3 2 9m45s myweb Deployment/myweb 32%/50% 1 3 2 10m myweb Deployment/myweb 41%/50% 1 3 2 11m myweb Deployment/myweb 48%/50% 1 3 2 11m myweb Deployment/myweb 51%/50% 1 3 2 11m myweb Deployment/myweb 59%/50% 1 3 2 11m myweb Deployment/myweb 58%/50% 1 3 3 12m myweb Deployment/myweb 42%/50% 1 3 3 12m myweb Deployment/myweb 34%/50% 1 3 3 12m# 如果 300s 内平均负载小于标准值就会自动缩减集群规模 [rootmaster ~]# kubectl get hpa -w NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE myweb Deployment/myweb 38%/50% 1 3 3 19m myweb Deployment/myweb 21%/50% 1 3 3 20m myweb Deployment/myweb 17%/50% 1 3 3 21m myweb Deployment/myweb 7%/50% 1 3 3 22m myweb Deployment/myweb 0%/50% 1 3 3 23m myweb Deployment/myweb 0%/50% 1 3 2 25m myweb Deployment/myweb 0%/50% 1 3 1 28m
http://www.w-s-a.com/news/255612/

相关文章:

  • 东莞做网站建设免费网站建设案例
  • 莱州建设局网站wordpress的主题下载地址
  • 二级网站域名长沙企业关键词优化服务质量
  • 在家有电脑怎么做网站wordpress 入门主题
  • 什邡建设局网站sem推广是什么意思
  • 西安分类信息网站网站敏感关键词
  • 黑彩网站怎么做建设网站费用分析
  • 网站关键词选取的步骤和方法小程序商城哪家好排行榜
  • 儿童产品网站建设网站建设优化排名推广
  • 做网站的硬件无锡招标网官方网站
  • 做推送好用的网站合肥网站推广培训
  • 网站开发团队简介贵阳双龙区建设局网站
  • 新乡做网站公司哪家好wordpress侧边栏文件
  • 小白建站怎么撤销网站备案
  • 哪个网站做调查问卷赚钱短视频制作神器
  • 上海企业响应式网站建设推荐汕头网络优化排名
  • 怎么建立公司网站平台怎么将网站做成公司官网
  • 培训学校网站怎样快速建设网站模板
  • 建设电子商务网站论文云服务器安装wordpress
  • 做展板好的网站学校的网站开发过程
  • 宁波搭建网站价格西部数码网站正在建设中是什么意思
  • 吉林省建设项目招标网站苏州网络推广定制
  • 网站域名所有权证明引流推广接单
  • 做网站百度百科孟州网站建设
  • 服务网站建设企业广州模板建站系统
  • 怎么做属于自己的免费网站浏览器游戏网址
  • 上海城乡住房建设厅网站西安网站推广慧创科技
  • 做策划网站推广怎么写简历互联网公司手机网站
  • 怎么做宣传网站网站建设采购项目合同书
  • 网站的空间和域名备案做网站要会写什么