简化 Kubernetes Yaml 文件创建

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 如果需要自动化处理复杂的Kubernetes任务,常常需要编写Yaml配置文件。由于Yaml文件格式比较复杂,即使是老手有时也不免会犯错或需要查询文档,也有人开玩笑这是使用 Yaml 编程。我们今天将介绍几个方法来帮助大家来简化 Kubernetes Yaml 文件创建。

image
Kubernetes 提供了丰富的 kubectl 命令,可以较为方便地处理常见任务。如果需要自动化处理复杂的Kubernetes任务,常常需要编写Yaml配置文件。由于Yaml文件格式比较复杂,即使是老司机有时也不免会犯错或需要查询文档,也有人开玩笑这是使用 Yaml 编程。我们今天将介绍几个方法来帮助大家来简化 Kubernetes Yaml 文件创建。

模拟命令执行

kubectl中很多命令支持 --dry-run-o yaml 参数,可以方便地模拟命令执行,并输出yaml格式的命令请求,这样我们就可以将执行结果 Copy & Paste到自己的编辑器中,修改完成自己的配置文件。

$ kubectl run myapp --image=nginx --dry-run -o yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    run: myapp
  name: myapp
spec:
  replicas: 1
  selector:
    matchLabels:
      run: myapp
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: myapp
    spec:
      containers:
      - image: nginx
        name: myapp
        resources: {}
status: {}
$ kubectl create secret generic mysecret --from-literal=quiet-phrase="Shh! Dont' tell" -o yaml --dry-run
apiVersion: v1
data:
  quiet-phrase: U2hoISBEb250JyB0ZWxs
kind: Secret
metadata:
  creationTimestamp: null
  name: mysecret

导出资源描述

kubectl get <resource-type> <resource> --export -o yaml 命令会以Yaml格式导出系统中已有资源描述

比如,我们可以将系统中 mysql 部署的描述导成 Yaml 文件

$ kubectl get deployment mysql --export -o yaml > mysql.yaml 

Kompose转换

Docker Compose是最为流行的容器编排开发工具,可以方便地在Docker/Docker Swarm环境下开发、部署容器编排模板。

Kompose是Kubernetes社区开发的一个转换工具,可以方便地将简单的Docker Compose模板转化成为Kubernetes的Yaml描述文件,并在Kubernetes集群上部署和管理应用

我们可以通过 https://github.com/kubernetes/kompose 获取最新的kompose 工具

如下 docker-compose.yaml 模板描述了一个 WordPress 编排,其中包含两个服务,wordpress服务和mysql服务,为了将 wordpress服务暴露给外部访问,我们增加了一个 Kompose 特有的标签 kompose.service.type: nodeport,将服务以NodePort方式提供对外访问方式。

version: '2'
services:
  wordpress:
    image: wordpress:4
    environment:
      - WORDPRESS_DB_PASSWORD=password
    ports:
      - 80:80
    depends_on:
      - mysql
    labels: 
      kompose.service.type: nodeport
  mysql:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=password

我们可以通过kompose convert命令转换为 Kubernetes 的 Deployment和Service的资源描述,

$ kompose convert
WARN Unsupported depends_on key - ignoring        
INFO Kubernetes file "mysql-service.yaml" created 
INFO Kubernetes file "wordpress-service.yaml" created 
INFO Kubernetes file "mysql-deployment.yaml" created 
INFO Kubernetes file "wordpress-deployment.yaml" created 

也可以通过kompose convert --stdout命令输出到标准输出

总结

Kubernetes以其开放的平台和活跃的社区征服了众多用户,然而其陡峭的学习曲线也让初学者望而生畏。今天希望通过几个技巧帮助大家简化 Kubernetes Yaml 文件的编写。

阿里云Kubernetes服务全球首批通过Kubernetes一致性认证,简化了Kubernetes集群生命周期管理,内置了与阿里云产品集成,也将进一步简化Kubernetes的开发者体验,帮助用户关注云端应用价值创新。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
29天前
|
存储 运维 Serverless
函数计算产品使用问题之在YAML文件中配置了环境变量,但在PHP代码中无法读取到这些环境变量,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
17天前
|
Python
python存取yaml文件
python存取yaml文件
|
1月前
|
数据安全/隐私保护 Python
经验大分享:python读取yaml文件
经验大分享:python读取yaml文件
22 0
|
1月前
|
存储 Java 应用服务中间件
后端企业级开发之yaml数据序列化格式文件详解2024
后端企业级开发之yaml数据序列化格式文件详解2024
17 0
|
1月前
|
SQL 监控 Java
实时计算 Flink版产品使用问题之在进行数据同步时,修改了YAML文件以增加新的同步表并取消了之前的同步任务,如何从之前的检查点继续执行
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
1月前
|
SQL Kubernetes 数据处理
实时计算 Flink版产品使用问题之在 flink-conf.yaml 中定义的配置在某些情况下未被正确应用到 K8s 上运行的任务管理器(JobManager)和任务管理节点(TaskManager),是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
2月前
|
Kubernetes 应用服务中间件 数据安全/隐私保护
yaml文件格式详解 及 k8s实战演示
yaml文件格式详解 及 k8s实战演示
|
2月前
|
XML 存储 Java
【OpenCV】—输入输出XML和YAML文件
【OpenCV】—输入输出XML和YAML文件
157 1
|
2天前
|
Kubernetes 应用服务中间件 调度
如何在Kubernetes集群中配置跨可用区的Pod调度
如何在Kubernetes集群中配置跨可用区的Pod调度
|
10天前
|
Kubernetes API 索引

相关产品

  • 容器服务Kubernetes版