pod和容器(容易混淆的地方)
在Kubenetes中,所有的容器均在 pod 中运行,一个pod可以承载一个或者多个相关的docker容器(或rkt,以及用户自定义容器),同一个Pod中的容器可以部署在同一个物理机器(可以叫宿主机)上并且能够共享资源。一个Pod也可以包含多个磁盘卷组(volumes),这些卷组将会以目录的形式提供给一个容器,或者被所有Pod中的容器共享,对于用户创建的每个Pod,系统会自动选择那个健康并且有足够容量的机器,然后创建类似容器的容器,当容器创建失败的时候,容器会被node agent自动的重启,这个node agent叫kubelet,但是,如果是Pod失败或者机器,它不会自动的转移并且启动,除非用户定义了 replication controller。
pod是k8s集群管理的最小单元,但是容器包含在pod中,一个pod中有一个pause容器和若干个业务容器,而容器就是单独的一个容器,简而言之,pod是一组容器+pause容器构成,而容器单指一个容器。 所以我们在说pod的时候不能说pod容器怎么怎么样之类的说法。
k8s是管理整个集群中的所有pod,包括调度pod,删除pod,更新pod等。
一、POD(是k8s的核心,各种应用都基本以pod和yaml来进行管理)
Kubernetes 使用 Pod 来管理容器,即用master来进行管理, 每个 Pod 可以包含一个或多个紧密关联的业务容器。一对多的关系。
而pod是部署到node节点上的或者master也可以设置可以部署pod, 假设部署到了node节点上, node节点上必然有docker, 我们可以通过docker命令进入容器
也可以在 master上通过执行 kubectl exec -it mdp-cc-85fd974f8c-slcwk -n default -- /bin/bash 这样的命令进入pod 查看内部情况。
容器是一种便携式、轻量级的操作系统级虚拟化技术,容器化不定是采用docker,但是这里我说的都是docker方式。它使用 NameSpace 隔离不同的软件运行环境,并通过镜像自包含软件的运行环境,从而使得容器可以很方便的在任何地方运行。由于容器体积小且启动快,因此可以在每个容器镜像中打包一个应用程序。是一对一关系。
二、Node(pod载体)
Node节点是 Pod 真正运行的宿主机,可以是物理机,也可以是虚拟机
为了管理 Pod,每个 Node 节点上至少要安装docker 、安装kubelet(二进制是hyperkube) ,同时需要操作系统支持,centos6就对docker支持不好
三、Namespace(可以理解为隔离资源或者应用)
Namespace 是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或用户组。常见的 pods, services, replication controllers 和 deployments 等都是属于某一个 namespace 的(默认是 default),我们开发的时候不同项目可以设置不同的 namespace,同时用k8s dashboard 令牌方式管理,而 node, persistentVolumes 等则不属于任何 namespace
四、Service(对外提供服务)
Service 是应用服务的抽象,说白点就是nginx配置域名,指向集群master中暴露出来的端口,这个端口实际就是我们暴露的服务, labels 为应用提供负载均衡和服务发现机制。
匹配 labels 的 Pod IP 和端口列表组成 endpoints,由 kube-proxy 负责将服务 IP 负载均衡到这些 endpoints 上。
五、网络通讯方式
我们考虑一下K8s集群中docker容器之间是如何通讯的?
我们这里我们有几种pod的情况
1)在同一个POD上容器通信.
2)同一个Node,不同POD.
3)不同Node,不同POD.
1) 同一个POD上Container通信
在k8s中每个Pod中管理着一组Docker容器,既然是一组就是多个,每个docker容器,通过docker ps 查看都有一个容器id,
例如在node上
[root@ht5 calico]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8da13e0e551d e76b1866726d "/bin/sh -c 'java ${…" 16 hours ago Up 16 hours k8s_config-server-node_config-server-node-0_default_b0978e90-8f36-11ec-b44a-060eb4000e9d_0 370e764c4422 k8s.gcr.io/pause-amd64:3.0 "/pause" 16 hours ago Up 16 hours
这组Docker容器共享同一个网络命名空间,Pod中的每个Docker容器拥有与Pod相同的IP和port地址空间,并且由于他们在同一个网络命名空间,他们之间可以通过localhost相互访问。
如果我们想看某个pod里面部署了几个容器,我们可以通过 kubectl get pods mypodname -o jsonpath={.spec.containers[*].name} 命令查看。
在master上执行:
[root@fpNet-web-38 ~]# kubectl get pods stp-node-0 -o jsonpath={.spec.containers[*].name}
stp-node
pod和容器(容易混淆的地方)的更多相关文章
- this、new,容易混淆的地方
this.new,容易混淆的地方 情况1 关系 情况2 new Foo() 等价于,推荐的写法是new Foo() new Foo new Foo() 不一样 Foo(), Foo()这种情况下,构造 ...
- 从零开始入门 K8s| 详解 Pod 及容器设计模式
作者|张磊 阿里云容器平台高级技术专家,CNCF 官方大使 一.为什么需要 Pod 容器的基本概念 我们知道 Pod 是 Kubernetes 项目里面一个非常重要的概念,也是非常重要的一个原子调度单 ...
- Kubernetes笔记(五):了解Pod(容器组)
Kubernetes 中, 容器总是以 Pod(容器组)的方式进行调度与运行.因此对 Pod 的理解与掌握是学习 Kubernetes 的基础. 理解 Pod Pod(容器组)是 Kubernetes ...
- Pod和容器的LimitRange原理和实践总结
一.背景介绍 通常情况下,Pod中的容器可以无限制的使用节点上的CPU和内存资源,在共享资源和资源有限的情况下,若不加以限制,某个集群或命名空间的资源可能会消耗殆尽,导致其他节点上优先级低的Pod发生 ...
- 第4 章 : 理解 Pod 和容器设计模式
理解Pod和容器设计模式 本文整理自 CNCF 和阿里巴巴联合举办的云原生技术公开课的课时 4:理解 Pod 和容器设计模式.本次课程中,阿阿里巴巴高级技术专家.CNCF 官方大使张磊为大家介绍了为什 ...
- 为什么我们需要Pod?(容器设计模式sidecar)
Pod,是 Kubernetes 项目中最小的 API 对象 容器的本质是进程,就是未来云计算系统中的进程:容器镜像就是这个系统里的".exe"安装包 Kubernetes 就是操 ...
- LSTM容易混淆的地方
1 如果只是学习怎么用LSTM,那么可以这么理解LSTM LSTM可以看成一个仓库,而这个仓库有三个门卫,他们的功能分别是 遗忘门.决定什么样的物品需要从仓库中丢弃. 输入门.决定输入的什么物品用来存 ...
- (转)Kubernetes 配置Pod和容器(十七) 使用Secrets管理安全证书
转:https://www.jianshu.com/p/530b3642c642 本章节展示了如何把密码秘钥等敏感数据安全的注入到Pod里面. 转换安全数据成base-64表示 假设你有两个秘密数据: ...
- Kubernetes Pod中容器的Liveness、Readiness和Startup探针
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 探针的作用 在Kubernetes的容器生命周期管理中,有三种探针,首先要知道,这探针是属于容器的,而不是Pod: 存 ...
随机推荐
- 2022年官网下安装Elasticsearch最全版与官网查阅方法(8.1.0最新安装)
目录 一.环境整合(需要提前装好) 构建工具(参考工具部署方式) 二.官方下载Elasticsearch部署安装 1.百度搜索"Elasticsearch",或者访问官网https ...
- java的https的get请求
package com.wl.webservice; import java.io.InputStream; import java.net.HttpURLConnection; import jav ...
- python练习册 每天一个小程序 第0006题
1 # -*-coding:utf-8-*- 2 __author__ = 'Deen' 3 ''' 4 题目描述: 5 你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都 ...
- Golang之框架篇-Windows环境bee工具运行beego
bee工具简介及好处 bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 你可以很容易的进行 beego 项目的创建.热编译.开发.测试.和部署. 强烈推荐新手或J ...
- 【Spring AOP】暴力打通两个切面之间的通信
场景描述 在秒杀微服务中,笔者在需要各种校验前端传来的参数后,通过 Redis 加锁限流(切面A)并返回,最后封装订单数据推送到 RabbitMQ 消息队列(切面B)做善后工作. 问题:如何将 切面 ...
- mysql innodb事务的ACID及其实现的保证机制
MySQL事务的ACID,一致性是最终目的.保证一致性的措施有:A原子性:靠undo log来保证(异常或执行失败后进行回滚).D持久性:靠redo log来保证(保证当MySQL宕机或停电后,可以通 ...
- Kafka 都有哪些特点?
高吞吐量.低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作. ...
- redis 是什么?都有哪些使用场景?
一.什么是redis 首先要说redis,应该先说一下nosql,NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL",泛指非关系型的数据库.随着互联网 ...
- Vue Avoided redundant navigation to current location Error
这个报错的根源就是vue-router组件,错误内容翻译一下是: Avoided redundant navigation to current location === 避免冗余导航到当前位置 这个 ...
- 数据仓库(5)数仓Kimball与Inmon架构的对比
数据仓库主要有四种架构,Kimball的DW/BI架构.独立数据集市架构.辐射状企业信息工厂Inmon架构.混合Inmon与Kimball架构.不过不管是那种架构,基本上都会使用到维度建模. < ...