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

个人网站申请北京定制网络营销收费

个人网站申请,北京定制网络营销收费,郑州最好的男科医院哪家好,有了网站后台后怎么做seo优化本文为作者的 Kubernetes 系列电子书的一部分#xff0c;电子书已经开源#xff0c;欢迎关注#xff0c;电子书浏览地址#xff1a;https://k8s.whuanle.cn【适合国内访问】https://ek8s.whuanle.cn 【gitbook】Deployment 是 Kubernetes 提供的一种自我修复机制来解决机器… 本文为作者的 Kubernetes 系列电子书的一部分电子书已经开源欢迎关注电子书浏览地址https://k8s.whuanle.cn【适合国内访问】https://ek8s.whuanle.cn 【gitbook】Deployment 是 Kubernetes 提供的一种自我修复机制来解决机器故障维护的问题。前面提到了单独部署 Pod但是这种方式只适合临时的 Pod用于测试调试。如果要用于生产则需要 Deployment 等控制器管理部署 Pod维护 Pod 的副本数量以及 Pod 监控和维护。对于 Kubernetes 对象的部署例如 Pod、Deployment、Service 等有三种部署方式Using Generators (Run, Expose)Using Imperative way (Create)Using Declarative way (Apply)在 2.1 章中我们已经学习了 Run 和 apply 等在本篇以及后面的章节中我们会一步步深入学习这些部署方式。本篇包含或需要掌握以下内容创建 Deployment修改 Deployment查看 Deployment 、Pod、Services、副本在本篇文章中我们将部署一个 Nginx 实例并学会 部署以及管理 Deployment、Pod。Deployment当我们单独使用 docker 部署应用时为了应用挂了后能够重启我们可以使用 --restartalways 参数例如docker run -itd --restartalways -p 666:80 nginx:latest但是这种方式只能单纯重启容器并不具备从机器故障中恢复的能力即当一台服务器挂了后此服务器上所有的容器全部挂掉。Kubernetes Deployment 是一种 Pod 管理方式它可以指挥 Kubernetes 如何创建和更新你部署的应用实例创建 Deployment 后Kubernetes master 会将应用程序调度到集群中的各个节点上。Kubernetes Deployment 提供了一种与众不同的应用程序管理方法。Deployment 的创建有两种方法一种是直接使用命令创建(kubectl create)一种是通过 YAML(kubectl apply)后面我们会介绍这两种创建方法。创建 Deployment在 Kubernetes 中Pod 是调度的最小单位一个 Pod 中包含多个 容器所以我们的各种操作都是在 Pod 之上。我们来使用 deployment 部署一个 Pod这个 Pod 包含一个 Nginx 容器。kubectl create deployment nginx --imagenginx:latest格式kubectl create deployment {deployment对象名称} --images{镜像名称和标签}此时nginx 容器会以 Pod 的方式部署到节点中但是被部署到哪个节点是随机的如果你只有一个 worker 节点则 Pod 必定在这个 Worker 节点上。当然我们可以获取到具体的调度信息从中查看 Pod 被调度到哪个节点。rootinstance-1:~# kubectl get deployments -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR nginx 1/1 1 1 52s nginx nginx:latest appnginx rootinstance-1:~# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-55649fd747-s4824 1/1 Running 0 61s 192.168.56.4 instance-2 none none可以看到 Pod 在 instance-2 中运行着。Deployment 会为我们自动创建 PodPod 由 {deployment名称}-{随机名称} 组成。[Info] 提示还有一个地方也说一下kubectl get xxx 时带不带 s 都没关系例如 kubectl get nodes / kubectl get node 都是一样的。不过一般从语义上我们获取全部对象时可以使用 kubectl get nodes获取具体的对象时可以使用 kubectl get node nginx。类似的kubectl describe nodes 、kubectl describe node nginx。实际上加不加 s 都一样。kubectl apply/create当我们创建一个 deployment 时kubectl create 和 kubectl apply 效果是一样的但是 apply 还具有更新(update) 的功能。kubectl apply 会在以前的配置、提供的输入和资源的当前配置之间 找出三方差异以确定如何修改资源kubectl apply 命令将会把推送的版本与以前的版本进行比较并应用你所做的更改 但是不会自动覆盖任何你没有指定更改的属性另外还有 kubectl replace 、kubectl edit。kubectl replace 是破坏性更新/替换容易导致问题kubectl edit 可以更新 Deployment 等已存在的对象。根据 Kubernetes 官方的文档说明应始终使用 kubectl apply 或 kubectl create --save-config 创建资源。前面已经学习了 kubectl create这里学习一下 kubectl apply。通过 YAML 文件部署 nginxkubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml很多开源软件提供了 YAML 文件我们通过 YAML 文件可以快速部署服务如 Redis、Consul 等。这里再说一下创建 Deployment 的区别。如果使用 create 创建命令格式kubectl create deployment {deployment的名字} --image{镜像名称}如果使用 apply 命令创建YAML 中需要指定一些信息可定制性很高。kind: Deployment ... ... medatada:name:nginx ... ...spec:containers:- image: nginx:latest然后执行 kubectl apply -f xxx.yaml 文件。一个是 kubectl create deployment 另一个是 kubectl apply -f在 yaml 中指定 kind: Deployment。如果我们只需要快速创建使用命令形式就行如何生产生产还是得使用 YAML 文件并于留存记录。要删除一个对象可以使用 kubectl delete -f {名称}.yaml如删除 calico。kubectl delete -f calico.yaml检查 YAML有时我们不知道我们的创建命令或 yaml 是否正确可以使用 --dry-runclient --dry-runclient 参数来表示当前内容只是预览而不真正提交。kubectl create deployment testnginx --imagenginx:latest --dry-runclient在一些 k8s 认证中我们没时间一点点写 yaml 但是又需要定制此时可以使用 --dry-runclient -o yaml 既可以不生效 Deployment又可以导出 yaml 文件。[Info] 提示-o wide 可以查看对象更多的字段信息kubectl describe 可以查看对象的全部详细信息-o yaml 或 -o json 可以查看对象的定义/描述文件。--dry-run 取值必须为none、server或client。如果客户端策略只打印将要发送的对象而不发送它。如果是服务器策略提交服务器端请求而不持久化资源。命令示例如下kubectl create deployment testnginx --imagenginx:latest --dry-runclient -o yaml # -o json 可以输出 json 格式使用这样的方法可以快速获得需要的 YAML 模板然后复制到 YAML 文件根据需要改动、定制。除了 deployment其它 kubernetes 对象也可以使用这种方法。查看 Deployment我们以 Deployment 的方式部署 Pod 就会创建一个 Deployment 对象获得 deployment 列表kubectl get deployments kubectl get deployments -o wideNAME READY UP-TO-DATE AVAILABLE AGE nginx 1/1 1 1 2m24sNAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR nginx 1/1 1 1 2m42s nginx nginx:latest appnginx在 kubectl get ... 后面加上 -o wide 可以获得更多的标签信息。使用 kubectl get events 可以获得集群中最近发生的事件如创建 Deployment 到部署容器过程的详细事件记录。Successfully assigned default/nginx-55649fd747-wdrjj to instance-2 Pulling image nginx:latest Successfully pulled image nginx:latest in 8.917597859s Created container nginx Started container nginx Created pod: nginx-55649fd747-wdrjj Scaled up replica set nginx-55649fd747 to 1使用 kubectl describe deployment nginx 可以获得更加详细的信息是各种信息的集合。查看 Pod我们没有直接创建 Pod而是通过 Deployment 创建接下来我们需要了解如何查看 Pod 。kubectl get podsNAME READY STATUS RESTARTS AGE nginx-55649fd747-msw8g 1/1 Running 0 4h16m可以看到一个 Pod 名为 nginx- 因为我们是利用 Deployment 部署 Pod 的没有指定这个 Pod 的名称所以默认 Pod 名称以 Deployment 名称为前缀。我们查看这个 pods 被部署到了哪个节点上kubectl get pods -o wideNAME READY STATUS RESTARTS AGE IP NODE nginx-55649fd747-msw8g 1/1 Running 0 4h19m 192.168.56.57 instance-2可以看到这个 Pod 在 instances-2 这个节点上同时这个 Pod 也有一个 IPKubernetes 会为每个 Pod 分配一个唯一的 IP这个 IP 可以在节点上访问其它 Pod 也可以通过 IP 访问此 Pod。由于这个 Pod 里面的容器是 Nginx(80端口)所以我们可以访问这个 IP 可以打开 Nginx 页面。rootinstance-1:~# curl 192.168.56.57 !DOCTYPE html html head titleWelcome to nginx!/title stylebody { ... ...对于没有指定的 Deployment、Pod、Service 等对象会默认分配到 default 命名空间中我们在执行kubectl get {} 时会获取 default 命名空间中的对象 后面加上 --all-namespaces 可以获得所有命名空间中的对象使用 --namespace 可以指定获取某个命名空间中的对象。kubectl get pods --all-namespaces # kubectl get pods --namespacedefaultNAMESPACE NAME READY STATUS RESTARTS AGE default nginx-55649fd747-msw8g 1/1 Running 0 4h28m kube-system etcd-instance-1 1/1 Running 1 13d kube-system kube-apiserver-instance-1 1/1 Running 1 13d kube-system kube-controller-manager-instance-1 1/1 Running 1 13d kube-system kube-proxy-bhj76 1/1 Running 1 13d kube-system kube-proxy-pm597 1/1 Running 0 13d kube-system kube-scheduler-instance-1 1/1 Running 1 13d kubernetes-dashboard dashboard-metrics-scraper-856586f554-4nd9v 1/1 Running 1 13d kubernetes-dashboard kubernetes-dashboard-78c79f97b4-288js 1/1 Running 1 13d在 worker 节点上执行 docker ps可以看到 Nginx 容器rootinstance-2:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fe7433f906a0 nginx /docker-entrypoint.… 7 seconds ago Up 6 seconds k8s_nginx_nginx-55649fd747-wdrjj_default_ea41dcc4-94fe-47f9-a804-5b5b1df703e9_0实时修改使用 kubectl edit 可以实时修改一个对象这里我们使用前面已经部署好的 Nginx 这个 Deployment因为创建的 Pod 名称有点长我们希望直接改成 nginx。修改 deploymentkubectl edit pod nginx-55649fd747-msw8g在 metadata 字段中找到 name: nginx-55649fd747-msw8g 修改为合适的名称。修改完毕后会提示A copy of your changes has been stored to /tmp/kubectl-edit-w11bx.yaml error: At least one of apiVersion, kind and name was changed出于某些原因直接修改 name 字段是不行的还需要修改其它地方。这里读者了解可以通过 kubectl edit 实时直接修改对象即可。后面还会介绍另一种修改方法。导出 yaml我们可以从已经创建的 Deployment 、Pod、Service 等对象导出 yaml 文件使用 -o yaml 即可导出(-o json 导出json)。kubectl get deployment nginx -o yaml # 保存到文件 # kubectl get deployment nginx -o yaml mynginx.yaml然后终端会打印apiVersion: apps/v1 kind: Deployment metadata:annotations:deployment.kubernetes.io/revision: 1creationTimestamp: 2021-04-21T00:37:13Zgeneration: 1labels:app: nginxname: nginxnamespace: default ... ...虽然我们创建对象时的命令很简单但是生成的 YAML 很复杂。我们可以尝试把 yaml 导出到 mynginx.yaml 文件中然后我们删除这个 Deployment。kubectl get deployment nginx -o yaml mynginx.yamlkubectl delete deployment nginx然后利用导出的 mynginx.yaml 再创建一个 Deployment。kubectl apply -f mynginx.yaml多个 容器一个 Pod 中是可以包含多个容器的我们可以使用命令或 YAML 形式创建包含多个容器的 Pod 服务。示例如下rootmaster:~# kubectl create deployment testnginx --imagenginx:latest --imagebusybox:latest --dry-runclient -o yaml apiVersion: apps/v1 kind: Deployment metadata:creationTimestamp: nulllabels:app: testnginxname: testnginx spec:replicas: 1selector:matchLabels:app: testnginxstrategy: {}template:metadata:creationTimestamp: nulllabels:app: testnginxspec:containers:- image: nginx:latestname: nginxresources: {}- image: busybox:latestname: busyboxresources: {} status: {}总结本小章中不只是讲解 Deployment还包含了很多日常管理对象的命令读者可多做练习加深记忆。
http://www.zqtcl.cn/news/816829/

相关文章:

  • 上海建站优化建设网站个人简介范文
  • 青岛网站建设公司排名做收集信息的网站
  • 有空间与域名后怎么做网站电影网站建设费用
  • 网站建设销售找客源app制作培训
  • ps制作网站产品图片ps平面设计主要做什么
  • 怎样更新网站泉州网站开发公司
  • 蕲春县住房和城乡建设局网站广东建设局网站首页
  • 网站优化工作室共享经济型网站开发
  • 自己做网站好还是购买网站好网站建设平台报价
  • 设计师配色网站太原建站模板源码
  • 学计算机的做网站的叫什么工作wordpress商用收费不
  • 青岛网站建设谁家好一些网页微信怎么登陆
  • 企业网站seo优做网站的旅行社
  • 十大免费自助建站上传网站到空间
  • 深圳企业做网站简约个人网站
  • 茂名放心营销网站开发网站怎么做app
  • php语言 网站建设专业的外贸网站建设公司价格
  • 看英语做游戏的网站wordpress与微信对接
  • 企业网站打不开了看守所加强自身网站建设工作
  • 长汀网站建设做电池的有哪些网站
  • 做软件常用的网站厦门建设局地址
  • 沭阳三剑客做网站科技 公司 响应式 网站
  • 深圳网站建设培训哪家好曲阜网架公司
  • wordpress建立网站实例贵阳网站开发谁家做的好
  • 百度网站推广怎么收费中国科技成果
  • 枣庄企业网站建设wordpress 评论群发
  • 网站视觉设计方案视频制作素材
  • 哪个网站专做民宿wordpress 主题教程
  • 网站后台 设计北京海淀区官网
  • 公司官网网站建设想法wordpress oss