kubernetes-Pod对象
文章目录一. Pod基本概念与存在意义1.1 共享网络一. Pod基本概念与存在意义Pod最小部署单元一组(多个)容器的集合一个Pod中的容器共享网络命名空间Pod是短暂的Pod存在的意义两个应用之间发送文件交互两个应用通过127.0.0.1或者socke通信两个应用需要发送频繁的调用docker 引擎跑的容器里有一个或多个应用Pod 里运行多个容器一个 Pod 里运行的容器可以实现文件共享,网络
·
文章目录
Pod基本概念与存在意义
-
Pod
- 最小部署单元
- 一组(多个)容器的集合
- 一个Pod中的容器共享网络命名空间
- Pod是短暂的
-
Pod存在的意义
- 两个应用之间发送文件交互
- 两个应用通过127.0.0.1或者socke通信
- 两个应用需要发送频繁的调用
docker 引擎跑的容器里有一个或多个应用
Pod 里运行多个容器
一个 Pod 里运行的容器可以实现文件共享,网络共享 ,提高性能
1.1 共享网络
- 多个容器在一个命名空间中
namespace 与 cgroups
k8s默认使用docker 做容器引擎,而docker 使用 namespace 做隔离,权限控制,namespace 是linux内核的一种特性,为虚拟化而生,而 cgroups 是用于资源控制的
实例
查看一个已有的pods的yaml配置文件
kubectl get pods
kubectl get pods nginx-86c57db685-47gpt -o yaml > nginx.yaml
vim nginx.yaml
根据此配置文件修改新建一个配置文件,在一个pod里面放两个容器,然后构建
apiVersion: v1
kind: Pod
metadata:
labels:
app: test-pod
name: test-pod
namespace: default
spec:
containers:
- image: nginx
name: nginx
image: nginx
- image: tomcat
name: tomcat
image: tomcat
两个容器
kubectl get pod -o wide

两个容器在一个pod里,网络协议栈也是相同的
1.2 共享文件
因为docker设计初衷就是为了独立运行应用,其实容器之间的共享文件就是用的 docker数据卷实现
数据卷在k8s集群存在的意义是,如果一个pod挂了,那么k8s会在另一个node节点上启这个pod,而数据卷也会挂进新的node节点上,保证业务持续运行。
apiVersion: v1
kind: Pod
metadata:
name: test-pod2
spec:
containers:
- name: write
image: centos:latest
imagePullPolicy: IfNotPresent
command: ["bash","-c","for i in {1..100};do echo $i >> /data/hello;sleep 1;done"]
volumeMounts:
- name: data
mountPath: /data
- name: read
image: centos:latest
imagePullPolicy: IfNotPresent
command: ["bash","-c","tail -f /data/hello"]
volumeMounts: #具体挂载到容器的位置
- name: data
mountPath: /data
volumes: #指定挂载卷的类型及路径
- name: data
emptyDir: {} #临时存储类型,pod删除时也会清除
两个容器挂载一个 data目录,一个写,一个读,两个容器都有一样的数据,这代表一个pod中可以通过数据卷的方式实现共享。
kubectl get pod
kubectl get pod -o wide
kubectl exec -it test-pod2 -c read /bin/bash

更多推荐
所有评论(0)