pod

运行的最小单元,可以一个容器或是几个容器。 ⼀个 Pod 可以包含⼀个或多个紧密关 联的容器它们共享相同的⽹络命名空间IP 地址和存储卷并在同⼀个宿 主机上运⾏。一般一个pod 只运行一个容器。

节点(node)

Node是⼀个运⾏着Kubernetes节点软件的物理机器或虚拟机每个Node 负责运⾏Pod中的容器并由Kubernetes控制平⾯管理 Node是Kubernetes集群中的⼯作节点它实际执⾏应⽤程序⼯作负载并提 供运⾏环境 。

Service (svc)

Service 是将运⾏在⼀个或⼀组 Pod 上的⽹络应⽤程序公开为⽹络服务的 ⽅法。因为pod是容易被创建和销毁的,这就导致pod的ip端口发生变化,因此需要SVC 来对外暴露ip 地址。

分为内部服务和外部服务。 外部服务常用的类型:

  • node:port:在节点上开放一个端口,再将这个端口映射到service 上,这样就可以再节点上访问service了。生产上用域名访问服务器,这就得使用 Ingress (ing)

Ingress (ing)

可以通过Ingress资源来配置不同的转发规则从⽽达到根据不 同的规则设置访问集群内不同的Service所对应的后端Pod。也可以配置域名。也可以配置负载均衡,SSL 证书等。

上图是一个基于 node:prot 的集群架构图,展示上述概念的关联关系。

配置信息和服务分离

配置信息和服务分录,目的是让应用变得“一次构建,到处运行”。为了实现配置信息和服务分离,k8s提供了相关组件,有一些敏感信息还提供了Secret基于base64编码加密的配置文件。

ConfigMap (cm)

⽤来将⾮机密性的数据保存到键值对中使⽤ 时 Pod 可以将其⽤作环境变量命令⾏参数或者存储卷中的配置⽂件。ConfigMap 将你的环境配置信息和容器镜像解耦便于应⽤配置的修改。

Secret

Secret 是⼀种包含少量敏感信息例如密码令牌或密钥的对象 这样的信 息可能会被放在 Pod 规约中或者镜像中。

数据得持久化存储

Volume (vol)

卷Volume⽤于 Pod 内部的数据存储 Pod 容器内部数据是可以共享 的其⽣命周期与所属 Pod ⽣命周期相同。

Deployment(容器副本控制、更新)

Deployment 是⼀种Pod 管理⽅式它可以指挥Kubernetes 如何创建和更 新你部署的应⽤实例创建Deployment。 后Kubernetes master 会将应⽤。 程序调度到集群中的各个节点上⼀般⽤来部署⽆状态应⽤

节点发生故障时,定义管理应用程序的副本数量还可以滚动跟新(优雅停机)。可以看作时pod上的另一层抽象。可以定义多个副本来提高吞吐量,保证高可用。

StatefulSet (sts) (有状态的容器使用)

StatefulSet 是⽤来管理有状态应⽤的⼯作负载 API 对象。 StatefulSet ⽤来管理某 Pod 集合的部署和扩缩 并为这些 Pod 提供持久 存储和持久标识符。

数据库、redis、消息队列等容器使用该服务进行备份,可以提供数据存储和持久标识符。 但是部署比较复杂.

数据库这类服务应该在集群外部署。


Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐