k8s资源之podSecurityPolicy

 欢迎关注我的公众号:

 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下:

istio多集群探秘,部署了50次多集群后我得出的结论

istio多集群链路追踪,附实操视频

istio防故障利器,你知道几个,istio新手不要读,太难!

istio业务权限控制,原来可以这么玩

istio实现非侵入压缩,微服务之间如何实现压缩

不懂envoyfilter也敢说精通istio系列-http-rbac-不要只会用AuthorizationPolicy配置权限

不懂envoyfilter也敢说精通istio系列-02-http-corsFilter-不要只会vs

不懂envoyfilter也敢说精通istio系列-03-http-csrf filter-再也不用再代码里写csrf逻辑了

不懂envoyfilter也敢说精通istio系列http-jwt_authn-不要只会RequestAuthorization

不懂envoyfilter也敢说精通istio系列-05-fault-filter-故障注入不止是vs

不懂envoyfilter也敢说精通istio系列-06-http-match-配置路由不只是vs

不懂envoyfilter也敢说精通istio系列-07-负载均衡配置不止是dr

不懂envoyfilter也敢说精通istio系列-08-连接池和断路器

不懂envoyfilter也敢说精通istio系列-09-http-route filter

不懂envoyfilter也敢说精通istio系列-network filter-redis proxy

不懂envoyfilter也敢说精通istio系列-network filter-HttpConnectionManager

不懂envoyfilter也敢说精通istio系列-ratelimit-istio ratelimit完全手册

 

————————————————

PodSecurityPolicy:

Pod 安全策略 是集群级别的资源,它能够控制 Pod 运行的行为,以及它具有访问什么的能力。 PodSecurityPolicy对象定义了一组条件,指示 Pod 必须按系统所能接受的顺序运行

允许的控制:

开启PodSecurityPolicy:

配置apiserver增加admission plugin PodSecurityPolicy即可。

--enable-admission-plugins=NodeRestriction,PodSecurityPolicy

privileged:

[root@master01 privileged]# cat ./*
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
    securityContext:
      privileged: true
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: privileged
  annotations:
    seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*'
spec:
  privileged: true
  allowPrivilegeEscalation: true
  allowedCapabilities:
  - '*'
  volumes:
  - '*'
  hostNetwork: true
  hostPorts:
  - min: 0
    max: 65535
  hostIPC: true
  hostPID: true
  runAsUser:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'

RunAsUser:

[root@master01 runAsUser]# cat ./*
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: runasuser
spec:
  runAsUser:
    rule: 'MustRunAsNonRoot'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'MustRunAs'
    ranges:
      - min: 1
        max: 65535
  fsGroup:
    rule: 'MustRunAs'
    ranges:
      - min: 1
        max: 65535
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: runasuser
spec:
  runAsUser:
    rule: 'MustRunAs'
    ranges:
      - min: 1
        max: 65535
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: runasuser
spec:
  runAsUser:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'

SELinux:

[root@master01 selinux]# cat ./*
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  securityContext:
    seLinuxOptions:
      level: "s0:c123,c456"
  containers:
  - image: nginx
    name: nginx
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: selinux
spec:
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
  hostNetwork: false
  hostIPC: false
  hostPID: false
  runAsUser:
    rule: 'RunAsAny'
  seLinux:
    rule: 'MustRunAs'
    seLinuxOptions:
      level: "s0:c2,c3"
  supplementalGroups:
    rule: 'MustRunAs'
    ranges:
      - min: 0
        max: 65535
  fsGroup:
    rule: 'MustRunAs'
    ranges:
      - min: 0
        max: 65535
  readOnlyRootFilesystem: false

supplementalGroups:

[root@master01 supplementalGroups]# cat ./*
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: supplementalgroups
spec:
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
  runAsUser:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'MustRunAs'
    ranges:
      - min: 10
        max: 65535
  fsGroup:
    rule: 'RunAsAny'
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: supplementalgroups
spec:
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
  runAsUser:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'

FSGroup:

[root@master01 fsGroup]# cat ./*
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: fsgroups
spec:
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
  runAsUser:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'MustRunAs'
    ranges:
      - min: 10
        max: 65535
  fsGroup:
    rule: 'MustRunAs'
    ranges:
    - min: 20
      max:65535
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: fsgroups
spec:
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
  runAsUser:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'

runAsGroup:

[root@master01 runAsGroup]# cat ./*
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: runasgroup
spec:
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
  runAsUser:
    rule: 'RunAsAny'
  runAsGroup:
    rule: 'MustRunAs'
    ranges:
      - min: 10
        max: 65535
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: runasgroup
spec:
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
  runAsUser:
    rule: 'RunAsAny'
  runAsGroup:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'

HostPorts:

[root@master01 HostPorts]# cat ./*
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: hostports
spec:
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    - 'persistentVolumeClaim'
  runAsUser:
    rule: 'RunAsAny'
  runAsGroup:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  hostPorts:
  - min: 65532
    max: 65535
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
    ports:
    - containerPort: 80
      hostPort: 8080

AllowedHostPaths:

[root@master01 allowedHostPaths]# cat ./*
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: allowedhostpaths
spec:
  volumes:
    - '*'
  runAsUser:
    rule: 'RunAsAny'
  runAsGroup:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  allowedHostPaths:
  - pathPrefix: "/foo"
    readOnly: true
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
    ports:
    - containerPort: 80
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: html
  volumes:
  - name: html
    hostPath:
      path: /data
      type: DirectoryOrCreate

hostIPC:

[root@master01 hostIPC]# cat ./*
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: hostipc
spec:
  volumes:
    - '*'
  runAsUser:
    rule: 'RunAsAny'
  runAsGroup:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  hostIPC: false
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  hostIPC: true
  containers:
  - image: nginx
    name: nginx
    ports:
    - containerPort: 80
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: html
  volumes:
  - name: html
    hostPath:
      path: /data
      type: DirectoryOrCreate

hostPID:

[root@master01 hostPID]#  cat ./*
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: hostpid
spec:
  volumes:
    - '*'
  runAsUser:
    rule: 'RunAsAny'
  runAsGroup:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  hostPID: false
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  hostPID: true
  containers:
  - image: nginx
    name: nginx
    ports:
    - containerPort: 80

hostNetwork:

[root@master01 hostNetwork]# cat ./*
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: hostnetwork
spec:
  volumes:
    - '*'
  runAsUser:
    rule: 'RunAsAny'
  runAsGroup:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  hostNetwork: false
  hostPorts:
  - min: 0
    max: 65536
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  hostNetwork: true
  containers:
  - image: nginx
    name: nginx
    ports:
    - containerPort: 80

allowPrivilegeEscalation:

[root@master01 allowPrivilegeEscalation]# cat ./*
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: allowprivilegeescalation
spec:
  volumes:
    - '*'
  runAsUser:
    rule: 'RunAsAny'
  runAsGroup:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  allowPrivilegeEscalation: false
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
    securityContext:
      allowPrivilegeEscalation: true

requiredDropCapabilities:

[root@master01 requiredDropCapabilities]# cat ./*
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: requireddropcapabilities
spec:
  volumes:
    - '*'
  runAsUser:
    rule: 'RunAsAny'
  runAsGroup:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  requiredDropCapabilities:
  - CHOWN

allowedCapabilities:

[root@master01 allowedCapabilities]# cat ./*
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: requireddropcapabilities
spec:
  volumes:
    - '*'
  runAsUser:
    rule: 'RunAsAny'
  runAsGroup:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  allowedCapabilities:
  - NET_ADMIN
apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo-6
spec:
  securityContext:
    runAsNonRoot: true
  containers:
  - name: sec-ctx-4
    image: busybox
    args:
    - "sh"
    - "-c"
    - "sleep 36000"
    securityContext:
      capabilities:
        add: ["NET_ADMIN", "SYS_TIME"]

defaultAddCapabilities:

[root@master01 defaultAddCapabilities]# cat ./*
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: requireddropcapabilities
spec:
  volumes:
    - '*'
  runAsUser:
    rule: 'RunAsAny'
  runAsGroup:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  defaultAddCapabilities:
  - NET_ADMIN
  - SYS_TIME
apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo-6
spec:
  securityContext:
    runAsNonRoot: true
  containers:
  - name: sec-ctx-4
    image: busybox
    args:
    - "sh"
    - "-c"
    - "sleep 36000"
    securityContext:
      capabilities:
        add: ["NET_ADMIN", "SYS_TIME"]

readOnlyRootFilesystem:

[root@master01 readOnlyRootFilesystem]# cat ./*
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: readonlyrootfilesystem
spec:
  volumes:
    - '*'
  runAsUser:
    rule: 'RunAsAny'
  runAsGroup:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  readOnlyRootFilesystem: true

allowedUnsafeSysctls:

[root@master01 allowedUnsafeSysctls]# cat ./*
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: allowedunsafesysctls
spec:
  volumes:
    - '*'
  runAsUser:
    rule: 'RunAsAny'
  runAsGroup:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  allowedUnsafeSysctls:
  - net.ipv4.ip_forward
apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo-10
spec:
  securityContext:
    sysctls:
    - name: net.ipv4.ip_forward
      value: "1"
  containers:
  - name: sec-ctx-4
    image: busybox
    args:
    - "sh"
    - "-c"
    - "sleep 36000"  

forbiddenSysctls:

[root@master01 forbiddenSysctls]# cat ./*
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: forbiddensysctls
spec:
  volumes:
    - '*'
  runAsUser:
    rule: 'RunAsAny'
  runAsGroup:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  forbiddenSysctls:
  - net.ipv4.ip_forward
apiVersion: v1
kind: Pod
metadata:
  name: security-context-demo-10
spec:
  securityContext:
    sysctls:
    - name: net.ipv4.ip_forward
      value: "1"
  containers:
  - name: sec-ctx-4
    image: busybox
    args:
    - "sh"
    - "-c"
    - "sleep 36000"  

<think> 我们使用mermaid的mindmap来生成k8s的脑图,包括核心概念、组件、配置、网络、存储、安全等部分 由于mermaid的mindmap格式是树形结构,我们可以按照以下结构组织: 根节点:Kubernetes 主要分支:核心概念、核心组件、配置管理、网络、存储、安全、调度、监控与日志、应用管理、扩展机制 </think> ### Kubernetes 核心知识脑图 ```mermaid mindmap root((Kubernetes)) 核心概念 Pod 最小部署单元 共享网络命名空间 临时存储 Service ClusterIP NodePort LoadBalancer Headless Deployment 副本控制 滚动更新 回滚机制 StatefulSet 有序部署 持久存储 网络标识 ConfigMap & Secret 配置与密钥管理 热更新机制 安全存储 架构组件 Control Plane API Server 认证授权 REST接口 状态存储 etcd 分布式键值存储 集群状态维护 数据持久化 Scheduler 节点选择 资源调度 亲和性规则 Controller Manager Node Controller Replication Controller Endpoint Controller Node组件 Kubelet Pod生命周期管理 资源监控 CRI接口 Kube-Proxy 服务发现 负载均衡 网络规则 Container Runtime Docker Containerd CRI-O 网络模型 CNI插件 Flannel Calico Weave Net Service网络 Cluster IP kube-proxy转发 iptables/ipvs Ingress 七层代理 路径路由 TLS终止 Network Policy 网络隔离 策略规则 安全组 存储管理 Volume emptyDir hostPath nfs PersistentVolume 静态配置 动态配置 回收策略 PersistentVolumeClaim 存储请求 访问模式 存储类绑定 StorageClass 动态卷配置 供应商集成 参数配置 配置管理 ConfigMap 环境变量注入 配置文件挂载 热更新 Secret Opaque类型 docker-registry tls证书 Downward API 元数据注入 环境变量传递 资源限制获取 安全机制 RBAC Role ClusterRole RoleBinding ServiceAccount Pod安全 SecurityContext PodSecurityPolicy AppArmor/Seccomp TLS认证 证书轮换 API Server认证 kubeconfig管理 NetworkPolicy 网络隔离 入口出口规则 命名空间隔离 调度机制 资源请求 CPU/Memory Ephemeral Storage HugePages 调度策略 节点亲和性 Pod亲和性/反亲和性 污点与容忍 优先级 PriorityClass 抢占机制 资源紧张处理 运维管理 监控 Prometheus Metrics Server cAdvisor 日志 EFK Stack Loki 节点日志收集 调试工具 kubectl kubeadm Helm 自动扩缩 HPA VPA Cluster Autoscaler ``` ### Kubernetes 常用命令速查表 ```bash # 基础操作 kubectl get pods -A # 查看所有命名空间的Pod kubectl describe pod <pod-name> # 查看Pod详情 kubectl logs <pod-name> -f # 实时查看Pod日志 # 部署管理 kubectl apply -f deployment.yaml # 部署应用 kubectl scale deploy <name> --replicas=5 # 扩缩容 kubectl rollout status deploy/<name> # 查看部署状态 # 故障排查 kubectl get events --sort-by='.metadata.creationTimestamp' # 查看集群事件 kubectl top nodes # 查看节点资源使用 kubectl exec -it <pod-name> -- sh # 进入Pod容器 # 网络诊断 kubectl get svc # 查看服务 kubectl get endpoints # 查看端点 kubectl port-forward svc/<svc-name> 8080:80 # 端口转发 # 配置管理 kubectl create configmap <name> --from-file=config.properties # 创建ConfigMap kubectl edit cm <configmap-name> # 编辑ConfigMap ``` ### Kubernetes YAML 配置示例 **Deployment 配置示例**: ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.19 ports: - containerPort: 80 resources: requests: memory: "128Mi" cpu: "250m" limits: memory: "256Mi" cpu: "500m" volumeMounts: - name: config-volume mountPath: /etc/nginx/conf.d volumes: - name: config-volume configMap: name: nginx-config ``` **Service 配置示例**: ```yaml apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx type: LoadBalancer ports: - protocol: TCP port: 80 targetPort: 80 ``` ### Kubernetes 诊断脚本 ```bash #!/bin/bash # Kubernetes 集群诊断工具 # 1. 集群状态检查 check_cluster_status() { echo "===== 集群节点状态 =====" kubectl get nodes -o wide echo -e "\n===== 组件状态 =====" kubectl get componentstatuses } # 2. Pod异常检查 check_pod_issues() { echo -e "\n===== 异常Pod检查 =====" kubectl get pods -A --field-selector=status.phase!=Running echo -e "\n===== 最近失败的Pod =====" kubectl get pods -A --sort-by='.status.startTime' | grep -Ev 'Running|Completed' } # 3. 资源使用分析 check_resource_usage() { echo -e "\n===== 节点资源使用 =====" kubectl top nodes echo -e "\n===== Pod资源使用 =====" kubectl top pods -A --containers } # 4. 网络连通性测试 check_network() { echo -e "\n===== Service端点检查 =====" kubectl get endpoints echo -e "\n===== DNS解析测试 =====" kubectl run dns-test --image=busybox:1.28 --rm -it --restart=Never -- nslookup kubernetes.default } # 5. 存储卷检查 check_storage() { echo -e "\n===== PVC状态检查 =====" kubectl get pvc -A echo -e "\n===== PV状态检查 =====" kubectl get pv } # 执行诊断 check_cluster_status check_pod_issues check_resource_usage check_network check_storage ``` ### Kubernetes 学习路径建议 1. **基础概念**:Pod/Service/Deployment 核心概念 2. **集群搭建**:Minikube/kubeadm 本地集群 3. **应用部署**:YAML 编写与 Helm 包管理 4. **网络实践**:Service/Ingress 网络配置 5. **存储管理**:PV/PVC/StorageClass 实践 6. **安全加固**:RBAC/NetworkPolicy 配置 7. **运维监控**:Prometheus/Grafana 监控栈 8. **CI/CD集成**:GitOps 工作流实现
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hxpjava1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值