K8S之pod
本文主要讲述了k8s中pod的相关知识以及如何创建一个pod
·
pod定义
在Kubernetes中,管理、创建、计划的最小单元是Pod。一个Pod是一个容器环境下的“逻辑主机”,它可能包含一个或者多个紧密相连的应用,也就是一个pod可以封装一个或者多个容器。如果把pod看作一个虚拟机,则每个容器相当于运行在虚拟机的进程。
Pod 是有IP地址的,每个 pod 都被分配唯一的 IP 地址,它们的IP地址是依靠网络插件分配的。Pod的中的容器均使用相同的网络命名空间及端口,并且可以通过localhost发现并沟通其他容器。
自主式pod
自主式pod直接使用pod类型创建pod,下面我们尝试创建一个自主式pod。
首先创建一个tomcat.yaml文件
apiVersion: v1
kind: Pod
metadata:
name: tomcat-test
labels:
app: tomcat
spec:
containers:
- name: tomcat
ports:
- containerPort: 8080
image: tomcat
使用如下指令创建pod
kubectl apply -f tomcat.yaml
查看pod是否建立成功
kubectl get pods -o wide -l app=tomcat
查看pod具体信息
kubectl describe pod tomcat-test
一般来说我们并不使用自主式pod,因为如果我们由于意外不小心把pod删除了,就是真的删除了,是不会自动创建一个新的pod的,这种情况会产生很大的风险,所以我们一般采用的都是控制器管理的pod。
删除pod
kubectl delete pods tomcat-test
pod被彻底删除
控制器管理的pod
K8S常见的有五种控制器:Deployment、StatefulSet、DaemonSet、Job、CronJob,分别对应处理无状态应用、有状态应用、守护型应用和批处理应用。
下面创建通过Deployment管理的Pod。
首先创建一个nginx.yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx-deploy
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
创建pod
kubectl apply -f nginx.yaml
查看是否创建成功
kubectl get deploy -l app=nginx-deploy
查看pod
kubectl get pods -o wide -l app=nginx
尝试删除pod
kubectl delete pods nginx-deployment-74d589986c-2jpzl
发现重新创建了一个pod
kubectl get pods -o wide -l app=nginx
使用控制器的pod直接删除是会自动创建的,所以如果要删除的话需要删除deployment
kubectl delete deployment nginx-deployment
查看是否删除
删除成功
更多推荐
已为社区贡献1条内容
所有评论(0)