分类:
- 名称空间级别 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时,无法在同一台宿主上启动第二个副本
|
Kubernetes yaml 学习