副本:每个 Pod 表示运行给定应用程序的单个实例。如果希望横向扩展应用程序(例如,运行多个实例),则应该使用多个 Pod,每个应用实例使用一个 Pod ,这种相同的Pod应用实例就是副本。通常使用一个称为控制器的抽象来创建和管理一组副本 Pod。
Pod 具有 初始容器 和 应用容器。初始容器会在启动应用容器之前运行并完成
初始容器(init Pod):应用容器运行前必须先运行完成的一个或多个初始化容器。
初始化容器必须在应用容器启动前运行完成。
初始化容器的运行顺序:一个初始化容器必须在下一个初始化容器开始前运行完成。
指定容器为 Init 容器,需要在 Pod 的 spec 中添加 initContainers 字段
应用容器:相对初始化容器而言,是在pod中运行工作的容器
Pod 为其组成容器提供了两种共享资源:网络和存储
网络:每个 Pod 分配一个唯一的 IP 地址。 Pod 中的每个容器共享网络命名空间,包括 IP 地址和网络端口。 Pod 内的容器 可以使用 localhost 互相通信。 当 Pod 中的容器与 Pod 之外 的实体通信时,它们必须协调如何使用共享的网络资源(例如端口)
存储:一个 Pod 可以指定一组共享存储卷。 Pod 中的所有容器都可以访问共享卷,允许这些容器共享数据。 卷还允许 Pod 中的持久数据保留下来,以防其中的容器需要重新启动。
Pod 管理
创建Pod应用
命令式的方式
[kubeadm@node1 pod]$ kubectl run nginx --image=nginx --replicas=3 --record
# run 创建一个pod 名称为nginx 使用镜像nginx 副本数为3#--record 命令方式最好添加,可以记录命令内容
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/nginx created
[kubeadm@node1 pod]$ kubectl get pod
#显示pod内容
NAME READY STATUS RESTARTS AGE
nginx-6db489d4b7-5q92j 1/1 Running 0 8s
nginx-6db489d4b7-vmc2p 1/1 Running 0 8s
nginx-6db489d4b7-w4nlx 1/1 Running 0 8s
[kubeadm@node1 po