前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes 重要概念

Kubernetes 重要概念

原创
作者头像
奶盖
修改2021-12-09 17:59:56
5520
修改2021-12-09 17:59:56
举报
文章被收录于专栏:奶盖笔记奶盖笔记

K8S 部署reids 集群,nocos集群,rocketMQ 集群等需要理解的重要概念

ConfigMap

ConfigMap的使用

Pod可以通过三种方式来使用ConfigMap,分别为:

将ConfigMap中的数据设置为环境变量

将ConfigMap中的数据设置为命令行参数

使用Volume将ConfigMap作为文件或目录挂载

将创建的ConfigMap直接挂载至Pod的/etc/config目录下,其中每一个key-value键值对都会生成一个文件,key为文件名,value为内容。

StatefulSet 状态集

StatefulSet 用来管理某 Pod 集合的部署和扩缩, 并为这些 Pod 提供持久存储和持久标识符。

StatefulSets 对于需要满足以下一个或多个需求的应用程序很有价值:

稳定的、唯一的网络标识符。

稳定的、持久的存储。

有序的、优雅的部署和缩放。

有序的、自动的滚动更新。

部署和扩缩保证

对于包含 N 个 副本的 StatefulSet,当部署 Pod 时,它们是依次创建的,顺序为 0..N-1。

当删除 Pod 时,它们是逆序终止的,顺序为 N-1..0。

在将缩放操作应用到 Pod 之前,它前面的所有 Pod 必须是 Running 和 Ready 状态。

在 Pod 终止之前,所有的继任者必须完全关闭。

无头服务(Headless Services)

有时不需要或不想要负载均衡,以及单独的 Service IP。

分布式服务部署在k8s环境,由于运行在每个pod中的服务要知晓这个分布式集群中其它的服务节点ip或者dns名称。而statefulset给其管理的pod提供了稳定的网络标识符(例如pod名字和主机名),通过headless service为每一个pod提供了固定的dns名称,很好的解决了这个问题。

组合主机名的格式为$(StatefulSet 名称)-$(序号)。 上例将会创建三个名称分别为 web-0、web-1、web-2 的 Pod。 StatefulSet 可以使用 无头服务 控制它的 Pod 的网络域。管理域的这个服务的格式为: $(service服务名称).$(命名空间).svc.cluster.local,其中 cluster.local 是集群域。 一旦每个 Pod 创建成功,就会得到一个匹配的 DNS 子域,格式为: $(pod 名称(pod主机名)).$(所属服务的 DNS 域名),其中所属服务由 StatefulSet 的 serviceName 域来设定。

1.k8s为service资源分配了DNS名称,通过DNS名称可以访问到service对用的pod。而通过statefulset创建的pod,并依赖service headless能实现给statefulset管理的pod提供固定的DNS名称pod-name.service-headless-name.namespace.svc.cluster-domain.example(kafka-0.kafka-headless.test-env.svc.cluster.local 进入pod 执行nslookup 可查看) 优点:适合有状态服务之间互相通信 缺点:需要先创建一个service headless

2.deployment或通过service暴露出来的 DaemonSet所创建的Pod会有如下DNS名称可用pod-ip-address.deployment-name.my-namespace.svc.cluster-domain.example, 优点:简单 缺点:pod重启之后,ip是重新自动获取,不是pod的唯一标识,故DNS名称会变。

DNS概念

概括的说DNS是计算机域名 (Domain Name System)的缩写,它是由解析器和域名 服务器 组成的。 域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。

问题:如何 pod 的dns 配置

Service/Pod的DNS

卷的核心是一个目录,其中可能存有数据,Pod 中的容器可以访问该目录中的数据。 所采用的特定的卷类型将决定该目录如何形成的、使用何种介质保存数据以及目录中存放 的内容。

使用卷时, 在 .spec.volumes 字段中设置为 Pod 提供的卷,并在 .spec.containers[*].volumeMounts 字段中声明卷在容器中的挂载位置。

注意 Pod 的配置文件指定了 PersistentVolumeClaim,但没有指定 PersistentVolume。 对 Pod 而言,PersistentVolumeClaim 就是一个存储卷

持久卷

持久卷(PersistentVolume,PV)是集群中的一块存储,可以由管理员事先供应,或者 使用存储类(Storage Class)来动态供应。

持久卷申领

持久卷申领(PersistentVolumeClaim,PVC)表达的是用户对存储的请求

集群管理员需要能够提供不同性质的 PersistentVolume,并且这些 PV 卷之间的差别不 仅限于卷大小和访问模式,同时又不能将卷是如何实现的这些细节暴露给用户。 为了满足这类需求,就有了 存储类(StorageClass) 资源。

K8S中各个不同端口示意图

pod亲和性和反亲和性

k8s之pod亲和性与反亲和性的topologyKey - Bazingafeng 的个人博客

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ConfigMap
  • StatefulSet 状态集
  • 无头服务(Headless Services)
  • DNS概念
  • Service/Pod的DNS
  • 持久卷
  • 持久卷申领
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档