阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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

评论

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

听说,清华毕业大牛分享出Redis实战视频及文档,共2.3G

小二,上酒上酒

Java redis 学习路线

【CSPO认证】12月17-18日在线周末班 | 全国招生

ShineScrum捷行

产品负责人 CSPO认证 CSPO

膜拜!华为18级工程师用349页构建高可用Linux服务器,其实并不难

小二,上酒上酒

Java Linux 学习 华为 运维

前端培训学习的前景怎么样

小谷哥

支持向量机-线性SVM决策过程的可视化

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

荣耀MagicOS 7.0正式发布!打造以人为中心的智慧生活解决方案

荣耀开发者服务平台

手机 系统 安卓 荣耀 honor

WOS新商业操作系统:中国头部SaaS的一次进阶

ToB行业头条

前端培训机构需要注意什么?

小谷哥

年薪120W的架构师简历你见过吗?java程序员该如何达到?

小二,上酒上酒

学习 架构 简历规划

解读 K8s Pod 的 13 种异常

阿里巴巴云原生

阿里云 Kubernetes 云原生

AirServer2023个人免费版本下载

茶色酒

AirServer2023

有位大牛终于把珍藏多年的算法视频给分享出来了,总共3.81G

小二,上酒上酒

算法 数据结构与算法 左程云

三面阿里,被Java面试官虐哭!现场还原真实的“被虐”场景

小二,上酒上酒

面试题 面经 大厂面试 春招

终于有阿里大牛把困扰我多年的计算机组成原理:网络通信讲明白了

小二,上酒上酒

计算机 计算机原理 TCP协议

The camera application scenrios on Wallys DR40X9 ipq4019/ipq4029 industrial 5g router

wallysSK

IPQ4019 ipq4029

python的标准库与扩展库中对象的导入与使用

乔乔

11月月更

java培训学习有什么好的方法

小谷哥

存算一体 VS 存算分离 ,IT发展下的技术迭代

StoneDB

数据库 开源 存算分离 HTAP StoneDB

终于学完阿里架构师推荐413页微服务分布式架构基础与实战笔记

小二,上酒上酒

Java 面试 分布式 微服务

传统客服中心向“互联网+”转型的关键点——帮助中心

Baklib

Baklib|如何做好知识库网页?

Baklib

Camtasia2023全新版下载及功能介绍讲解

茶色酒

Camtasia2023

前端培训程序员失业后就业方向有哪些

小谷哥

干货 | 带你了解 EMC—— 什么是 EMC?

元器件秋姐

电磁兼容 元器件电商 华秋商城 电子工程师 电子科普

敏捷开发四个会议如何正确召开?

PingCode研发中心

敏捷开发

OpenSergo & ShardingSphere 社区共建微服务视角的数据库治理标准

阿里巴巴云原生

阿里云 云原生 开源微服务 OpenSergo

Baklib帮助中心|如何设置好客户服务帮助您的客户?

Baklib

大数据培训后找不到工作的原因有哪些?

小谷哥

从发现问题到创造价值 数据智能如何助力商家双11高质量增长?

阿里技术

数据分析 智能数据

完全解析分布式存储,带你了解HDFS的块

好程序员IT教育

hdfs 分布式

Gartner 2023 年十大技术趋势,资料汇总(官方PDF & 直播实况)

填空时光

Gartner Gartner预测 gartner电子书 咨询

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