ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

kubernetes-Pod对象

2021-09-13 18:03:08  阅读:104  来源: 互联网

标签:容器 name kubernetes 对象 nginx Pod data pod


文章目录

Pod基本概念与存在意义

  • Pod

    • 最小部署单元
    • 一组(多个)容器的集合
    • 一个Pod中的容器共享网络命名空间
    • Pod是短暂的
  • Pod存在的意义

    • 两个应用之间发送文件交互
    • 两个应用通过127.0.0.1或者socke通信
    • 两个应用需要发送频繁的调用

docker 引擎跑的容器里有一个或多个应用
Pod 里运行多个容器
一个 Pod 里运行的容器可以实现文件共享,网络共享 ,提高性能

1.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

在这里插入图片描述

标签:容器,name,kubernetes,对象,nginx,Pod,data,pod
来源: https://blog.csdn.net/qq_38626043/article/details/120252255

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有