记录
控制器
Deployment # 常用控制器,管理无状态应用
StatefulSet # 管理有状态应用的控制器,保证每个Pod都有唯一的标识
DaemonSet # 守护进程控制器,确保在集群中的每个节点上运行一个Pod副本,适用于日志收集、监控代理等
RBAC
# 针对单个命名空间
role # 在某个命名空间内定义权限
rolebinding # 将角色绑定到用户、组或服务账户,使其可以在该命名空间内执行相应的操作
# 针对整个集群
clusterrole # 在整个集群范围内定义权限
clusterrolebinding # 将集群角色绑定到用户、组或服务账户,使其可以在集群中执行相应的操作
存储配置信息和敏感数据
ConfigMap # 存储非敏感的配置文件信息或环境变量,不会加密
Secret # 存储敏感数据密码、令牌等,会加密
# 都支持通过环境变量或挂载卷注入到容器中
存储
本地存储 # hostPath,将宿主机的文件系统挂载到pod中
动态pv # 基于storageclasses自动创建PV、PVC
静态pv # pv、pvc手动编写,支持多种存储类型,如hostPath、nfs等
调度策略
# 资源调度
nodeName # 根据节点主机名调度,强制调度到指定节点
nodeSelector # 根据节点标签调度Pod
affinity # 亲和性调度设置
nodeAffinity # 节点亲和性调度,控制Pod是否应该调度到特定的节点上
podAffinity # pod亲和性调度,控制Pod是否应该调度到具有相同标签的Pod所在的节点
podAntiAfffinity # pod反亲和性调度,控制Pod是否应该避免调度到某些具有特定标签的Pod所在的节点
tolerations # 污点容忍度调度,允许Pod被调度到有污点(taints)的节点上
命令
command # 容器的启动命令,会替代容器镜像的默认启动命令
args # 跟在command命令后执行,传递给command的参数,执行顺序是command -> args
探针
livenessProbe # 存活探针,用于检测容器是否需要重启,容器崩溃或卡住的情况,需要重新启动
httpGet # 通过发起 HTTP 请求检查容器的健康状况
exec # 通过在容器内执行命令来判断健康
tcpSocket # 通过检查容器是否监听指定的端口来判断容器的健康
readinessProbe # 就绪探针,用于检测容器是否已准备好接受流量,如果失败,则会将容器从负载均衡中移除
httpGet # 通过 HTTP 请求检查容器是否准备好
tcpSocket # 通过检查容器是否在某个端口上侦听来判断容器是否准备好
exec # 通过执行容器内部命令判断容器是否准备好
资源限制
resources: # 1核为1000m,Ti Gi Mi
requests: # 容器启动时所需的资源最低值
cpu: 1
memory: 1Gi
limits: # 容器所能使用的最大资源值
cpu: 2
memory: 2Gi
HPA
kubectl autoscale deployment -n prometheus prometheus --cpu-percent=70 --min=1 --max=10 --dry-run=client -o yaml
更新策略
# 更新策略[所有控制器都是默认滚动更新,有些需要特殊设置使用重建更新]
# 如果应用支持平滑过渡,可以选择 滚动更新。
# 如果应用必须从零开始(例如数据库迁移),可以选择 重建更新。
滚动:
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1 # 表示更新时可以有多少 Pod 不可用
maxSurge: 1 # 表示在更新过程中,可以额外启动多少 Pod 来进行替代
重建:
strategy:
type: Recreate
Service(服务)
# 服务用于在 Pod 之间提供稳定的网络访问,通过标签选择器将请求路由到正确的 Pod
- ClusterIP:默认类型,服务只能在集群内部访问。
- NodePort:将服务暴露在每个节点的特定端口上,集群外部可以访问。
- LoadBalancer:使用云平台提供的负载均衡服务来暴露服务。
- ExternalName:将服务映射到外部的 DNS 名称。
Ingress(入口控制器)
# 用于将 HTTP 和 HTTPS 请求路由到集群内的服务。Ingress 需要配合 Ingress Controller 使用,可以提供外部访问和一些高级功能(如 SSL/TLS 终止、反向代理等)
# 例如,定义路由规则:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: myapp-service
port:
number: 80
NetworkPolicy(网络策略)
# 用于控制 Pod 之间的通信。通过指定入站和出站流量规则,可以精确地控制哪些 Pod 可以与其他 Pod 通信
# 例如,限制只有来自特定标签的 Pod 才能访问服务:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: my-network-policy
spec:
podSelector:
matchLabels:
role: backend
ingress:
- from:
- podSelector:
matchLabels:
role: frontend
本文来自博客园,作者:青瓦深巷,转载请注明原文链接:
https://www.cnblogs.com/qwsx/p/18597606

浙公网安备 33010602011771号