快速编写k8s资源清单yaml文件
如何快速编写k8s资源清单yaml文件k8s的yaml资源清单基本格式yaml文件创建资源对象-Deployment以上资源清单配置等同于:yaml文件创建资源对象-Service以上资源清单配置等同于:将Deployment和Service这两个yaml文件合并成一个yaml文件如何快速编写k8s资源清单用create命令生成deployment的yaml用expose命令生成servcie的y
·
快速编写k8s资源清单yaml文件
快速编写k8s资源清单
快速生成k8s资源清单
用create
命令生成deployment
的yaml
资源清单
导出的yaml文件有很多冗余字段,不需要可以删除
例如:creationTimestamp
和status
字段可以删除
deployment.Spec.Selector
与deployment.Spec.Template.Labels
一致
## --dry-run是试运行看是否有错误
kubectl create deployment 应用名 --image=nginx:1.16 -o yaml --dry-run=client > my-deploy.yaml
kubectl create deployment nginx --image=nginx:1.16 -o yaml --dry-run=client > my-deploy.yaml
用expose命令生成servcie的yaml
导出的yaml文件有很多冗余字段,不需要可以删除
例如: creationTimestamp和status字段可以删除
# 生成service的yaml资源清单
## 写成expose service意思是为名为web的service再创建一个service
## 写成expose deploy的意思是为名为web的deploy创建一个service
kubectl expose deploy nginx --port=80 --target-port=8080 --type=NodePort -o yaml --dry-run=client > my-server.yaml
用get命令导出yaml—冗余内容太多
冗余内容太多
# 用get命令导出yaml
kubectl get deployment nginx -o yaml > my-deploy.yaml
create和apply的区别
# create是创建资源(命令式编程)
# 命令式创建
kubectl create -f myserver.yaml -f my-rc.yaml
## 可以指定目录
kubectl create –f <directory>
# apply可以创建+更新资源(声明式编程)
# 声明式创建
kubectl apply -f myserver.yaml -f my-rc.yaml
## 可以指定目录
kubectl apply -f <directory>
pods下的容器下的字段拼写忘记了怎么办?
查询pod下容器字段
# 该命令能查询到pods.spec.containers下的所有字段
kubectl explain pods.spec.containers
查询资源所有字段
# 查询资源所有字段
kubectl explain deployment
资源类型忘记了怎么办?
# 查询资源类型
kubectl api-resources |grep 资源类型的模糊字母
检查yaml语法是否有误
需要使用kube-linter
这个工具来检查yaml语法
是否有误
下载地址: https://github.com/stackrox/kube-linter/releases
kube-linter检查yaml资源清单
https://juejin.cn/post/6897857924027121671
# 安装kube-linter
## 下载kube-linter
wget https://ghproxy.com/https://github.com/stackrox/kube-linter/releases/download/0.2.5/kube-linter-linux.tar.gz
## 解压到/usr/bin/
tar xvf kube-linter-linux.tar.gz -C /usr/bin/
# 执行检查
kube-linter lint pod.yaml
kubeval检查k8s资源清单是否有误
项目地址: https://github.com/instrumenta/kubeval
参考: https://blog.csdn.net/qq_36820037/article/details/108693292
# 检查资源清单是否有误
kubeval my-invalid-rc.yaml
k8s的yaml资源清单基本格式
yaml
文件开头三个杠
,结束三个点
。
# '---'表示yaml格式,一个文件的开始
# 当一个yaml中有多个任务时,要使用---分开,不然使用kubectl apply -f 执行时只执行后一个任务
---
yaml文件格式说明:
- 以缩进表示层级关系
- 不支持`tab`缩进,使用空格缩进
- 通常开头缩进2个空格
- 字符缩进后1个空格,如冒号,逗号等
- '---'表示yaml格式,一个文件的开始
- '#'表示注释
基本框架
apiVersion: #声明api版本
kind: #声明资源类型
metadata: #声明元数据
spec: #声明容器参数
yaml文件创建资源对象-Deployment
---
# yaml文件创建资源对象-Deployment:
# 这个yaml资源清单模板可以通过`kubectl get 资源类型 -n 命名空间 -o yaml`来导出,会有很多冗余信息
# 原有的kubectl --export命令可以去除冗余信息,但是1.12版本之后官方删除了这个命令
# kubectl get svc -n aliang-cka -o yaml
# kubectl get deploy -n aliang-cka -o yaml
# 控制器定义:
apiVersion: apps/v1 # API版本!必须字段,通过'kubectl api-resources |grep 资源类型'查询
kind: Deployment # 资源类型!必须字段
metadata: # 资源元数据!必须字段
name: web # 资源名称
namespace: aliang-cka # 所在namespace
spec: # 资源规格
replicas: 1 # 副本(实例)数量
selector: # 标签选择器,与下面metadata.labels保持一直
matchLabels:
app: web
# 被控制对象:
template: # pod模板
metadata: # pod元数据
labels: # 定义标签
# 标签一般根据项目属性去写:
# 例如 project: ms
app: web # 标签
spec: # pod规格
containers: # 容器配置
- name: web # 容器名
image: lizhenliang/java-demo # 镜像名
以上资源清单配置等同于:
kubectl create deployment web --image=lizhenliang/java-demo --replicas=3 -n default
yaml文件创建资源对象-Service
---
# yaml文件创建资源对象-Service:
apiVersion: v1 # api版本!必须字段
kind: Service # 资源类型!必须字段
metadata: # 资源元数据!必须字段
name: web # 资源名称
namespace: default # 资源所在namespacs
spec: # 资源规格
ports: # 端口映射
- port: 80 # Service端口,通过ClusterIP访问时使用的端口
protocol: TCP # 端口通信的协议
targetPort: 8080 # 容器内的服务端口,比如tomcat是8080
selector: # 标签选择器,与Deployment中标签保持一致
app: web # 标签
type: NodePort # Service暴露类型,NodePort允许集群外访问
以上资源清单配置等同于:
# 为名为web的deploy创建一个service
kubectl expose deploy web --port=80 --target-port=8080 --type=NodePort -n default
将Deployment和Service这两个yaml文件合并成一个yaml文件
# 合并资源清单
cat Deployment.yaml Service.yaml > all.yaml
更多推荐
已为社区贡献12条内容
所有评论(0)