daily note k8s
1 pod yamlmetadatametadata.namerequired pod名称metadata.namespace required pod所属命名空间,默认defaultspec.containers[]spec.containers[].name required 容器名称spec.containers[].image required 容器镜像名称spec.containers[
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:有且仅有一次,例如链接远程网络,启动慢
更多推荐
所有评论(0)