Kubernetes基本概念和术语(2)_kubernetes expectation(1)

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 清理不再需要的旧版本 ReplicaSets

1.7 Horizontal Pod Autoscaler

Horizontal Pod Autoscaling (Pod 横向自动扩容,简称HPA )。

HPA可以有以下两种方式作为 Pod 负载的度量指标。

  • CPUUtilizationPercentage
  • 应用程序自定义的度量指标,比如服务在每秒内的相应的请求数 CTPS或QPS )。

如果某一时刻 CPUUtilizationPercentag 的值超过 80% ,则意味着当前的 Pod 副本数很可能不足以支撑接下来更多的请求,需要进行动态扩容,而当请求高峰时段过去后, Pod的CPU 利用率又会降下来,此时对应的 Pod 副本数应该自动减少到一个合理的水平。

下面展示一个YAML:

apiVersion : autoscaling/vl 
kind: HorizontalPodAutoscaler 
metadata : 
name : php-apache 
namespace: default 
spec: 
maxReplicas : 10 
minReplicas : 1 
scaleTargetRef: 
kind : Deplo nent
name : php-apache 
targetCPUUtilizationPercentage : 90

上面的HPA控制的目标对象 php-apache的Deployment里的 Pod副本,当这些 Pod 副本 CPUUtilizationPercentage的值超过90%会触发自动动态扩容行为,扩容或缩容时必须满足的一个约束条件是Pod 的副本数介于1与10之间。

1.8 StatefulSet

StatefulSet从本质上来说,可以看作 Deployment/RC的一个特殊变种,它有如下一些特性:

  • StatefulSet 里的每个 Pod 都有稳定、唯一的网络标识,可以用来发现集群内的其他成员。
  • 假设StatefulSet 名字叫kafka, 那么第1个 Pod kafka-0 ,第2个叫 kafk-1,以此类推。
  • StatefulSet 控制的 Pod副本的启停顺序是受控的,操作第n个Pod 时,前 n-1 Pod已经是运行且准备好的状态。
  • StatefulSet 里的Pod采用稳定的持久化存储卷,通过 PV/PVC 来实现,删除 Pod 时默认 不会删除与StatefulSet相关的存储卷(为了保证数据的安全)

StatefulSet在Headless Service 的基础上又为StatefulSet 控制的每个 Pod 实例创建了 DNS 域名,这个域名的格式为:

$(podname).$(headless service name) 

比如一个三节点的Kafka StatefulSet 集群,对应的 Headless Service 的名字为 kafka,StatefulSet 的名字为 kafka,则 StatefulSet 里面的 Pod DNS 名称分别为 kafka-0.kafka,kafka-1.kafka kafka-3 .kafka ,这些 DNS 名称可以直接在集群的配置文件中固定下来。

1.9 Service(服务)

概述:

Service 也是 Kubemetes 里的最核心的资源对象之 Kubernetes 里的每个 Service 其实就是我们经常提起的微服务架构中的一个“微服务”.

Pod , RC Service 的关系:
在这里插入图片描述
通过分析、识别并建模系统中的所有服务为微服务一Kubernetes Service 最终我们的系统由多个提供不同业务能力而又彼此独立的微服务单元所组成,服务之间通过 TCP/IP 进行通信,从而形成了我们强大而又灵活的弹性网格,拥有了强大的分布式能力、弹性扩展能力、容错能力.

Service不是共用一个负载均衡器的 地址,而是每个 Service 分配了 一个全局唯一的虚拟 IP 地址,这个虚拟IP被称为 Cluster 。这样一来,每个服务就变成了具备唯一 地址的“通信节点”,服务调用就变成了最基础 TCP 网络通信问题.

Kubernetes 的服务发现机制

如何通过 Service 的名字找到对应的 Cluster IP?
最早时 Kubemetes 采用了 Linux 环境变量的方式解决这个问题,即每个 Service 生成 些对应的 Linux 环境变量 CENV ),并在每个 Pod 的容器在启动时,自动注入这些环境变量,以下是tomcat-service 产生的环境变量条目:

TOMCAT SERVICE SERVICE HOST=69.169.41.218 
TOMCAT SERVICE SERVICE PORT SERVICE PORT=8080 
TOMCAT SERVICE SERVICE PORT SHUTDOWN PORT=BOOS 
TOMCAT SERVICE SERVICE PORT=8080 
TOMCAT SERVICE PORT 8005 TCP PORT=BOOS 
TOMCAT SERVICE PORT=tcp://169.169.41.218:8080 
TOMCAT SERVICE PORT 8080 TCP ADDR=l69.169.41.218 
TOMCAT_SERVICE_PORT_8080_TCP=tcp://169.169.41.218:8080 
TOMCAT SERVICE PORT 8080 TCP PROTO=tcp 
TOMCAT SERVICE PORT 8080 TCP PORT=8080 
TOMCAT_SERVICE_PORT_8005 TCP=tcp://169.169.41 18:8005
TOMCAT SERVICE PORT 8005 TCP ADDR=169.169.41.218 
TOMCAT SERVICE PORT 8005 TCP PROTO=tcp 

上述环境变量中,比较重要的是前3条环境变量,我们可以看到,每个 Service 的 IP地址及端口都是有标准的命名规范的,遵循这个命名规范,就可以通过代码访问系统环境变量的方式得到所需的信息,实现服务调用。

外部系统访问 Service 的问题

为了更加深入地理解和掌握 Kubemetes ,我们需要弄明白 Kubemetes 里的"三种IP"这个关键问题,这三种IP分别如下。

  • Node IP: Node 节点的 IP 地址
    Node IP Kubemetes 集群中每个节点的物理网卡的 IP 地址.
  • Pod IP: Pod IP 地址
    Pod IP 是每个 Pod IP 地址,它是 Docker Engine 根据 docker0网桥的IP地址段进行分配的,通常是一个虚拟的二层网络,前面我们说过, Kubemetes 要求位于不同 Node 上的Pod 能够彼此直接通信,所以 Kubemetes 里一 Pod 里的容器访问另外一 Pod 里的容器,就是通过 Pod 在的虚拟二层网络进行通信的,而真实的 TCP/IP 则是通过Node 在的物理网卡流出的.
  • Cluster IP: Service 的IP地址
  • Cluster IP仅仅作用 Kubemetes Service 这个对象,并由 Kubemetes 管理和分配 IP地址(来源于 Cluster 地址池);
  • Cluster 无法被 Ping 因为没有一个“实体网络对象”来响应;
  • Cluster 只能结合 Service Port 组成 个具体的通信端口,单独的Cluster 具备TCP/IP的基础,并且它们属于 Kubemetes 集群这样一个封闭的空间, 集群之外的节点如果要访问这个通信端口 ,则需要做一些额外的工作;
  • 在Kubemetes 集群之内, Node 网、 Pod IP 网与 Cluster 网之间的通 采用的是Kubemetes 自己设计的一种编程方式的特殊的路由规则,与我们所熟知的 路由有很大的不同。

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值