JAVA全系列 教程
3762个小节阅读:7094.4k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Pod是k8s集群能够调度的最小单元。Pod是一个或多个容器的组合,这些容器共享存储、网络和命名空间,以及如何运行的规范。
pod概念
什么是Pod
Pod是在Kubernetes中创建和管理的、最小的可部署的计算单元。
Pod是一组由单个或多个容器组成,这些容器共享网络和存储资源,以及如何运行这些容器的声明。Pod 中的容器总是并置(co-located)的并且一同调度,在共享的上下文中运行。
Pod的共享上下文包括一组Linux名字空间、控制组(cgroup)和可能一些其他的隔离方面,即用来隔离容器的技术。在Pod的上下文中,每个独立的应用会进一步实施隔离。
Pod 类似于共享名字空间并共享文件系统卷的一组容器。
创建Pod
下面的Pod示例由一个运行nginx:1.14.2的容器组成。
xxxxxxxxxx
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
要创建上面显示的 Pod,需运行下面的命令:
xxxxxxxxxx
kubectl apply -f simple-pod.yaml
Pod的生命周期
Pod遵循预定义的生命周期,起始于 Pending
阶段, 如果至少其中有一个主要容器正常启动,则进入 Running
,之后取决于 Pod 中是否有容器以失败状态结束而进入 Succeeded
或者 Failed
阶段。
和docker中的容器一样,Pod 也是相对临时性的实体。 Pod 会被创建、赋予一个唯一的 ID(UID),并被调度到节点,并在终止(根据重启策略)或删除之前一直运行在该节点。
如果一个节点宕机了,调度到该节点的Pod也被计划在给定超时期限结束后删除。
Pod的状态如下表所示:
取值 | 描述 |
---|---|
Pending | Pod 已被 K8s 系统接受,但有一个或者多个容器尚未创建亦未运行。 此阶段包括等待 Pod 被调度的时间和通过网络下载镜像的时间。 |
Running | Pod 已经绑定到了某个节点,Pod 中所有的容器都已被创建。 至少有一个容器仍在运行,或者正处于启动或重启状态。 |
Succeeded | Pod 中的所有容器都已成功终止,并且不会再重启。 |
Failed | Pod 中的所有容器都已终止,并且至少有一个容器是因为失败终止。 也就是说,容器以非 0 状态退出或者被系统终止。 |
Unknown | 因为某些原因无法取得 Pod 的状态。这种情况通常是因为与 Pod 所在主机通信失败。 |
Pod结构图例
查看Pod详细状况
xxxxxxxxxx
[root@k8s-master ~]#kubectl describe pod nginx
Name: nginx
Namespace: default
Priority: 0
Node: k8s-node1/192.168.139.134
Start Time: Tue, 10 Jan 2030 11:26:12 +0800
Labels: <none>
Annotations: cni.projectcalico.org/podIP: 10.244.36.72/32
cni.projectcalico.org/podIPs: 10.244.36.72/32
Status: Running
IP: 10.244.36.72
IPs:
IP: 10.244.36.72
Containers:
nginx:
Container ID: docker://763c2c961847c42d15b2f13922a44fff011f155729c9fe8151a4e662ee7417ef
Image: nginx:1.14.2
Image ID: docker-pullable://nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
Port: 80/TCP
Host Port: 0/TCP
State: Running
Started: Tue, 10 Jan 2030 11:27:07 +0800
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-ql6rm (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
kube-api-access-ql6rm:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events: <none>
实时效果反馈
1. 关于Pod说法错误的是?
A Pod是K8s管理和调度的最小单位
B Pod它是一个或多个容器的组合
C Pod由master节点创建,并且运行在node节点上
D 每个Pod都会被指派一个IP,Pod中的容器可以和宿主机进行通信
答案
1=>C