kubernetes的pod
kubernetes的pod
Pod是kubernetes集群能够调度的最小单元。Pod是容器的封装 。
在Kubernetes集群中,Pod是所有业务类型的基础,也是K8S管理的最小单位级,它是一个或多个 容器的组合。
这些容器共享存储、网络和命名空间,以及如何运行的规范。在Pod中,所有容器都被同 一安排和调度,并运行在共享的上下文中。
对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务 相关的多个应用容器。
pod有两个必须知道的特点。
网络:每一个Pod都会被指派一个唯一的Ip地址,在Pod中的每一个容器共享网络命名空间,包括Ip地址 和网络端口。
在同一个Pod中的容器可以和localhost进行互相通信。
当Pod中的容器需要与Pod外的实 体进行通信时,则需要通过端口等共享的网络资源。
存储:Pod能够被指定共享存储卷的集合,在Pod中所有的容器能够访问共享存储卷,允许这些容器共享 数据。
存储卷也允许在一个Pod持久化数据,以防止其中的容器需要被重启。
Pod重启
在Pod中的容器可能会由于异常等原因导致其终止退出,Kubernetes提供了重启策略以重启容器。重启 策略对同一个Pod的所有容器起作用,容器的重启由Node上的kubelet执行。Pod支持三种重启策略, 在配置文件中通过restartPolicy字段设置重启策略:
1. Always:只要退出就会重启。
2. OnFailure:只有在失败退出(exit code不等于0)时,才会重启。
3. Never:只要退出,就不再重启
注意,这里的重启是指在Pod的宿主Node上进行本地重启,而不是调度到其它Node上。
2.1查看Pod
查看default命名空间下的pods
1 | kubectl get pods |
查看default命名空间下的pods
1 | kubectl get pods -n default |
查看所有命名空间下的pods
1 | kubectl get pod --all-namespaces |
2.2创建Pod
K8S集群的每一个节点都需要下载镜像:选择不同的基础镜像,下载镜像的大小也不同。
1 | docker pull tomcat: 9.0 . 20 -jre8-alpine |
在default命名空间中创建一个pod副本的deployment
1 | kubectl run tomcat9-test --image=tomcat: 9.0 . 20 -jre8-alpine --port= 8080 |
1 | kubectl get pod |
1 | kubectl get pod -o wide |
使用pod的IP访问容器
1 | curl 172.17 . 0.5 : 8080 |
2.3扩容
将副本扩容至3个
1 | kubectl scale --replicas= 3 deployment/tomcat9-test |
1 2 | kubectl get deployment kubectl get deployment -o wide |
2.4创建服务
1 | kubectl expose deployment tomcat9-test --name=tomcat9-svc --port= 8888 --target-port= 8080 --protocol=TCP --type=NodePort |
1 | kubectl get svc |
1 | kubectl get svc -o wide |
访问集群外端口
http://106.13.9.110:30846/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY