热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

云原生技术kubernetes调度单位pod的使用详解

这篇文章主要介绍了云原生技术kubernetes调度单位pod的使用详解,帮助大家更好的理解和学习使用K8S,感兴趣的朋友可以了解下

k8s中的最小调度单位---pod

     之前的文章中,我们对k8s能够解决的问题做了简单介绍,简单来说,它解决的问题是容器的编排与调度,它的核心价值在于:运行在大规模集群的任务之间,实际上存在着各种各样的关系,这些关系的处理,才是任务编排和系统管理最困难的地方,k8s就是为了这个问题而生的。

      这句话比较难理解,我们从已有的知识入手,抽丝剥茧,慢慢理解它。我们已经知道,容器的本质是一个进程,它包含三个部分:

如果说容器是云环境的一个进程,那么你可以将k8s理解成云环境中的一个操作系统。

    在一个操作系统当中,进程并不总是孤立运行的,往往是通过一个进程组的方式运行的。实际部署应用的时候,我们的应用往往不是以孤立的形式跑在docker容器中的,应用之间存在这样那样的关系,有的时候,他们必须跑在同一台机器上,并且相互访问,类似于捆绑式的,例如:如果两个容器之间要发生之间的文件交换、需要共享某些Linux Namespace等场景。这种关系我们称之为"超亲密关系"。

     基于上面的这个前提,k8s在设计之初,就考虑了这一点,所以它在设计的时候,并不是以容器为最小的调度单位的,而是以pod这个新的概念作为k8s的最小调度单位,而每一个pod中可以包含多个容器,这样,就实现了部署在容器中的应用程序之间就实现了捆绑,也就是他们永远只能被部署在一台机器上,要么部署成功,要么失败,不可能出现一种中间状态。

Pod和容器的关系?

   需要注意的是,Pod是一个逻辑上的概念,它的本质是一组共享了某些资源的容器。确切的说,同一个pod里面的容器,共享了相同的network namespace,当然,还可以共享挂载卷等资源。

    所谓的共享,并不是依赖,而是对等。

    假如我们有A、B两个容器,如果A依赖B,那么A的启动顺序一定在B之后。如果A、B的地位对等,那么A、B的启动顺序将没有严格要求,这才是真正的共享。那么谁来预先创建被共享的network资源呢?

   在Pod中,如果包含了多个应用容器,是需要一个infra容器,将这些应用容器给关联起来的。类似于下面这样:

在K8S中,infra容器占用了极少的资源,它只运行了一个叫pause的镜像,所以也被称为pause容器,它占用的磁盘大小在100~200kb之间。infra的存在是为了创建network namespace,然后应用容器A和应用容器B就可以加入到这个   network namespace中了。

对于 Pod 里的容器 A 和容器 B 来说:
1、它们可以直接使用 localhost 进行通信;
2、它们看到的网络设备跟 Infra 容器看到的完全一样;
3、一个 Pod 只有一个 IP 地址,也就是这个 Pod 的 Network Namespace 对应的 IP 地址;
4、当然,其他的所有网络资源,都是一个 Pod 一份,并且被该 Pod 中的所有容器共享;
5、Pod 的生命周期只跟 Infra 容器一致,而与容器 A 和 B 无关
6、对于同一个 Pod 里面的所有用户容器来说,它们的进出流量,也可以认为都是通过 Infra 容器完成的

    在这种设计模式下,挂载相同的Volume卷就很容易了,只需要在Pod的初始化yaml文件中配置volume参数即可,具体内容后续会专门分享。

     对于容器来说,一个容器只能管理一个进程,而不是一个应用。我们在进行应用上云迁移的时候,需要将应用若干个进程,然后去考虑应用模块之间是否具有"超亲密关系",拥有超亲密关系的进程可以部署在一个Pod中,其他的进程部署在另外的Pod中,用这个思路去拆分应用,才符合容器设计的初衷。

以上就是云原生技术kubernetes调度单位pod的使用详解的详细内容,更多关于kubernetes调度单位pod的使用的资料请关注其它相关文章!


推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 随着我司的应用都开始容器化,相应的ETL流程也需要迁移到容器中。常规的SQL和shell脚本迁移之后执行基本没有问题,主要的问题在于数据接入使用kettle的场景下,kettle启 ... [详细]
  • systemd-nspawn可以创建最轻量级的容器(ns的意思就是namespace),本文的实验平台是Ubuntu16.04,x86_64机器。本文的目的是:在Ubuntu中用syst ... [详细]
  • 本文主要介绍关于linux文件描述符设置,centos7设置文件句柄数,centos7查看进程数的知识点,对【Linux之进程数和句柄数】和【linux句柄数含义】有兴趣的朋友可以看下由【东城绝神】投 ... [详细]
  • k8s进阶之搭建私有镜像仓库
    企业级私有镜像仓 ... [详细]
  • php docker隔离,docker可以隔离资源吗
    docker可以隔离资源。docker容器的本质是宿主机上的一个进程。Docker通过namespace实现了资源隔离,通过cgroups实现了资源限制, ... [详细]
  • Docker安装Rabbitmq(配合宝塔)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Docker安装Rabbitmq(配合宝塔)相关的知识,希望对你有一定的参考价值。一、事前准备 ... [详细]
  • 2019我的金三银四
    先讲一下自己的情况吧,二本学生,17年毕业,目前在一家跨境电商从事Java技术开发工作(不是阿里,没那么厉害),技术栈目前偏向于容器云、持续集成持续交付这一块,也就是SpringBoot、Kuber ... [详细]
  • docker+k8s+git+jenkins
    docker+k8s+git+jenkins,Go语言社区,Golang程序员人脉社 ... [详细]
  • k8shelm官网:https:helm.sh点击charts:https:artifacthub.iopackagessearch?sortrelevance&page11.1h ... [详细]
  • kubelet配置cni插件_Kubernetes新近kubectl及CNI漏洞修复,Rancher 2.2.1发布
    今天,Kubernetes发布了一系列补丁版本,修复新近发现的两个安全漏洞CVE-2019-1002101(kubectlcp命令安全漏洞)和CVE-2 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Docker下Prometheus和Grafana三部曲之一:极速体验
    开源监控工具Prometheus目前广为使用,配合Grafana即可直观展现监控数据,但对于初学者来说搭建这样一个系统要花费些时间,或者有 ... [详细]
author-avatar
uka9032934
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有