首页 k8s中的核心概念
文章
取消

k8s中的核心概念

本文将介绍k8s知识体系中,最常见的专业名词以及相关概念

一、Pod

Pod是k8s中最小的逻辑单元,也叫做k8s的原子单元。一个Pod里可以运行多个容器,他们共享UTS命名空间(隔离Hostname和NIS域名)、共享NET命名空间(隔离网络设备、协议栈、端口等)、共享IPC命名空间(隔离进程间通信)。我们可以把Pod理解成豌豆荚,而同一个Pod内的每个容器是一颗颗豌豆。一个Pod内运行多个容器,又叫边车(SideCar)模式。

二、Pod控制器

Pod控制器是Pod启动的一种模板,用来保证在k8s里启动的Pod始终按照人们的预期运行(如副本数、生命周期、健康状态检查等)。k8s提供了众多的Pod控制器,常用的控制器有以下几种:

  • Deployment
  • DaemonSet
  • ReplicaSet
  • StatefulSet
  • Job
  • Cronjob

三、Name–名称

由于k8s内部使用“资源”来定义每一种逻辑概念(或者功能),故每一种“资源”都应该有自己的名称,“资源”有api版本(apiVersion)、类别(kind)、元数据(metadata)、定义清单(spec)、状态(status)等配置信息,而“资源”的名称通常定义在“资源”的元信息里。

四、Namespace–名称空间

随着项目增多、人员增加、集群规模扩大等,需要一种能隔离开k8s内部各种“资源”的方法,这就是名称空间。名称空间可以理解为k8s内部的虚拟集群组。不同的名称空间内的“资源”,名称可以相同,相同名称空间内的同种“资源”,名称不能相同。

合理的使用k8s的名称空间,使得集群管理员能够更好地对交付到k8s里的服务进行分类管理和浏览。查询k8s里特定“资源”要带上相应的名称空间,k8s里默认存在的名称空间有:defaultkube-systemkube-publickube-node-lease(1.13版本加入)。

五、Service–服务

在k8s里,虽然每个Pod都会被分配一个单独的IP地址,但这个IP地址会随着Pod的销毁而消失,Service就是用来解决这个问题的核心概念。一个Service可以看作一组提供相同服务的Pod的对外访问接口,Service作用于哪些Pod是可以通过标签选择器来定义。

六、Ingress

Ingress是k8s集群里工作在OSI网络参考模型下,第7层的应用对外暴露的接口。Service只能进行L4流量调度,表现形式是ip+Port。Ingress则可以调度不同的业务域、不同URL访问路径的业务流量。

本文由作者按照 CC BY 4.0 进行授权

使用kubeadm快速搭建k8s集群

k8s中的核心组件