Kubernetes资源创建yml语法
前言
在是用kubernetes中,我们对资源的创建大部分都是通过
|
1
|
kubelet create -f RESOURCE.yaml
|
刚开看的时候不免有一些迷茫,看不懂语法,不知道怎么写;今天本文就介绍一下kubernetes construct语法。
Construct语法其实就是由kubelet格式化成API的post data,提交给apiserver,因此这里支持yaml,json两种数据结构的文件。
Pod资源
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
apiVersion: v1 指定api版本,此值必须在kubectl apiversion中
kind: Pod 指定创建资源的角色/类型
metadata: 资源的元数据/属性
name: test 资源的名字,在同一个namespace中必须唯一
labels: 设定资源的标签
sex: boy 标签以key/value的结构存在
age: 18
spec: #specification of the resource content 指定该资源的内容
restartPolicy: Never 表明改容器仅仅运行一次,默认k8s的策略,在此容器退出后,会立即创建一个相同的容器
volumes: 定义一组挂载设备
- name: volume 定义一个挂载设备的名字
hostPath: /data/www/html 挂载设备类型为hostPath,路径为宿主机下的/data/www/html,这里设备类型支持很多种
containers: 指定资源中的容器
- name: container1 容器的名字
image: “docker.coocla.org/ubuntu:last” 容器使用的镜像地址
volumeMounts:
- mountPath: /mnt 挂载到容器的某个路径下
name: volume 挂载设备的名字,与volumes[*].name 需要对应
livenessProbe: 容器健康监测
httpGet: http形式监测,返回200-399之间,则认为容器正常
path: /health
port: 8080
initialDelaySeconds: 15 表明第一次检测在容器启动后多长时间后开始
timeoutSeconds: 1 检测的超时时间
env: 指定容器中的环境变量
- name: str 变量的名字
value: "hello world” 变量的值
command: ["/bin/bash", "-c"] 覆盖容器中的Entrypoint,对应Dockefile中的ENTRYPOINT
args: ["/bin/echo", "$(str)"] 对应Dockerfile中CMD参数
|
健康监测还支持另外一种方法:
|
1
2
3
4
5
6
|
exec: 执行命令的方法进行监测,如果其退出码不为0,则认为容器正常
command:
- cat
- /tmp/health
initialDelaySeconds: 15
timeoutSeconds: 1
|
ReplicationController的语法参数
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx
spec:
replicas: 2 指定rc中pod的个数
template: 指定rc中pod的模板,rc中的pod都是按照这个模板来创建的
metadata: 指定rc中pod的元数据,注意这里不需要在指定pod的名字,它由rc复制生成
labels:
app: nginx
spec:
container:
- name: nginx
image: nginx
|
Service
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
apiVersion: v1
kind: Service
metadata:
name: nginxsvc
labels:
app: nginx
spec: 指定Service中的内容
ports: 映射列表
- port: 80 service的端口
porotocal: TCP 映射的协议类型,支持TCP/UDP
targetPort: 80 映射到pod的端口
name: www.baidu.com 该映射的名字
selector: 匹配器
port: 80
app: nginx 匹配label中app为nginx,port为80的pod
|
Secret
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: 0paque 定义secret的类型,这里支持三种类型
password: xxx|base64 以key/value的形式定义,value需要经过base64编码才可以,在secret被挂载到container中后,会以key作为文件名,value的值经过base64解码作为内容,以文件的形式存在于container中
username: xxx|base64
---
type: kubernetes.io/service-account-token 第二种secret类型,用作创建服务账号的token,用作进程间通信的认证
---
type: kubernetes.io/dockercfg 第三种secret类型,用作在创建container,对docker registry的认证
data:
.dockercfg: `cat ~/.dockercfg | base64`
|
以上为部分资源参数,当然还有更多的参数可以指定,及更多的资源可以通过定义construct来创建。
Kubernetes资源创建yml语法的更多相关文章
- kubernetes系列06—kubernetes资源清单定义入门
本文收录在容器技术学习系列文章总目录 1.认识kubernetes资源 1.1 常用资源/对象 workload工作负载型资源:pod,ReplicaSet,Deployment,StatefulSe ...
- 第15章: Prometheus监控Kubernetes资源与应用
Prometheus监控Kubernetes资源与应用 目录 1 监控方案 2 2 监控指标 4 3 实现思路 4 4 在K8S中部署Prometheus 4 5 在K8S中部署Grafana与可视化 ...
- pod(一):Kubernetes(k8s)创建pod的两种方式
目录 一.系统环境 二.前言 三.pod 四.创建pod 4.1 环境介绍 4.2 使用命令行的方式创建pod 4.2.1 创建最简单的pod 4.2.2 创建pod,指定镜像下载策略 4.2.3 创 ...
- 使用kubesql进行kubernetes资源查询
kubesql kubesql(https://github.com/xuxinkun/kubesql)是我最近开发的一个使用sql查询kubernetes资源的工具.诸如node,pod等kuber ...
- 新手学习FFmpeg - 如何编写Kubernetes资源文件
Kubernetes API的使用方式 Kubernetes API属于声明式API编程, 它和常用的命令式编程有一些区别. 通俗的说,命令式编程是第一人称,我要做什么,我要怎么做. 操作系统最喜欢这 ...
- 深入理解 Kubernetes 资源限制:CPU
原文地址:https://www.yangcs.net/posts/understanding-resource-limits-in-kubernetes-cpu-time/ 在关于 Kubernet ...
- (四)Kubernetes 资源清单定义
Kubernetes常用资源对象 依据资源的主要功能作为分类标准,Kubernetes的API对象大体可分为五个类别,如下: 类型 名称 工作负载(Workload) Pod.ReplicaSet.D ...
- 深入理解Kubernetes资源限制:CPU
写在前面 在上一篇关于Kubernetes资源限制的文章我们讨论了如何通过ResourceRequirements设置Pod中容器内存限制,以及容器运行时是如何利用Linux Cgroups实现这些限 ...
- 深入理解Kubernetes资源限制:内存
写在前面 当我开始大范围使用Kubernetes的时候,我开始考虑一个我做实验时没有遇到的问题:当集群里的节点没有足够资源的时候,Pod会卡在Pending状态.你是没有办法给节点增加CPU或者内存的 ...
随机推荐
- 冻结 锁定 固定 行 列 表头 抬头 html table jquery 全兼容常见浏览器
转:http://www.cnblogs.com/sorex/archive/2011/06/30/2093499.html <!DOCTYPE html PUBLIC "-//W3C ...
- .NET面试题(二)
基础方面: 1.简单的描述一下C# 中重写,重载,隐藏的概念 C#中重写(overide)是子类继承父类后,对父类中的方法进行行为改写. 重载是指方法名相同,参数不同 重写和隐藏的定义: 重写:基类方 ...
- jquery实现页面的搜索功能
$(function(){ $("input[type=button]").click(function(){ var txt=$("input[type=text]&q ...
- Mybatis设置超时时间
Mybatis设置超时时间 mybatis如果不指定,默认超时时间是不做限制的,默认值为0.mybatis sql配置超时时间有两种方法: 1.全局配置 在mybatis配置文件的settings节点 ...
- 搭建hadoop集群,
这个教程是2.4.1的 ,但是亲测对于2.6.5,是可以用的,对2.5.4应该也是支持的 1.准备Linux环境 1.0先将虚拟机的网络模式选为NAT 1.1修改主机名 vi /etc/sysconf ...
- invalid comparison: java.util.ArrayList and java.lang.String——bug解决办法
今天碰到个问题,解决了很久才搞定,来记录下,希望可以帮助到大家 贴错误源码: 这是一个根据list集合的查找数据的 sql,在接收list的时候加了判断 list != ‘ ’ “”,引起了集合与St ...
- UCI机器学习库和一些相关算法(转载)
UCI机器学习库和一些相关算法 各种机器学习任务的顶级结果(论文)汇总 https://github.com//RedditSota/state-of-the-art-result-for-machi ...
- PHP——做服务
xml的写法和特点 <?xml version='1.0' encoding='utf-8'?><Info><code>c001</code><n ...
- Uploadify使用源码
上传图片页面绑定源码如下: $("#uploadify").uploadify({ 'uploader' : basePath+'commons/uploadfiles/uploa ...
- [Android] Ubuntu下Eclipse || Android Studio识别不了手机的官方解决方案
最近在转移开发平台,Android Studio一直都识别不了手机,但Eclipse却可以.经过一番调查后,发现是自己一点所以然导致的.接下来直接奉上解决教程 解决教程 在命令行终端输入lsusb命令 ...