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/

 

posted @ 2022-11-01 09:44  __破  阅读(67)  评论(0)    收藏  举报