您的位置:首页 > 健康 > 美食 > 天津网站建设优选企业_最新任免名单最新_迅雷bt磁力链 最好用的搜索引擎_爱站网怎么用

天津网站建设优选企业_最新任免名单最新_迅雷bt磁力链 最好用的搜索引擎_爱站网怎么用

2024/12/23 2:12:12 来源:https://blog.csdn.net/zhangshenglu1/article/details/144089742  浏览:    关键词:天津网站建设优选企业_最新任免名单最新_迅雷bt磁力链 最好用的搜索引擎_爱站网怎么用
天津网站建设优选企业_最新任免名单最新_迅雷bt磁力链 最好用的搜索引擎_爱站网怎么用

3.1 使用命令创建Pod(v1.18版本变化)

  • 在 Kubernetes v1.18 之前,kubectl run 命令用于创建 Deployment 控制器。
  • 从 v1.18 版本开始,kubectl run 命令改为用于创建 Pod。

3.1.1 创建名为 pod-nginx 的 Pod

[root@k8s-master1 ~]# kubectl run nginx1 --image=nginx:1.15-alpine
pod/nginx1 created

3.1.2 验证 Pod 创建

[root@k8s-master1 ~]# kubectl get pods
NAME             READY   STATUS    RESTARTS   AGE
nginx1           1/1     Running   0          41s

3.2 使用 YAML 文件创建 Pod

3.2.1 准备 YAML 文件

[root@k8s-master1 ~]# vim pod1.yml
apiVersion: v1                                  # API 版本
kind: Pod                                        # 资源类型为 Pod
metadata:name: pod-stress                              # 自定义 Pod 的名称
spec:containers:                                    # 定义 Pod 中包含的容器- name: c1                                     # 自定义容器名称image: polinux/stress                        # 启动容器的镜像名command: ["stress"]                          # 自定义启动容器时执行的命令(类似 Dockerfile 中的 CMD)args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"]  # 自定义启动容器执行的命令参数imagePullPolicy: IfNotPresent
# polinux/stress 镜像用于压力测试,启动容器时通过传递命令和参数来指定容器运行的压力

3.2.2 通过 YAML 文件创建 Pod

[root@k8s-master1 ~]# kubectl apply -f pod1.yml
pod/pod-stress created

3.2.3 查看 Pod 信息

查看 Pod 状态:

[root@k8s-master1 ~]# kubectl get pod
NAME          READY   STATUS    RESTARTS   AGE
pod-stress    1/1     Running   0          45s

查看 Pod 详细信息:

[root@k8s-master1 ~]# kubectl get pods -o wide
NAME         READY   STATUS    RESTARTS   AGE   IP              NODE          NOMINATED NODE   READINESS GATES
pod-stress   1/1     Running   0          71s   10.244.194.72   k8s-worker1   <none>           <none>

查看 Pod 描述信息:

[root@k8s-master1 ~]# kubectl describe pod pod-stress 
......
Events:Type    Reason     Age   From               Message----    ------     ----  ----               -------Normal  Scheduled  102s  default-scheduler  Successfully assigned default/pod-stress to k8s-worker1Normal  Pulling    102s  kubelet            Pulling image "polinux/stress"Normal  Pulled     83s   kubelet            Successfully pulled image "polinux/stress" in 18.944533343sNormal  Created    83s   kubelet            Created container c1Normal  Started    82s   kubelet            Started container c1

3.3 删除 Pod

3.3.1 删除单个 Pod

方法 1:直接通过 Pod 名称删除

[root@k8s-master1 ~]# kubectl delete pod pod-stress
pod "pod-stress" deleted

方法 2:通过 YAML 文件删除

[root@k8s-master1 ~]# kubectl delete -f pod1.yml

3.3.2 删除多个 Pod

方法 1:列出多个 Pod 名称

[root@k8s-master1 ~]# kubectl delete pod pod名1 pod名2 pod名3 ......

方法 2:通过 awk 过滤出要删除的 Pod 名称,然后使用 xargs 删除

[root@k8s-master1 ~]# kubectl get pods | awk 'NR>1 {print $1}' | xargs kubectl delete pod

方法 3:如果 Pod 都在同一非默认命名空间下,可以直接删除命名空间

[root@k8s-master1 ~]# kubectl delete ns xxxx

3.4 镜像拉取策略

imagePullPolicy 参数控制:

  • Always:无论本地是否有镜像,都从仓库拉取镜像。
  • Never:从不从仓库拉取镜像,只使用本地镜像,本地没有则不启动。
  • IfNotPresent:如果本地存在镜像则直接使用,若不存在才从仓库拉取。

默认策略:

  • 如果镜像标签为 latest,则默认策略为 Always
  • 如果指定了特定版本,则默认策略为 IfNotPresent

示例:查看镜像拉取策略

删除并重新创建 Pod,并使用 describe 命令查看事件信息:

[root@k8s-master1 ~]# kubectl apply -f pod1.yml
[root@k8s-master1 ~]# kubectl delete -f pod1.yml
[root@k8s-master1 ~]# kubectl describe pod pod-stress
......
Events:Type    Reason     Age   From               Message----    ------     ----  ----               -------Normal  Scheduled  102s  default-scheduler  Successfully assigned default/pod-stress to k8s-worker1Normal  Pulling    102s  kubelet            Pulling image "polinux/stress"Normal  Pulled     83s   kubelet            Successfully pulled image "polinux/stress" in 18.944533343sNormal  Created    83s   kubelet            Created container c1Normal  Started    82s   kubelet            Started container c1

说明: 如果第二行信息显示 pulling image,表示镜像是从仓库拉取的。

如果修改 imagePullPolicyIfNotPresent 后,镜像已存在则不会再次拉取:

[root@k8s-master1 ~]# vim pod1.yml
apiVersion: v1
kind: Pod
metadata:name: pod-stressnamespace: default
spec:containers:- name: c1image: polinux/stresscommand: ["stress"]args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"]imagePullPolicy: IfNotPresent  # 添加了这一行

再次删除并创建 Pod:

[root@k8s-master1 ~]# kubectl describe pod pod-stress
......
Events:Type    Reason     Age   From               Message----    ------     ----  ----               -------Normal  Scheduled  17s   default-scheduler  Successfully assigned default/pod-stress to k8s-worker1Normal  Pulled     17s   kubelet            Container image "polinux/stress" already present on machineNormal  Created    17s   kubelet            Created container c1Normal  Started    17s   kubelet            Started container c1

说明: 第二行信息显示 Container image "polinux/stress" already present on machine,表示镜像已存在,本地直接使用。

3.5 Pod 标签

  • 为 Pod 设置标签(label),用于控制器通过标签与 Pod 进行关联。
  • 标签的操作方式与 Node 标签类似。

3.5.1 通过命令管理 Pod 标签

  1. 查看 Pod 的标签
[root@k8s-master1 ~]# kubectl get pods --show-labels
NAME          READY   STATUS    RESTARTS   AGE   LABELS
pod-stress     1/1    Running   0          7m25s   <none>
  1. 为 Pod 打标签并查看
[root@k8s-master1 ~]# kubectl label pod pod-stress region=huanai zone=A env=test bussiness=game
pod/pod-stress labeled[root@k8s-master1 ~]# kubectl get pods --show-labels
NAME          READY   STATUS    RESTARTS   AGE     LABELS
pod-stress    1/1     Running   0          8m54s   bussiness=game,env=test,region=huanai,zone=A
  1. 通过标签查询 Pod
  • 根据标签等值查询:
[root@k8s-master1 ~]# kubectl get pods -l env=test
NAME          READY   STATUS    RESTARTS   AGE   LABELS
pod-stress    1/1     Running   0          13m   bussiness=game,env=test,region=huanai,zone=A
  • 查询并删除符合标签条件的 Pod
[root@k8s-master1 ~]# kubectl delete pods -l env=test

小结:

  • pod的label与node的label操作方式几乎相同
  • node的label用于pod调度到指定label的node节点
  • pod的label用于controller关联控制的pod

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com