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

 查看是否删除

删除成功

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐