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时,无法在同一台宿主上启动第二个副本


上一篇:利用pyinstaller将python项目脚本打包成可执行文件


下一篇:自动化测试工具Gauge--套件执行步骤