云原生之路04之Kubernetes持久化数据卷管理和网络与服务管理

举报
孙小北 发表于 2021/06/16 16:10:08 2021/06/16
【摘要】 云原生之路04之Kubernetes持久化数据卷管理 第六章 Kubernetes持久化数据卷管理应用是为了某项特殊的任务而编写的程序程序是由算法和数据组成的在生产环境中,除了一些无状态应用外,还有一部分应用需要将结果数据(即,状态)缓存下来(有状态),并永久的记录在存储中,以供后续使用有状态应用具有的能力:(1)计算维度(2)存储维度(3)网络维度 StatefulSet介绍基于社区对现...

云原生之路04之Kubernetes持久化数据卷管理

第六章 Kubernetes持久化数据卷管理

  • 应用是为了某项特殊的任务而编写的程序
  • 程序是由算法和数据组成的
  • 在生产环境中,除了一些无状态应用外,还有一部分应用需要将结果数据(即,状态)缓存下来(有状态),并永久的记录在存储中,以供后续使用
  • 有状态应用具有的能力:(1)计算维度(2)存储维度(3)网络维度

StatefulSet介绍

  • 基于社区对现有状态应用的通用需求,k8s设计了一种有状态应用对象,即:statefulset

  • 它可以为用户提供一组具有稳定,有序,唯一特性的应用实例集合

    • (1)稳定:稳定的podName,稳定的网络标识,稳定的存储关系
    • (2)有序:按照编号从小到大顺序的部署,按照编号从大到小进行删除,支持有序的扩缩容和升级策略
    • (3)唯一:每一个pod拥有一个唯一的网络标识。
  • 与deployment通过replicasetl来管理pod生命周期不同,statefulset是直接管理pod的。

PV/PVC/SC介绍

  • PersistentVolume:简称pv,持久化存储,是k8s为云原生应用提供一种拥有独立生命周期的,用户可管理的存储的抽象设计。
  • PersistentVolumeClaim:简称pvc,持久化存储声明,是k8s为解耦云原生应用和数据存储而设计的,通过pvc可以让资源管控更细更灵活,应用模板更通用。
  • StorageClass:简称sc,存储类,是k8s平台为存储提供商提供存储接入的一种声明。通过sc和相应的存储插件(csi)为容器应用提供持久存储卷的能力。
    image.png

有状态应用和持久化存储的最佳实践

image.png

动手实践部分(天气预报实验)

第七章 Kubernetes网络与服务管理

  • K8S 工作负载部署应用服务,需要通过Service 或 Ingress 暴漏给其他服务或外部用户

K8S Service

  • k8s Service的定义:一个Pod的逻辑分组,一种可以访问它们的策略,通常称为微服务。
  • 这组Pod能够被Service访问到,通常是通过Label Selector实现的。
  • ClusterIP:k8s集群内部虚拟服务IP,由kube-proxy实现。
  • Endpoints:k8s资源对象Service实际服务后端的集合,手动创建或Endpoints controller自动生成。
    image.png

Service类型

  • (1) Services without selectors
    image.png

  • (2) Headless Service

    • 通过指定Cluster IP(spec.clusterIP)的值为”None”来创建Headless Service,它不会分配Cluster IP,kube-proxy不会处理该类service,可通过域名解析直接访问backend pod一跳直达,具体实现取决于DNS实现。
    • Headless Service应用场景:(1)自主选择权,client可以自己来决定使用哪个Real Server,可以通过查询DNS来获取Real Server的信息。(2)Headless Service对应的每一个Endpoints,即每一个Pod,都会有对应的DNS域名,方便Pod之间的互相访问。

发布服务——服务类型

  • ClusterIP:通过集群的内部IP暴露服务,选择该值,服务只能够在集群内部可以访问

  • NodePort:通过每个Node 上的IP 和静态端口(NodePort)暴露服务。NodePort服务会路由到ClusterIP服务,这个ClusterIP服务会自动创建。通过请求<NodeIP>:<NodePort>,可以从集群的外部访问一个NodePort服务
    image.png

  • LoadBalancer:使用云提供商的负载均衡器,可以向外部暴露服务。外部的负载均衡器可以路由到NodePort服务和ClusterIP服务
    image.png

  • ExteralName:通过返回CNAME和它的值,可以将服务映射到externalName字段的内容。要注意:没有任何类型代理被创建,只有k8s 1.7或更高版本的kube-dns才支持。
    image.png

Service背后的实现 : Kube-proxy

  • 每台机器上都运行一个kube-proxy服务,它监听API server中service和endpoint的变化情况,并通过iptables等来为服务配置负载均衡。
    image.png

K8S Ingress

  • Ingress是从K8s集群外部访问集群内部服务的入口
  • 通常情况下,service和pod仅在集群内部网络中通过IP地址访问。所有到达边界路由的流量或被丢弃或被转发到其他地方
    image.png
  • Ingress 定义
    image.png

Ingress Controller

  • Ingress controller负责Ingress,是k8s Ingress能够生效的先决条件。为了是Ingress正常工作,集群中必须运行Ingress controller。
    image.png

实验 基于CCE集群的Service & Ingress部署

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。