写点什么

Kubernetes 的核心概念讲解

  • 2019-08-13
  • 本文字数:2147 字

    阅读完需:约 7 分钟

Kubernetes的核心概念讲解

入门 Kubernetes 是非常困难的,因为这会涉及到许多的概念和新理念,本文以图文并茂的形式总结了 Kubernetes 中的核心概念。


它本不必如此困难?

掌握 Kubernetes 是非常困难的,因为互联网上有如此多的信息,有时候很难找到理解 Kubernetes 的“核心”信息,当我们看到kubernetes.io站点上概念页面和文档如此密集时更会如此。在本文中,我们将会探索 Kubernetes 的核心概念,以便于获取关于它的基础知识,这样我们就可以一起揭开 Kubernetes 的神秘面纱。

什么是 Kubernetes?

Kubernetes 提供了基础设置和构造,帮助我们的团队构建适用于开发和部署的可用平台。用户可以通过图形化的用户界面以及命令式和声明式命令行接口管理 Kubernetes 集群,Kubernetes 旨在管理容器化应用程序和服务的整个生命周期。


借助 Kubernetes,我们可以扩展和收缩应用程序、执行滚动部署并管理由哪些服务处理特定的请求。它还提供了一个可扩展的开发框架,允许我们的团队扩展核心的 Kubernetes 原语(primitive)以满足个性化的需求。同时,它还支持创建自己的概念。


但是,与大多数框架一样,它的缺点之一是缺少许多现成的功能,无法被视为交钥匙(turn-key)解决方案。在标准发行版中,它不包含服务如何相互通信的方法(甚至不包含网络组件!),因此存在其他的发行版,另外我们也可以构建自己的版本。

容器

容器是独立、可执行的软件,它包含了运行所需的所有内容,比如代码、库和所有的外部依赖。它会确保运行的内容是完全相同的,即便是位于不同的环境中也是如此。这是通过将要运行的代码与它的运行上下文隔离开实现的。


在 Linux 中,这是通过使用名为 cgroups 的 API 来分割 Linux 内核的一个子集来实现的。这种方式提供了与操作系统的高度隔离,但不会带来像虚拟化环境(如 VMWare、KVM 等)那样的性能损耗。


Pod

pod 是 Kubernetes 中最基本的对象。


pod 是容器的集合,它们共享存储和网络,并且具备如何运行它们的规范。每个 pod 会分配自己的 IP 地址。pod 中的容器会共享这个 IP 地址、端口空间,并且能够使用 localhost 实现彼此查找。


pod 应该被视为短暂存活的原子单元。


Replicaset

根据给定的模板,replicaset 可以运行 n 个 pod。


replicaset 并不会直接使用,但是需要理解这种资源,因为在 Kubernetes 构建应用的时候,它是基础的构建块。


(按照指令)replicaset 可以按需扩展和收缩 pod 的数量。


Service

因为 pod 是短期存活的(replicaset 通过扩展和收缩 pod 的数量实现这一点),那么这就带来了一个问题,现在,除非使用非常复杂的逻辑,否则我们几乎不可能引用单个 pod 以便于跟踪拓扑结构的变化。


Service 通过在 pod 之上提供抽象来解决这个问题,它提供了一个可寻址的方法来与 pod 进行通信。


Service 操作的是 OSI 模型之中的“第 4 层”(IP 之上的 TCP/UDP)。


Deployment

Deployment 管理 replicaset,可以在应用的不同版本间执行滚动更新。


这是最常用的资源类型,它通过一个接口提供了对 replicaset 和 pod 的抽象。



在更新 Deployment 的时候,换句话说,也就是部署应用的新版本,Deployment 控制器会创建一个新的 replicaset,并管理新版本替换旧版本的滚动更新。



在 Kubernetes 1.11 版本中,Deployment 目前不会自动处理回滚。

ConfigMap

设计良好的应用应该遵循十二要素应用宣言,应用的配置应该保存到“环境”中。尽管现在通用的安全实践指出,在环境中存储配置可能会导致私密的意外泄漏,因为一些应用程序在失败时会暴露了它们的环境信息,但是无论如何,如果配置随环境(开发、staging、生产)而变化的话,那么就应该将它们与要构建的应用分开进行存储。


ConfigMaps 允许将配置文件作为环境变量或文件系统挂载到 Pod 中,从而解决了这个问题。


Secret

Secret 与 ConfigMap 非常类似,顾名思义,它们对应的是“Secret”信息。


Daemonset

Daemonset 会确保所有的节点都运行特定的 Pod。如果要在所有节点上运行像日志代理(如 fluentd)这样的内容的话,这是非常有用的。


它还能够通过使用 Taints 忽略特定的节点。


Ingress

在大多数情况下,Service 和 Pod 的 IP 地址只能在 Kubernetes 集群中进行访问。Service 是与互联网流量隔离的。


“Ingress 是一组规则集合,它允许入站的连接访问集群 Service。”



它可以用于负载平衡、终止 TLS、为外部提供可路由的 URL 等等。Ingress 只是另外一种 Kubernetes 资源,但是,在大多数情况下,它需要有一个 Ingress 控制器,如 Nginx 或 Træfik 等。


Kubernetes 是一个自动化容器编排平台,能够允许应用程序在大型平台上大规模运行,这些平台可以包含不同处理器体系结构和操作系统的组合,这完全由实现者决定。


借助这些核心概念,Kubernetes 可以将 Pod 安排到适当的节点上,以确保 Pod 的最大密度,这会由 Kubernetes 实现的多种算法来控制,比如 Bin Packing,从而实现更高的硬件利用率。


参考资料:


[1] https://medium.com/google-cloud/kubernetes-configmaps-and-secrets-68d061f7ab5b


[2] https://medium.com/google-cloud/kubernetes-configmaps-and-secrets-part-2-3dc37111f0dc


[3] https://kubernetes.io/docs/concepts/configuration/secret/


[4] https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/


本文最初发表于云原生计算基金会官方博客,由 InfoQ 中文站翻译分享。


2019-08-13 09:086322

评论

发布
暂无评论
发现更多内容

从React源码来学hooks是不是更香呢

goClient1992

React

从React源码分析看useEffect

goClient1992

React

一线大厂为什么面试必问分布式?

钟奕礼

Java 程序员 java面试 java编程

在一次又一次的失败中,我总结了这份万字的《MySQL性能调优笔记》

钟奕礼

Java 程序员 java面试 java编程

购物季订单多管理难?用WeLink轻松搞定

科技怪授

WeLink&SKG,让年轻人爱上养生

i生活i科技

基于云原生的火山引擎边缘云应用与实践

火山引擎边缘云

分布式 云原生 边缘计算 节点 火山引擎边缘计算

SEAL 0.3 正式发布:国内首个全链路软件供应链安全管理平台

SEAL安全

安全 全链路 软件供应链 SEAL

【JUC】交换器Exchanger详解

JAVA旭阳

Java JUC

华为云发布《基于MetaTown构建数字资产平台》

爱尚科技

星环科技数据中台解决方案,助力某政府机构建设新型智慧城市

星环科技

火山引擎DataTester揭秘:字节如何用A/B测试,解决增长问题的?

字节跳动数据平台

大数据 AB testing实战 12 月 PK 榜

结合RocketMQ 源码,带你了解并发编程的三大神器

华为云开发者联盟

RocketMQ 开发 华为云 12 月 PK 榜

译文 | A poor man's API

API7.ai 技术团队

API APISIX RESTful API

刘德华在线演唱会,火山引擎边缘云助力打造极致视频直播体验

火山引擎边缘云

云原生 边缘计算 节点 火山引擎边缘计算

大数据培训程序员工作前景如何

小谷哥

前端培训学习程序员如何提高解决问题的能力

小谷哥

大数据培训学习程序员还好找吗

小谷哥

iOS 查找字符串出现的范围

刿刀

ios swift

从React源码角度看useCallback,useMemo,useContext

goClient1992

React

技术内幕 | 阿里云EMR StarRocks 极速数据湖分析

StarRocks

#数据库

国内主流商业智能BI工具剖析

流量猫猫头

大数据

【11.25-12.02】写作社区优秀技术博文回顾

InfoQ写作社区官方

热门活动

WeLink助力中建西南院成功举办数字赋能培训

i生活i科技

BSN-DDC基础网络DDC SDK详细设计(七):数据解析

BSN研习社

BSN-DDC

解读数仓中的数据对象及相关关系

华为云开发者联盟

数据库 后端 华为云 数据对象 12 月 PK 榜

云原生应用的最小特权原则

HummerCloud

k8s rbac 云原生安全

华为云发布《高可用网站架构云化解决方案》

爱尚科技

雾霾对户外LED显示屏的考验

Dylan

LED LED显示屏 户外LED显示屏

一张「有想法」的表单,玩出线上填表新花样

爱科技的水月

三翼鸟,用两年开启下一个十年

脑极体

Kubernetes的核心概念讲解_语言 & 开发_Tom Gallacher_InfoQ精选文章