惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
量子位
Y
Y Combinator Blog
IT之家
IT之家
博客园 - 聂微东
L
LangChain Blog
爱范儿
爱范儿
H
Help Net Security
GbyAI
GbyAI
F
Fortinet All Blogs
B
Blog
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
C
Check Point Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
D
DataBreaches.Net
Last Week in AI
Last Week in AI
WordPress大学
WordPress大学
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享

陈少文的网站

巨变与机遇的未来十年 Kubernetes 平台管理软件压力测试方案 使用镜像部署 Hexo 静态页面 终于等到你 - GitHub 镜像仓库服务(ghcr.io) 一起来学 Go --(6)Interface 一起来学 Go --(5)Goroutine 和 Channel 什么是函数式编程 如何在 Kubernetes 集群集成 Kata 柯里化与偏函数 使用 PyGithub 自动创建 Label 软件产品是团队能力的输出 Helm 2 、Helm 3 比较 IoT 变现 Kubernetes 中的 DNS 服务 国内的 Helm 镜像源 Harbor 使用自签证书支持 Https 访问 DevOps 工具链之 Prow 如何使用 kfctl 安装 Kubeflow VS Code 无法下载 Go 插件的工具包 工程师更应具有服务精神 你不知道的 Docker 使用技巧 使用 Docker 运行 Tensorflow 论中国 什么是左移 如何清空 Git 仓库全部历史记录 一禅小和尚 有风吹过厨房 时间的玫瑰 如何在 CentOS 安装 GPU 驱动 开发 Tips(19)
Kubernetes 中 Deployment 的基本操作
微信公众号 · 2019-09-27 · via 陈少文的网站

Please enable Javascript to view the contents

Deployment 通过创建 ReplicaSet 控制 Pod 的数量、状态。本篇主要介绍一些 Deployment 常用的操作。

1. Deployment yaml 格式

带上 --dry-run 参数表示并不执行命令,仅生成 yaml 输出:

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

2. 创建

  • 使用 run 参数
1
kubectl run nginx --image=nginx
  • 使用 create 参数
kubectl create deployment nginx --image=nginx
  • 直接使用 yaml 文件

为了提高编辑效率,通常会基于已有的 Deployment yaml 进行编辑。比如,先执行 kubectl create deployment nginx --image=nginx --dry-run -o yaml > deployment.yaml,再编辑镜像、副本数等信息。

1
kubectl apply -f deployment.yaml

3. 升级更新

  • 更新镜像版本
1
kubectl set image  deployment/nginx nginx=nginx:1.9.1
  • 限制内存和 CPU 的使用
1
kubectl set resource deployment/nginx -c=nginx --limits=cpu=200m,memory=512Mi
  • 直接修改 yaml 文件

使用 edit 命令,能够直接对已经创建的 Kubernetes 对象进行编辑,保存退出后,立即生效。

1
kubectl edit deployment nginx

4. 滚动策略

在 spec 字段中,可以配置滚动升级策略:

1
2
3
4
5
6
spec:
  strategy:
    rollingUpdate:
      maxSurge: 25% # 最大额外副本比例
      maxUnavailable: 25% # 最少不可以副本比例
    type: RollingUpdate
  • 暂停 Deployment 更新
1
kubectl rollout pause deployment/nginx
  • 恢复 Deployment 更新
1
kubectl rollout resume deployment/nginx
  • 回滚 Deployment 到指定版本
1
kubectl rollout undo deployment/nginx --to-revision=2
  • 查看 Deployment 滚动状态
1
kubectl rollout status deployment/nginx
  • 查看 Deployment 历史版本
1
kubectl rollout history deployment/nginx

5. 弹性伸缩

  • 手动修改副本数量
1
kubectl scale deployment/nginx --replicas=3
  • 自动扩缩容副本数量

集群的 Horizontal Pod Autoscaler 功能,依赖于聚合器提供的监控数据。Metrics Server 是集群的核心监控数据的聚合器,从 Kubelet 中采集指标数据。

新建 metrics-server.yaml 文件,内容如下:

1
2
3
4
args:
  - --logtostderr
  - --kubelet-insecure-tls
  - --kubelet-preferred-address-types=InternalIP

安装 Metric Server 服务

1
2
3
4
helm install stable/metrics-server \
-n metrics-server \
--namespace kube-system \
-f metrics-server.yaml

查看资源使用情况

1
2
3
kubectl top node
NAME         CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
i-d7uwk2b1   443m         5%     5213Mi          67%

根据现有 Pod 的 CPU 利用率,动态伸缩数量

1
kubectl autoscale  deployment/nginx --min=1 --max=5 --cpu-percent=80

微信公众号