1 pod yaml

1.1 metadata
  • metadata.name required pod名称
  • metadata.namespace required pod所属命名空间,默认default
  • metadata.labels[] 自定义标签列表
  • metadata.annotation[] 自定义注解列表
1.2 spec.containers[]
  • spec.containers[].name required 容器名称

  • spec.containers[].image required 容器镜像名称

  • spec.containers[].command[]
    一个pod对应多个container,容器启动命令列表,不指定是打镜像时的启动命令。

  • spec.containers[].volumesMounts[]
    挂载到容器内部的存储卷配置,定义好的volumes

  • spec.containers[].ports

  • spec.containers[].env

  • spec.containers[].resource

  • spec.containers[].livenessProbe
    方式: exec、httpGet、tcpSocket

1.3 spec.nodeSelector

与node label 配合使用,调度到复合条件node

1.4 spec.restartPolice

默认always

1.5 spec.volumes
  • volume和volumeMounts
    定义(大小…)和使用?
  • spec.volumes[].emptyDir
    与pod生命周期相同的临时目录,值为空对象emptyDir:{}
  • spec.volumes[].configMap
1.6 更新策略
  • deployment:rollingupdate(默认)、recreate 先删后建
    maxUnavailable:比例或最大值,越小更新越平滑
    maxSurge:比例或最大值,越大副本更新速度越快
    n. surge 浪涌、飞涨
    注:标签选择器,尽量不更新,旧pod孤立不受控制
  • daemonset:ondelete(默认) 删除才更新,手动升级 、rollingupdate
  • statefulset:rollingupdate(默认)、ondelete、partitioned 分区升级

2 service account

  • 对象:pod里的进程使用
  • 轻重:创建轻量级,user落库重
  • 范围:user全局性,service account 属于命名空间
  • 目录:挂载在pod中所有容器指定目录/var/run/secrets/kubernetes.io/serviceaccount
  • 作用:确保k8s集群安全,提供pod访问api server身份鉴权
  • 内容:token、ca.crt、namesspace
  • secret 对象:访问api server的secret、下载镜像secret(库一般insecure模式,为空;ranchar加secret对象包含用户名密码)
  • ocp:cluster-api 下载kubeconfig;读写权限,scc;nfs 腾讯云 pvc;router到负载均衡

3 api server授权

授权策略-authorization policy

3.1 ABAC(attribute-based access control)

k8s 1.6前默认授权模式
配置复杂、修改需重启api server

3.2 webhook

自定义授权模式

3.3 node

与应用授权无关,自身安全增强

3.4 RBAC(role-based access control)
3.4.1 k8s 1.6后授权模式,优势:
  • 资源、非资源权限完整覆盖
  • 简单,通过几个api对象即可完成
  • 可在运行时调整,无需重启api server
3.4.2 资源对象
  • role/rolebinding
    范围:命名空间
    role:一组权限的集合
    rolebinding:角色绑定到目标主体,目标主体有user、group、serviceaccount
  • clusterrole/clusterrolebinding
    范围:集群级别

4 pod probe

4.1 定期执行
4.2 层级:与image、ports同级
    livenessProbe:
      tcpSocket:
        port: 80
      initialDelaySeconds: 15
      periodSeconds: 20
4.3 pod ip 自动获取?
4.4 配置方式

ExectAction:执行命令,返回0健康
TCPSocketAction:容器ip、端口号能建立tcp链接健康
HTTPGetAction:容器ip、端口号、路径调用get,[200,400)健康

4.5 参数

initialDelaySeconds:启动容器首次健康检查时间,单位s
timeoutSeconds:超时时间,单位s

4.6 类型

LivenessProbe:判断pod running状态,决策是否重启,结果是可用
ReadnessProbe:判断pod ready状态,决策是否隔离可用,结果是停用
StartupProbe:有且仅有一次,例如链接远程网络,启动慢

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐