ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

K8S Controller Deplpyment

2021-06-29 23:34:37  阅读:201  来源: 互联网

标签:web service kubectl -- Deplpyment yaml Controller deployment K8S


1. 概述与应用场景

  1. 什么是Controller
  • 在集群上管理和运行容器的对象
  1. Pod与Controller的关系
  • Pod通过Controller实现应用的运维,比如伸缩,滚动升级等等

  • Pod与Controller之间通过label标签建立关系

    image-20210629214350244

    image-20210629221141295

  1. Deployment控制器应用场景
  • 部署无状态应用
  • 管理Pod和ReplicaSet
  • 部署,滚动升级等功能

适用于:web服务,微服务

2. 使用Deployment发布应用

使用命令生成web-deployment.yaml

kubectl create deployment web --image=nginx --dry-run -o yaml > web-deployment.yaml
# 生成的yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: web
  name: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: web
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
status: {}

运行web-deployment.yaml

kubectl apply -f web-deployment.yaml

通过Service的NodePort对外暴露端口

# 生成yaml
kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web-service --dry-run -o yaml > web-service.yaml
# 执行
kubectl apply -f web-service.yaml
# 生成的yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: web
  name: web-service
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: web
  type: NodePort
status:
  loadBalancer: {}

删除对外暴露端口的service

kubectl get service
kubectl delete service [servicename]

3. 应用升级与回滚

3.1 升级

kubectl升级

kubectl set image deployment web nginx=nginx:1.15

或者直接修改web-deployment.yaml中image的版本号

kubectl apply -f web-deployment.yaml

需要注意的是升级是基于镜像版本的升级,如果镜像版本没有变就不会做任何操作

# 查看是否升级成功
kubectl rollout status deployment web

image-20210629225813875

3.2 回滚

查看历史版本

# 查看升级历史
kubectl rollout history deployment web

image-20210629230347017

回退到上一个版本

kubectl rollout undo deployment web

image-20210629230711553

先查看下命令

kubectl rollout undo deployment web --help

image-20210629230904950

然后指定版本1进行回滚

# 执行操作
kubectl rollout undo deployment web --to-revision=1

image-20210629231132498

4. 弹性伸缩

kubectl scale deployment web --replicas=10

还有更高一级的弹性伸缩,根据CPU使用量判断是否需要扩容,感觉非常适合电商公司有大促活动时,短时间流量急剧增加的情况使用

使用 Horizontal Pod Autoscaling (平滑扩展)

标签:web,service,kubectl,--,Deplpyment,yaml,Controller,deployment,K8S
来源: https://blog.csdn.net/qq_26786441/article/details/118346123

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有