QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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:086266

评论

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

《使用Gin框架构建分布式应用》阅读笔记:p212-p233

codists

golang gin 编程人 codists

Apache Calcite System Catalog 实现探究

端小强

Calcite

taobao.item_get_desc API返回值中的促销信息与活动标签探究

代码忍者

API 接口 pinduoduo API

酒店管理系统(源码+文档+部署+讲解)

深圳亥时科技

RTE2024:聚焦Gen AI 时代的 RTE,声网发布 RTE+AI 能力全景图

ToB行业头条

HarmonyOS NEXT开发实战:打造高效上拉刷新与下拉加载组件(一)空页面的设计与实现

王二蛋和他的张大花

鸿蒙

LLMs 入门实战系列大全:LLMs应用、领域大模型介绍、大模型常见面经汇总

汀丶人工智能

苹果电脑可以玩英雄联盟吗?macbook能玩lol?

阿拉灯神丁

游戏 #Mac 苹果电脑 CrossOver Mac下载 CrossOver 24

大势所趋,数字化转型是企业活下去的必选项

禅道项目管理

团队管理 数字化转型 企业管理 项目管理软件 数字化转型咨询

融云IM信息托管服务,用户资料、好友关系、群组信息全覆盖

融云 RongCloud

数字身份发展趋势前瞻:零信任

芯盾时代

数字身份 iam 零信任 统一身份管理平台

鸿蒙OS模块化开发实战:独立路由与解耦策略

王二蛋和他的张大花

鸿蒙

鸿蒙OS高级技巧:打造个性化动态Swiper效果

王二蛋和他的张大花

鸿蒙

CDN节点的作用及加速原理解析

HUODUNYUN

CDN CDN加速 CDN技术 CDN带宽

实时渲染什么意思?实时渲染与一般渲染的区别

3DCAT实时渲染

云渲染 实时渲染 实时云渲染 3D实时渲染

3DCAT亮相2024中国国际消费电子博览会,引领AI潮流

3DCAT实时渲染

AIGC解决方案 XR实时云渲染

降本60% ,阿里云 EMR StarRocks 全新发布存算分离版本

阿里云大数据AI技术

大数据 Serverless StarRocks 弹性伸缩 EMR

Parallels Desktop 19 for Mac(PD19虚拟机)一键激活版

Rose

鸿蒙OS开发秘籍:打造优雅的登录状态管理系统

王二蛋和他的张大花

鸿蒙

HarmonyOS NEXT开发实战:实现高效下拉刷新与上拉加载组件(二)刷新核心逻辑与空页面集成

王二蛋和他的张大花

鸿蒙

机器学习、基础算法、python常见面试题必知必答系列大全:(面试问题持续更新)

汀丶人工智能

人工智能

AI Market全球首创“反向期权”——引领智能金融新时代,重塑全球交易格局!

科技热闻

物资管理系统(源码+文档+部署+讲解)

深圳亥时科技

初学者指南:API 设计的核心步骤与方法

爱吃小舅的鱼

API 设计

如何选择合适的工程项目管理系统?9款详解

爱吃小舅的鱼

工程项目管理系统

如何让Nginx更安全?

江南一点雨

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