Kubernetes yaml 学习

分类:
  • 名称空间级别 kube-system
  • 集群级别 role
  • 元数据 HPA
K8s 中所有的内容都抽象为资源,资源实例化之后,叫做对象
 
名称空间级别资源 (workload):
  • Pod,ReplicaSet,Deployment,StatefullSet,DaemonSet,Job,CronJob(ReplicationController 在v1.11版本废弃)
  • 服务发现及负载均衡型资源(ServiceDiscovery LoadBalance):Service、Ingress、...
  • 配置与存储型资源:Volume 、CSI(容器存储接口,可以扩展各种各样的第三方存储卷)
  • 特殊类型的存储卷:ConfigMap\Secret\DownwardAPI(把外部环境中的信息输出给容器)
集群级别资源
  • Namespace,Node,Role,ClusterRole,RoleBinding,ClusterRoleBinding
元数据资源
  • HPA,PodTemplate,LimitRange
 
yaml:是一种标记语言,可读性高,用来表达数据,以数据为中心
语法:
  • 缩进不允许使用Tab,只充许使用空格
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • #标识注释,从这个字符一直到行尾,都会被解释忽略
支持的数据结构:
  • 对象:键值的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary)
  • 数组:一组按次序排列的值,又称为序列(sequence)/列表(list)
  • 纯量(scalars):单个的,不可再分的值
对象类型:对象的一组键值对,使用冒号结构表示
name: Steve age: 18
yaml 也充许另一种写法,将所有的键值写成一个对象
hash:{name: Steve,age: 18}
数组类型:一组连词线开头的行,构成一个数组
animal - cat - Dog
数组也可以采用行内表示法
animal: [Cat, Dog]
复合结构:对角和数组可以结合使用,形成复合结构
languages: - Ruby - Perl - python websites: YAML: yaml.org Ruby: ruby-lang.org Python: python.org Perl: use.perl.org
纯量:纯量是最基本的,不可再分的值。以下的数据都属于纯量
字符串 布尔值 整数 浮点数 Null 时间 日期 数值直接以字面量的形式表示 number: 12.30 布尔值用true和false表示 isSet: true null 用 ~ 表示 parent: ~ 时间采用ISO8601格式 iso8601: 2001-12-14t21:59:43.10-05:00 日期采用复合iso8601 格式的年月日表示 date: 1976-07-31 yaml 充许使用两个感叹号,强制转换数据类型 e: !!str 123 f: !!str true
字符串
字符串默认不使用引号表示
str : 这是一个字符串
如果字符串之中包含空格或特殊字符,需要放在引号之中
str: '内容: 字符串'
单引号和双引号都可以使用,双引号不会对特殊字符转义
s1 '内容\n字符串' s1 "内容\n字符串"
单引号之中如果还有单引号,必须连续使用两个单引号转义
str: 'labor''s day'
字符串可以写多行,从第二行开始,必须有一个单空格缩进。换行符会被转为空格
str: 这是一段 多行 字符串
多行字符串可以使用|保留换行符,也可以使用>折叠换行
this: | Foo Bar that: > Foo Bar
+表示保留文字块末尾的换行,-表示删除字符串末尾的换行
s1 : | Foo s1 : |+ Foo s1 : |- Foo
常用字段
kubectl expain pod kubectl explain pod.apiVersion kubectl explain pod.spec kubectl explain pod.spec.containers
 
参数名
字段类型
说明
version
String
这是是指k8s 的版本,目前基本上是v1,可以用
kubectl api-versions 命令查询
kind
String
这里是指yaml 文件定义的资源类型和角色,比如 Pod
metadata
Object
元数据对象,固定值就写metadata
metadata.name
String
元数据对象的名字,由我们编写 ,比如命名Pod的名字
metadata.namespace
String
元数据对象的命名空间,由我们自身定义;默认是default
spec
Object
详细定义对象,固定值就写Spec
spec.containers[]
list
 
spec.containers[].name
String
 
spec.containers[].image
String
 
spec.containers[].imagePullPolicy
String
Always 默认值
Never
IfNotPresent
spec.containers[].command[]
list
指定容器启动命令,因为是数组可以指定多个,不指定则使用镜像打包时使用的启动命令
spec.containers[].args[]
list
指定容器启动命令参数,因为是数组可以指定多个
spec.containers[].workingDir
String
指定容器的工作目录
spec.containers[].volumeMounts[]
list
 
spec.containers[].volumeMounts[].name
String
 
spec.containers[].volumeMounts[].mountPath
String
 
spec.containers[].volumeMounts[].readOnly
String
true/false 默认为读写
spec.containers[].ports[]
list
 
spec.containers[].ports[].name
String
 
spec.containers[].ports[].containerPort
String
 
spec.containers[].ports[].hostport
String
指定容器所在主机需要监听的端口号,默认跟上面的containerPort相同,注意设置了hostPort同一台主机无法启动该容器的相同副本(因为主机的端口不能相同,会冲突)
spec.containers[].ports[].protocol
String
TCP/UDP 默认为TCP
spec.containers[].env[]
String
 
spec.containers[].env[].name
String
 
spec.containers[].env[].value
String
 
spec.containers[].resources
Object
指定资源限制和资源请求的值 (这里开始就是设置容器的资源上限)
spec.containers[].resources.limits
Object
指定设置容器运行时资源的运行上限
spec.containers[].resources.limits.cpu
String
单位是core docker run --cpu-shares
spec.containers[].resources.limits.memory
String
单位是 MIB GIB
spec.containers[].resources.requests
Object
指定容器启动和调度时的限制设置
spec.containers[].resources.requests.cpu
String
单位是core docker run --cpu-shares
spec.containers[].resources.requests.memory
String
单位是 MIB GIB
spec.restartPolicy
String
Always 默认
OnFailure 只有POD以非零退出码终止时,kubectl才会重启
Never
spec.nodeSelector
Object
定义Node 的Label过滤标签,以Key: Vaule格式指定
spec.imagePullSecrets
Object
定义pull镜像时使用secret名称,以name:secretkey格式指定
spec.hostNetwork
Boolean
false:默认值,设为true时,无法在同一台宿主上启动第二个副本


posted on 2021-01-27 08:24  InnoLeo  阅读(172)  评论(0编辑  收藏  举报