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
kubectl get pods

查看default命名空间下的pods
kubectl get pods -n default

查看所有命名空间下的pods
kubectl get pod --all-namespaces

2.2创建Pod
K8S集群的每一个节点都需要下载镜像:选择不同的基础镜像,下载镜像的大小也不同。
docker pull tomcat:9.0.20-jre8-alpine

在default命名空间中创建一个pod副本的deployment
kubectl run tomcat9-test --image=tomcat:9.0.20-jre8-alpine --port=8080
![]()
kubectl get pod

kubectl get pod -o wide

使用pod的IP访问容器
curl 172.17.0.5:8080

2.3扩容
将副本扩容至3个
kubectl scale --replicas=3 deployment/tomcat9-test
kubectl get deployment kubectl get deployment -o wide

2.4创建服务
kubectl expose deployment tomcat9-test --name=tomcat9-svc --port=8888 --target-port=8080 --protocol=TCP --type=NodePort

kubectl get svc
kubectl get svc -o wide

访问集群外端口
http://106.13.9.110:30846/

浙公网安备 33010602011771号