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/

 

posted @   __破  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示