基于k3s集群学习Pod基础概念
2022-12-19 10:30:14

Pod

Pod 是包含一个或多个容器的容器组,是 Kubernetes 中创建和管理的最小对象。
一个pod里可以存在多个容器,pod中的容器共享存储卷和ip地址。
Pod 有以下特点:

  • Pod是kubernetes中最小的调度单位****(原子单元,Kubernetes直接管理Pod而不是容器。
  • 同一个Pod中的容器总是会被自动安排到集群中的同一节点(物理机或虚拟机)上,并且一起调度
  • Pod可以理解为运行特定应用的“逻辑主机”,这些容器共享存储、网络和配置声明(如资源限制)。
  • 每个 Pod 有唯一的 IP 地址。 IP地址分配给Pod,在同一个 Pod 内,所有容器共享一个 IP 地址和端口空间,Pod 内的容器可以使用localhost互相通信

创建Pod

1.第一种方法直接通过命令行创建

1
kubectl run mynginx --image=nginx  #mynginx pod的名称 --image指定pod中的容器镜像

2.第二种方法通过yaml文件创建
yaml文件示例:

1
2
3
4
5
6
7
8
9
10
apiVersion: v1
kind: Pod #类型 pod
metadata:
name: nginx # pod名称
spec:
containers: # pod中的容器 是个数组 可以包含多个容器
- name: nginx #容器名称
image: nginx:1.14.2 #容器镜像
ports:
- containerPort: 80 #容器端口

执行创建pod命令

1
kubectl apply -f nginx.yaml

管理Pod

  • 查看pod
    1
    2
    3
    4
    5
    kubectl get pod  #查看默认命名空间下的pod
    NAME READY STATUS RESTARTS AGE
    nginx-deployment-79b458c974-6drv6 1/1 Running 0 12h
    nginx-deployment-79b458c974-l4b6s 1/1 Running 0 10h
    nginx-deployment-79b458c974-4jbn2 1/1 Running 0 5h36m
  • 查看描述
    1
    kubectl describe pod mynginx #mynginx pod的name
  • 查看pod的运行日志
    1
    kubectl logs mynginx #mynginx pod的name
  • 显示pod的ip和运行节点信息
    1
    kubectl get pod -owide
  • 使用Pod的ip+pod里面运行容器的端口
    1
    curl http://ip:80
  • 进入指定的pod
    1
    kubectl exec mynginx -it -- /bin/bash #myginx pod的name 
  • 观察pod
    1
    kubectl get po --watch
  • 删除pod
    1
    2
    kubectl delete pod mynginx #myginx pod的name 
    kubectl delete pod mynginx --force