网站建设推广费会计分录如何使用wordpress html代码

张小明 2026/1/14 1:31:47
网站建设推广费会计分录,如何使用wordpress html代码,镇江网友之家,建设网站和ipv4和ipv6什么关系一、概述 Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。Pod#xff08;就像在鲸鱼荚或者豌豆荚中#xff09;是一组#xff08;一个或多个#xff09; 容器#xff1b; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的容器总是并置就像在鲸鱼荚或者豌豆荚中是一组一个或多个 容器 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的容器总是并置colocated的并且一同调度在共享的上下文中运行。 Pod 所建模的是特定于应用的 “逻辑主机”其中包含一个或多个应用容器 这些容器相对紧密地耦合在一起。 在非云环境中在相同的物理机或虚拟机上运行的应用类似于在同一逻辑主机上运行的云应用。除了应用容器Pod 还可以包含在 Pod 启动期间运行的 Init 容器。 你也可以在集群支持临时性容器的情况下 为调试的目的注入临时性容器。Pod 的共享上下文包括一组 Linux 名字空间、控制组cgroup和可能一些其他的隔离方面 即用来隔离容器的技术。 在 Pod 的上下文中每个独立的应用可能会进一步实施隔离。Pod 类似于共享名字空间并共享文件系统卷的一组容器。二、POD创建过程​ 第一步​ 客户端提交创建Pod的请求可以通过调用API Server的Rest API接口也可以通过kubectl命令行工具。如kubectl apply -f filename.yaml(资源清单文件)​第二步​ apiserver接收到pod创建请求后会将yaml中的属性信息(metadata)写入etcd。​第三步​ apiserver触发watch机制准备创建pod信息转发给调度器scheduler调度器用一组规则过滤掉不符合要求的主机比如Pod指定了所需要的资源量那么可用资源比Pod需要的资源量少的主机会被过滤掉。调度器使用调度算法选择node调度器将node信息给apiserverapiserver将绑定的node信息写入etcd。​第四步​ apiserver又通过watch机制调用kubelet指定pod信息调用Docker API创建并启动pod内的容器。​第五步​ worker创建完成之后反馈给自身的kubelet, 再反馈给控制器的apiserverapiserver又将pod的状态信息写入etcd。三、Pod资源清单详解3.1 Pod资源清单介绍##查看对象中包含哪些字段 [rootk8s-master01 ~]# kubectl explain pod.spec.containers3.1.1 资源清单必须存在的属性3.1.2 主要对象3.1.3 额外的参数项3.2 POD YAML文件示例# yaml格式的pod定义文件完整内容 apiVersion: v1 #必选版本号例如v1 kind: Pod #必选Pod metadata: #必选元数据 name: string #必选Pod名称 namespace: string #必选Pod所属的命名空间 labels: #自定义标签 name: string #自定义标签名字 annotations: #自定义注释列表 - name: string spec: #必选Pod中容器的详细定义 containers: #必选Pod中容器列表 - name: string #必选容器名称 image: string #必选容器的镜像名称 imagePullPolicy: [Always | Never | IfNotPresent] #获取镜像的策略 Alawys表示下载镜像 IfnotPresent表示优先使用本地镜像否则下载镜像Nerver表示仅使用本地镜像 command: [string] #容器的启动命令列表如不指定使用打包时使用的启动命令 args: [string] #容器的启动命令参数列表 workingDir: string #容器的工作目录 volumeMounts: #挂载到容器内部的存储卷配置 - name: string #引用pod定义的共享存储卷的名称需用volumes[]部分定义的的卷名 mountPath: string #存储卷在容器内mount的绝对路径应少于512字符 readOnly: boolean #是否为只读模式 ports: #需要暴露的端口库号列表 - name: string #端口号名称 containerPort: int #容器需要监听的端口号 hostPort: int #容器所在主机需要监听的端口号默认与Container相同 protocol: string #端口协议支持TCP和UDP默认TCP env: #容器运行前需设置的环境变量列表 - name: string #环境变量名称 value: string #环境变量的值 resources: #资源限制和请求的设置 limits: #资源限制的设置 cpu: string #Cpu的限制单位为core数将用于docker run --cpu-shares参数 memory: string #内存限制单位可以为Mib/Gib将用于docker run --memory参数 requests: #资源请求的设置 cpu: string #Cpu请求容器启动的初始可用数量 memory: string #内存清楚容器启动的初始可用数量 livenessProbe: #对Pod内个容器健康检查的设置当探测无响应几次后将自动重启该容器检查方法有exec、httpGet和tcpSocket对一个容器只需设置其中一种方法即可 exec: #对Pod容器内检查方式设置为exec方式 command: [string] #exec方式需要制定的命令或脚本 httpGet: #对Pod内个容器健康检查方法设置为HttpGet需要制定Path、port path: string port: number host: string scheme: string HttpHeaders: - name: string value: string tcpSocket: #对Pod内个容器健康检查方式设置为tcpSocket方式 port: number initialDelaySeconds: 0 #容器启动完成后首次探测的时间单位为秒 timeoutSeconds: 0 #对容器健康检查探测等待响应的超时时间单位秒默认1秒 periodSeconds: 0 #对容器监控检查的定期探测时间设置单位秒默认10秒一次 successThreshold: 0 failureThreshold: 0 securityContext: privileged: false restartPolicy: [Always | Never | OnFailure]#Pod的重启策略Always表示一旦不管以何种方式终止运行kubelet都将重启OnFailure表示只有Pod以非0退出码退出才重启Nerver表示不再重启该Pod nodeSelector: obeject #设置NodeSelector表示将该Pod调度到包含这个label的node上以keyvalue的格式指定 imagePullSecrets: #Pull镜像时使用的secret名称以keysecretkey格式指定 - name: string hostNetwork: false #是否使用主机网络模式默认为false如果设置为true表示使用宿主机网络 volumes: #在该pod上定义共享存储卷列表 - name: string #共享存储卷名称 volumes类型有很多种 emptyDir: {} #类型为emtyDir的存储卷与Pod同生命周期的一个临时目录。为空值 hostPath: string #类型为hostPath的存储卷表示挂载Pod所在宿主机的目录 path: string #Pod所在宿主机的目录将被用于同期中mount的目录 secret: #类型为secret的存储卷挂载集群与定义的secre对象到容器内部 scretname: string items: - key: string path: string configMap: #类型为configMap的存储卷挂载预定义的configMap对象到容器内部 name: string items: - key: string path: string3.3 标签3.3.1 什么是标签标签其实就一对 key/value 被关联到对象上比如Pod,标签的使用我们倾向于能够表示对象的特殊特点就是一眼就看出了这个Pod是干什么的标签可以用来划分特定的对象比如版本服务类型等标签可以在创建一个对象的时候直接定义也可以在后期随时修改每一个对象可以拥有多个标签但是key值必须是唯一的。创建标签之后也可以方便我们对资源进行分组管理。如果对pod打标签之后就可以使用标签来查看、删除指定的pod。慎重在k8s中大部分资源都可以打标签。3.3.2 给pod资源打标签#对已经存在的pod打标签 [rootk8s-master01 ~]# kubectl label pods pod-first releasev1 #查看标签是否打成功 [rootk8s-master01 ~]# kubectl get pods pod-first --show-labels​3.3.3 查看资源标签#查看默认名称空间下所有pod资源的标签 [rootk8s-master01 ~]# kubectl get pods --show-labels #查看默认名称空间下指定pod具有的所有标签 [rootk8s-master01 ~]# kubectl get pods pod-first --show-labels #列出默认名称空间下标签key是release的pod不显示标签 [rootk8s-master01 ~]# kubectl get pods -l release #列出默认名称空间下标签key是release、值是v1的pod不显示标签 [rootk8s-master01 ~]# kubectl get pods -l releasev1 #列出默认名称空间下标签key是release的所有pod并打印对应的标签值 [rootk8s-master01 ~]# kubectl get pods -L release #查看所有名称空间下的所有pod的标签 [rootk8s-master01 ~]# kubectl get pods --all-namespaces --show-labels3.4 资源限制3.4.1 节点资源不足导致调度失败apiVersion: v1 kind: Pod metadata: name: nginx-pod2 spec: containers: - name: nginx2 image: nginx imagePullPolicy: IfNotPresent resources: limits: cpu: 8 memory: 8Gi requests: cpu: 6 ​ ####状态信息 [rootk8s-master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx-pod 1/1 Running 0 47m nginx-pod2 0/1 Pending 0 4m14s ###排错 [rootk8s-master ~]# kubectl describe pod nginx-pod2 ..... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 4m36s default-scheduler 0/3 nodes are available: 1 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }, 2 Insufficient cpu. preemption: 0/3 nodes are available: 1 Preemption is not helpful for scheduling, 2 No preemption victims found for incoming pod. ​3.4.2 所在命名空间资源不足##创建命名空间并设置资源限制 [rootk8s-master ~]# vim c2409.txt apiVersion: v1 kind: Namespace metadata: name: c2409 --- apiVersion: v1 kind: ResourceQuota metadata: name: mem-cpu-quota namespace: c2409 spec: hard: requests.cpu: 2 requests.memory: 2Gi limits.cpu: 4 limits.memory: 4Gi ###创建pod [rootk8s-master ~]# vim nginx.yaml apiVersion: v1 kind: Pod metadata: name: nginx-pod2 namespace: c2409 spec: containers: - name: nginx2 image: nginx imagePullPolicy: IfNotPresent resources: limits: cpu: 8 memory: 8Gi requests: cpu: 6 memory: 2Gi ​ ​ ##提交后的报错信息 [rootk8s-master ~]# kubectl apply -f nginx.yaml Error from server (Forbidden): error when creating nginx.yaml: pods nginx-pod2 is forbidden: exceeded quota: mem-cpu-quota, requested: limits.cpu8,limits.memory8Gi,requests.cpu6, used: limits.cpu0,limits.memory0,requests.cpu0, limited: limits.cpu4,limits.memory4Gi,requests.cpu2 ​3.5 Pod探针在K8S集群中为了测试pod是否正常运行可以通过kubelet定期对pod进行健康检查从而保证服务正常运行。3.5.1 kubelet检查机制exec 在容器内执行指定命令当返回码为0表示检测成功。在 Kubernetes 1.20 版本之前exec 探针会忽略 timeoutSeconds 探针会无限期地持续运行甚至可能超过所配置的限期直到返回结果为止。httpGet对容器的IP和URL进行HTTP的GET请求当响应码状态码为大于等于200且小于400表示容器正常运行。tcpSocket对容器内的端口或socket进行TCP检查如果端口成功打开证明容器正常运行。3.5.2 探针返回结果Success表示通过检测。Failure表示未通过检测。Unknown表示检测没有正常进行。3.5.3 探针的类型livenessProbe存活探针判断容器是否正常运行。如果存活探测失败那么kubelet就会把老的容器删除然后根据重启策略对容器做操作。如果容器没有存活探针默认状态为Success。readinessProbe就绪探针判断容器的是否就绪。比如应用在启动时可能需要加载大量的数据或配置文件或是启动后要依赖等待外部服务。在这种情况下既不想杀死应用也不想给它发送请求。这个时候就需要用到这个探针。当就绪探测失败端点控制器将从与 Pod匹配的所有服务的端点列表中删除该 Pod 的 IP 地址(如果是用nodeport映射端口到外网这个时候就不能访问网站了但是容器不会被删除)初始延迟之前的就绪态的状态值默认为 Failure。 如果容器不提供就绪态探针则默认状态为 Success。startupProbe启动探针指示容器中的应用是否已经启动。如果提供了启动探针则所有其他探针都会被禁用直到此探针成功为止。如果启动探测失败kubelet 将删除容器而容器依其重启策略进行重启。如果容器没有提供启动探测则默认状态为 Success。注意startupProbe 和 livenessProbe 最大的区别就是startupProbe在探测成功之后就不会继续探测了而livenessProbe在pod的生命周期中一直在探测3.5.4 探针属性initialDelaySeconds: 5初始化延迟时间主要是告诉kubelet容器启动需要的时间当过了这个时间再进行探测要不然容器可能还没启动就会删除了。periodSeconds: 5探测周期间隔时间主要是指定kubelet对容器进行探针的时间周期也就是第一次探测结束后等待多少时间后对容器进行探测。默认值为10秒最小值为1秒。timeoutSeconds: 5单次探测超时时间指定kubelet对容器探测的最大时间超过这个时间证明容器探测失败。默认为1秒最小为1秒。successThreshold: 5探测失败到成功的重试次数当kubelet对某个容器第一次探测失败后重新进行探测的次数比如指定为1那么就会直接将容器删除。如果使用的探针是livenessProbe那么只能配置为1最小值为1次。failureThreshold: 5探测成功到失败的重试次数当kubelet对某个容器进行探测过程中允许失败的次数当用于readinessProbe探针默认是3次最小值为1次。也就是说当3次探测失败后容器会被删除。当用于startupProbe探针如果还设置了periodSeconds时间那么等待容器启动的时间为failureThreshold的时间乘以periodSeconds时间的值在这段时间内容器没有启动那么就会删除容器。3.5.5 livenessProbe探针案例3.5.5.1 livenessProbe和kubelet-exec[rootk8s-master01 ~]# cat /root/nginx/nginx_pod.yaml apiVersion: v1 kind: Pod metadata: name: nginx-pods labels: app: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent livenessProbe: exec: #定义探测方式 command: #不断查看文件是否存在文件必须是镜像原本存在的文件 - cat - /usr/share/nginx/html/index.html initialDelaySeconds: 5 #指定探针多少秒后启动 periodSeconds: 5 #指定探针探测周期时间 [rootk8s-master01 ~]# kubectl apply -f nginx-exec.yml [rootk8s-master01 ~]# kubectl get pod ###进入容器触发探针 [rootk8s-master01 nginx]# kubectl exec -it nginx-pods /bin/bash rootnginx-pods:/usr/share/nginx/html# mv index.html index1.html ###好处看看后发现重启了1次 [rootk8s-master01 ~]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx-pods 1/1 Running 1 (59s ago) 4m15s ##再次进入容器发现文件重建了 [rootk8s-master01 nginx]# kubectl exec -it nginx-pods /bin/bash rootnginx-pods:/usr/share/nginx/html# ls 50x.html index.html3.5.5.2 livenessProbe和kubelet-httpGet[rootk8s-master01 ~]# cat /root/nginx/nginx_pod.yaml apiVersion: v1 kind: Pod metadata: name: nginx-pods labels: app: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent livenessProbe: httpGet: #指定探针探测方式 path: /index.html #定义请求的URL port: 80 #定义GET的端口 initialDelaySeconds: 3 #指定探针多少秒后启动 periodSeconds: 3 #指定探针的探测周期 [rootk8s-master01 ~]# kubectl apply -f nginx-exec.yml [rootk8s-master01 ~]# kubectl get pod ###进入容器触发探针 [rootk8s-master01 nginx]# kubectl exec -it nginx-pods /bin/bash rootnginx-pods:/usr/share/nginx/html# mv index.html index1.html ###好处看看后发现重启了1次 [rootk8s-master01 ~]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx-pods 1/1 Running 1 (59s ago) 4m15s ##再次进入容器发现文件重建了 [rootk8s-master01 nginx]# kubectl exec -it nginx-pods /bin/bash rootnginx-pods:/usr/share/nginx/html# ls 50x.html index.html3.5.5.3 livenessProbe和kubelet-tcpSocket[rootk8s-master01 ~]# vi nginx-tcp.yml ​ apiVersion: v1 kind: Pod metadata: name: nginx2-pods labels: app: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent livenessProbe: tcpSocket: #指定探针探测方式 port: 80 #定义GET的端口 initialDelaySeconds: 3 #指定探针多少秒后启动 periodSeconds: 3 #指定探针的探测周期 ​ ​ [rootk8s-master01 ~]# kubectl apply -f nginx-tcp.yml #创建容器 [rootk8s-master01 ~]# kubectl get pod -A #查看pod ####测试##### [rootk8s-master01 ~]# kubectl exec -it nginx2-pods -- bash #连接容器 ​ sed -i s/listen 80;/listen 8080;/ /etc/nginx/conf.d/default.conf #修改配置文件 ​ server { listen 8080; #把80都改为8080 listen [::]:8080; nginx -s reload #重新加载配置文件 ​ [rootk8s-master01 ~]# kubectl get pod -A #查看pod可以看到RESTARTS证明容器重启过 [rootk8s-master01 ~]# kubectl exec -it nginx2-pods -- bash #连接容器 [rootk8s-master01 ~]# head -n 10 /etc/nginx/conf.d/default.conf #可以看到配置被还原了证明容器重建了 ​3.5.6 readinessProbe探针案例3.5.6.1 readinessProbe和kubelet-exec[rootk8s-master01 ~]# vim nginx-re-exec.yml ​ apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx1 name: nginx namespace: default spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 80 readinessProbe: #指定探针 exec: #指定探针探测方式 command: - cat - /usr/share/nginx/html/index.html initialDelaySeconds: 5 periodSeconds: 5 --- apiVersion: v1 kind: Service metadata: labels: svc: nginx-svc-nodeport name: nginx-svc-nodeport spec: type: NodePort ports: - port: 8000 ##pod的端口 targetPort: 80 ##容器内部暴露的端口 nodePort: 30080 ##对外访问端口 selector: app: nginx ​ [rootk8s-master01 ~]# kubectl apply -f nginx-re-exec.yml #创建容器 [rootk8s-master01 ~]# kubectl get pod -A -o wide #查看容器的创建节点 [rootk8s-master01 ~]# kubectl get svc -o wide #查看service [rootk8s-master01 ~]# kubectl describe svc nginx-svc-nodeport #查看pod和service绑定 [rootk8s-master01 ~]# curl -I http://192.168.116.132:30080 #访问网站成功 ###测试#### [rootk8s-master01 ~]# kubectl get pod -A -o wide 查看容器名字可以看到原本READY是1/1 [rootk8s-master01 ~]# kubectl exec -it nginx-8595754649-jfz9r -- bash 连接容器 # cd /usr/share/nginx/html/ #修改探针指定探测的文件名字让探针触发 #ls #mv index.html index1.html #exit [rootk8s-master01 ~]# kubectl get pod -A -o wide #可以看到READY变成了0/1证明探针被触发了容器没有被删除也没有重建 [rootk8s-master01 ~]# curl -I http://192.168.116.132:30080 #可以看到网站访问不了 [rootk8s-master01 ~]# kubectl describe svc nginx-svc-nodeport #可以看到Endpoints没有值证明探针把service和pod解除绑定了 ###恢复 echo nginx-1 index.html kubectl cp index.html default/nginx-8595754649-jfz9r:/usr/share/nginx/html/3.5.6.2 readinessProbe和kubelet-httpGet[rootk8s-master01 ~]# vim nginx-re-httpGet.yml ​ apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx name: nginx namespace: default spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 80 readinessProbe: #指定探针 httpGet: #指定探针方式 path: /index.html port: 80 initialDelaySeconds: 5 periodSeconds: 5 --- apiVersion: v1 kind: Service metadata: labels: svc: nginx-svc-nodeport name: nginx-svc-nodeport spec: type: NodePort ports: - port: 80 targetPort: 80 nodePort: 30080 selector: app: nginx ​ [rootk8s-master01 ~]# kubectl apply -f nginx-re-httpGet.yml #创建容器 [rootk8s-master01 ~]# curl -I http://192.168.116.132:30080 #和上面一样访问网站成功 [rootk8s-master01 ~]# kubectl get pod -A -o wide #查看容器名字可以看到原本READY是1/1 ###测试#### [rootk8s-master01 ~]# kubectl exec -it nginx-75f8cfd9d-6x8jz -- bash #连接容器 #cd /usr/share/nginx/html/ #修改探针指定探测的文件名字让探针触发 #ls #mv index.html index1.html #exit [rootk8s-master01 ~]# kubectl get pod -A -o wide #可以看到READY变成了0/1证明探针被触发了容器没有被删除也没有重建 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-556bcf764d-7qpjh 0/1 Running 0 29m 172.16.79.76 k8s-worker01 none none ​ [rootk8s-master01 ~]# curl -I http://192.168.116.132:30080 #可以看到网站访问不了 等待5分钟 [rootk8s-master01 ~]# kubectl describe svc nginx-svc-nodeport #可以看到Endpoints没有值证明探针把service和pod解除绑定了 Name: nginx-svc-nodeport Namespace: default Labels: svcnginx-svc-nodeport Annotations: none Selector: appnginx Type: NodePort IP Family Policy: SingleStack IP Families: IPv4 IP: 10.10.166.16 IPs: 10.10.166.16 Port: unset 8000/TCP TargetPort: 80/TCP NodePort: unset 30080/TCP Endpoints: Session Affinity: None External Traffic Policy: Cluster Events: none3.5.6.3 readinessProbe和kubelet-tcpSocket[rootk8s-master01 ~]# vim nginx-re-tcpSocket.yml ​ apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx name: nginx namespace: default spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 80 readinessProbe: #指定探针 tcpSocket: #指定探测方式 port: 80 initialDelaySeconds: 5 periodSeconds: 5 --- apiVersion: v1 kind: Service metadata: labels: svc: nginx-svc-nodeport name: nginx-svc-nodeport spec: type: NodePort ports: - port: 80 targetPort: 80 nodePort: 30080 selector: app: nginx ​ [rootk8s-master01 ~]# kubectl apply -f nginx-re-tcpSocket.yml #创建容器 [rootk8s-master01 ~]# curl -I http://192.168.116.132:30080 #和上面一样访问网站成功 ​ [rootk8s-master01 ~]# kubectl get pod -A #查看pod ####测试#### [rootk8s-master01 ~]# kubectl exec -it nginx-6bf8bf8577-9skvn -- bash #连接容器 ​ #vi /etc/nginx/conf.d/default.conf #修改配置文件 ​ server { listen 8080; #把80都改为8080 listen [::]:8080; #nginx -s reload #重新加载配置文件 ​ [rootk8s-master01 ~]# kubectl get pod -A 可以看到READY变成了0/1证明探针被触发了容器没有被删除也没有重建 [rootk8s-master01 ~]# curl -I http://192.168.116.132:30080 可以看到因为探针触发外网是访问不了容器了 ​就绪探针不会影响pod和pod之间的访问新建测试容器测试[rootk8s-master01 ~]# kubectl run net-test1 --imagealpine sleep 360000 #创建容器 [rootk8s-master01 ~]# kubectl get pod -A -o wide #查看pod的IP [rootk8s-master01 ~]# kubectl exec -it net-test1 -- bash #连接容器 #可以看到只要指定改过的pod的端口pod和pod之间还是可以访问的 #wget http://10.10.1.36:8080 #ls3.5 Pod案例3.5.1 生成YAML文件##生成Pod模版 [rootk8s-master01 nginx]# kubectl run pod --imagenginx --dry-runclient -o yaml my-pod.yaml [rootk8s-master01 ~]# vim /root/nginx/nginx_pod.yaml apiVersion: v1 kind: Pod metadata: name: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 803.5.2 创建Pod[rootk8s-master01 ~]# kubectl apply -f /root/nginx/nginx_pod.yaml五、Pod常用命令命令 作用创建pod kubectl create -f ymal文件查看pod kubectl get pod [-n 名称空间]brkubectl get pod -o wide更新pod kubectl apply -f yaml文件删除pod kubectl delete pod pod名称进入pod中的容器 kubectl exec -it pod名称 -- shell查看pod中容器日志 kubectl logs pod名称 -c 容器名查看pod标签 kubectl get pod pod名称 --show-labels修改pod标签 kubectl label pod pod名称 newkeynewvalue查看标签为app的pod kubectl get pod -l app查看所有名称空间标签为app的pod kubectl get pod -l app --all-namespaces查看标签为app值为myapp的pod kubectl get pod -l appmyappbrkubectl get pod -l appmyapp --all-namespaces查看详细信息 kubectl describe pod pod名称六、Pod状态挂起Pending我们在请求创建pod时条件不满足调度没有完成没有任何一个节点能满足调度条件已经创建了pod但是没有适合它运行的节点叫做挂起调度没有完成处于pending的状态会持续一段时间包括调度Pod的时间和通过网络下载镜像的时间。运行中RunningPod已经绑定到了一个节点上Pod 中所有的容器都已被创建。至少有一个容器正在运行。成功SucceededPod 中的所有容器都被成功终止并且不会再重启。失败FailedPod 中的所有容器都已终止了并且至少有一个容器是因为失败终止。也就是说容器以非0状态退出或者被系统终止。未知Unknown未知状态所谓pod是什么状态是apiserver和运行在pod节点的kubelet进行通信获取状态信息的如果节点之上的kubelet本身出故障那么apiserver就连不上kubelet得不到信息了就会看Unknown6.1 常用的排障命令##查看 Pod 的配置是否正确 [rootk8s-master01 ~]# kubectl get pod pod-name -o yaml ##查看 Pod 的事件 [rootk8s-master01 ~]# kubectl describe pod pod-name ##查看容器日志 [rootk8s-master01 ~]# kubectl logs pod-name [-c container-name] ##进入容器查看 [rootk8s-master01 ~]#kubectl exec -it pod-name -- /bin/bash6.2 常见故障归类Pod状态 一直处于 PendingPending 说明 Pod 还没有调度到某个 Node 上面。可以通过 kubectl describe pod pod-name 命令查看到当前 Pod 的事件进而判断为什么没有调度。可能的原因包括 资源不足集群内所有的 Node 都不满足该 Pod 请求的 CPU、内存、GPU 等资源 HostPort 已被占用通常推荐使用 Service 对外开放服务端口Pod状态 一直处于 Waiting或者Pod状态 一直处于 ContainerCreating首先还是通过 kubectl describe pod pod-name 命令查看到当前 Pod 的事件。可能的原因包括 镜像拉取失败比如配置了镜像错误、Kubelet 无法访问镜像、私有镜像的密钥配置错误、镜像太大拉取超时等 CNI 网络错误一般需要检查 CNI 网络插件的配置比如无法配置 Pod 、无法分配 IP 地址 容器无法启动需要检查是否打包了正确的镜像或者是否配置了正确的容器参数Pod状态 处于 ImagePullBackOff这也是我们测试环境常见的通常是镜像拉取失败。这种情况可以使用 docker pull image 来验证镜像是否可以正常拉取。 或者docker images | grep images查看镜像是否存在系统有时会因为资源问题自动删除一部分镜像Pod状态 处于 CrashLoopBackOffCrashLoopBackOff 状态说明容器曾经启动了但可能又异常退出了。此时可以先查看一下容器的日志 kubectl logs --previous 这里可以发现一些容器退出的原因比如 容器进程退出 健康检查失败退出Pod状态 处于 Error通常处于 Error 状态说明 Pod 启动过程中发生了错误。常见的原因包括 依赖的 ConfigMap、Secret 或者 PV 等不存在 请求的资源超过了管理员设置的限制比如超过了 LimitRange 等 违反集群的安全策略比如违反了 PodSecurityPolicy 等 容器无权操作集群内的资源比如开启 RBAC 后需要为 ServiceAccount 配置角色绑定Pod状态 一直处于 Terminating或者Pod状态 处于 Unknown从 v1.5 开始Kubernetes 不会因为 Node 失联而删除其上正在运行的 Pod而是将其标记为 Terminating 或 Unknown 状态。想要删除这些状态的 Pod 有三种方法 1从集群中删除该 Node。使用公有云时kube-controller-manager 会在 VM 删除后自动删除对应的 Node。而在物理机部署的集群中需要管理员手动删除 Node如 kubectl delete node node-name。 2Node 恢复正常。Kubelet 会重新跟 kube-apiserver 通信确认这些 Pod 的期待状态进而再决定删除或者继续运行这些 Pod。 3用户强制删除。用户可以执行 kubectl delete pods pod --grace-period0 --force 强制删除 Pod。除非明确知道 Pod 的确处于停止状态比如 Node 所在 VM 或物理机已经关机否则不建议使用该方法。 特别是 StatefulSet 管理的 Pod强制删除容易导致脑裂或者数据丢失等问题。Pod状态 处于 EvictedCrashLoopBackOff 容器退出kubelet正在将它重启 InvalidImageName 无法解析镜像名称 ImageInspectError 无法校验镜像 ErrImageNeverPul 策略禁止拉取镜像 ImagePullBackOff 正在重试拉取 RegistryUnavailable 连接不到镜像中心 ErrImagePull 通用的拉取镜像出错 CreateContainerConfigError 不能创建kubelet使用的容器配置 CreateContainerError 创建容器失败 m.internalLifecycle.PreStartContainer 执行hook报错 RunContainerError 启动容器失败 PostStartHookError 执行hook报错 ContainersNotInitialized 容器没有初始化完毕 ContainersNotReady 容器没有准备完毕 ContainerCreating 容器创建中 PodInitializing pod 初始化中 DockerDaemonNotReady docker还没有完全启动 NetworkPluginNotReady 网络插件还没有完全启动 Evicted 即驱赶的意思意思是当节点出现异常时kubernetes将有相应的机制驱赶该节点上的Pod。 多见于资源不足时导致的驱赶。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

怎么在360搜索做网站推广网站建设网络推广方案ppt

打造企业级AI助手:LobeChat插件系统深度使用教程 在今天的企业数字化转型浪潮中,AI不再只是实验室里的前沿技术,而是逐步渗透进客服、办公、运维等真实业务场景的生产力工具。但一个现实问题是:大模型能力虽强,直接调用…

张小明 2026/1/9 8:09:12 网站建设

广州专业网站设计定制网站seo如何优化

伴随着互联网的发展,它已经成为我们生活中不可或缺的存在,无论是个人还是企业,都离不开互联网。正因为互联网得到了重视,网络安全问题也随之加剧,给我们的信息安全造成严重威胁,而想要有效规避这些风险&…

张小明 2026/1/9 23:57:11 网站建设

佛山网页网站设计多少钱ui做套网站多少钱

API 产品生命周期与团队角色解析 1. API 产品生命周期各阶段 API 产品的生命周期包含多个关键阶段,每个阶段都有其独特的任务和重点。 - 发现(Discovery)阶段 :此阶段与发布阶段的发现工作大致相似,但更为精准。在这个阶段,你能更清晰地了解哪些用户社区能带来最大价…

张小明 2026/1/10 0:35:49 网站建设

做视频网站需要哪些条件酒店预订网站模板

PingFangSC字体解决方案:企业级跨平台字体统一架构 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件,包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC 在数字化体验日益重要的今天,字…

张小明 2026/1/9 11:14:08 网站建设

外贸公司手机网站广东网站建设加工

Li, Y., et al. “PointCNN: Convolution On X-Transformed Points.” NeurIPS 2018. 博主导读:   在点云深度学习领域,PointNet 系列通过“对称函数”(Max Pooling)解决了点云无序性的问题,但代价是放弃了传统 CNN …

张小明 2026/1/12 15:25:25 网站建设

网站变移动网站深紫色网站

HCA解码器实战指南:专业处理游戏音频的完整方案 【免费下载链接】HCADecoder HCA Decoder 项目地址: https://gitcode.com/gh_mirrors/hc/HCADecoder HCA解码器是一款专门用于处理游戏音频文件的实用工具,能够将HCA格式的音频高效转换为通用的WAV…

张小明 2026/1/10 15:44:03 网站建设