Kuberneter 之 Pod

Kuberneter 之 Pod


Pod是kubernetes中你可以創建和部署的最小也是最簡的單位。Pod代表著集群中運行的進程。

Pod中封裝著應用的容器(有的情況下是好幾個容器),存儲、獨立的網絡IP,管理容器如何運行的策略選項。Pod代表著部署的一個單位:kubernetes中應用的一個實例,可能由一個或者多個容器組合在一起共享資源。


Docker是kubernetes中最常用的容器運行時,但是Pod也支持其他容器運行時。

在Kubernetes集群中Pod有如下兩種使用方式:

  • 一個Pod中運行一個容器。“每個Pod中一個容器”的模式是最常見的用法;在這種使用方式中,你可以把Pod想象成是單個容器的封裝,kuberentes管理的是Pod而不是直接管理容器。
  • 在一個Pod中同時運行多個容器。一個Pod中也可以同時封裝幾個需要緊密耦合互相協作的容器,它們之間共享資源。這些在同一個Pod中的容器可以互相協作成為一個service單位——一個容器共享文件,另一個“sidecar”容器來更新這些文件。Pod將這些容器的存儲資源作為一個實體來管理。

Kubernetes Blog 有關於Pod用例的詳細信息,查看:

  • The Distributed System Toolkit: Patterns for Composite Containers
  • Container Design Patterns

每個Pod都是應用的一個實例。如果你想平行擴展應用的話(運行多個實例),你應該運行多個Pod,每個Pod都是一個應用實例。在Kubernetes中,這通常被稱為replication。


Kuberneter 之 Pod


[root@kbs1 yml]# cat jianpod.yml

apiVersion: v1

kind: Pod

metadata:

name: jian-pod-mariadb

labels:

name: mariadb-label

env: test

spec:

containers:

- name: mysql-jian-image

image: 192.168.135.199:5000/mysql_jian_v2

imagePullPolicy: Never

ports:

- containerPort: 666


查看標籤

[root@kbs1 yml]# kubectl get pods --show-labels

NAME READY STATUS RESTARTS AGE LABELS

jian-pod-mariadb 1/1 Running 0 6s env=test,name=mariadb-label

[root@kbs1 yml]# kubectl get pod

NAME READY STATUS RESTARTS AGE

jian-pod-mariadb 1/1 Running 0 23s

[root@kbs1 yml]# kubectl get pod -L name,env

NAME READY STATUS RESTARTS AGE NAME ENV

jian-pod-mariadb 1/1 Running 0 38s mariadb-label test


根據標籤查找pod

[root@kbs1 yml]# kubectl get pod -l name=mariadb-label

NAME READY STATUS RESTARTS AGE

jian-pod-mariadb 1/1 Running 0 3m19s

查看具有name標籤的pod

[root@kbs1 yml]# kubectl get pod -l name

NAME READY STATUS RESTARTS AGE

jian-pod-mariadb 1/1 Running 0 5m26s

查看沒有name標籤的pod

[root@kbs1 yml]# kubectl get pod -l '!name'

No resources found.


Kuberneter 之 Pod


分享到:


相關文章: