你好,我是李逸皓,我的梦想是:运维,永不背锅!
放个链接,万一有人关注呢
优质文章推荐
↓ ↓ ↓ ↓ ↓
开启Linux新时代
新兴Linux命令行工具,不学就要被淘汰
Linux新命令:一条命令解决两个问题
Python脚本实现Linux日志巡检
Linux新趋势:直接弃用AWK
1.如何在K8S中实现服务发现?
在Kubernetes(K8s)中,服务发现主要依赖于Kubernetes的Service和Ingress对象。Service:Service是Kubernetes中的一个核心概念,它为一组运行相同应用程序的Pods提供一个统一的访问入口。Service有自己的IP地址和端口号,其他的Pod可以通过这个IP地址和端口号来访问Service背后的Pods。Service通过标签选择器来选择后端的Pods,当后端的Pods发生变化时,Service会自动更新。DNS:Kubernetes提供了内置的DNS服务,可以为每个Service创建一个DNS记录。这个DNS记录的格式通常是..svc.cluster.local。因此,Pod可以通过Service的DNS名称来访问Service,而不需要知道Service的IP地址。Ingress:Ingress是Kubernetes中用于管理外部访问集群内部Service的对象。你可以为Service定义Ingress规则,这样外部的请求就可以通过Ingress来访问Service。Headless Service:如果你不需要或不想使用Kube-proxy进行负载均衡,你可以使用无头服务(Headless Service)。无头服务没有集群IP,DNS查询会直接返回后端Pod的IP地址列表。在Kubernetes(K8s)中进行水平扩展主要涉及到两个概念:Horizontal Pod Autoscaler(HPA)和Cluster Autoscaler。Horizontal Pod Autoscaler(HPA):HPA是Kubernetes中的一个对象,它可以自动地根据CPU利用率或者自定义的度量指标来调整Pod的数量。你可以设置最小和最大的Pod数量,HPA会根据实际的负载来增加或减少Pod的数量。这样可以确保应用程序在负载增加时能够提供足够的容量,而在负载减少时不会浪费资源。Cluster Autoscaler:Cluster Autoscaler是一个在集群级别进行自动扩缩容的组件。当集群的所有节点都无法满足新的Pod的调度需求时,Cluster Autoscaler可以自动地向集群添加节点。同样,当一些节点上的Pod都被删除,并且这些节点已经空闲一段时间后,Cluster Autoscaler也可以自动地删除这些节点。以下是一个使用HPA进行水平扩展的例子:
apiVersion: autoscaling/v2beta2kind: HorizontalPodAutoscalermetadata: name: my-app-hpaspec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: my-app minReplicas: 1 maxReplicas: 10 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 50
3.有哪些常见的Pod调度策略?
在Kubernetes中,Pod的调度策略主要由Kubernetes的调度器(Scheduler)来决定。以下是一些常见的Pod调度策略:NodeSelector:NodeSelector是最简单的Pod调度策略,它允许你基于节点的标签(Labels)来选择节点。你可以在Pod的spec中设置nodeSelector字段,指定希望Pod运行的节点的标签。Affinity and Anti-Affinity:亲和性(Affinity)和反亲和性(Anti-Affinity)提供了更复杂的节点选择规则。亲和性可以让Pod尽可能地调度到符合某些条件的节点上,反亲和性则可以让Pod尽可能地避开符合某些条件的节点。Taints and Tolerations:污点(Taints)和容忍(Tolerations)是一种可以将Pod驱逐到(或者阻止Pod调度到)特定的节点的方法。节点可以应用一个或多个污点,然后Pod可以应用相应的容忍来允许(或者阻止)自己被调度到这些节点上。PodTopologySpreadConstraints:Pod拓扑扩散约束可以让你控制Pod在拓扑域(例如节点、区域、数据中心等)之间的分布。这可以用来实现高可用性或者负载均衡。Resource Based Scheduling:基于资源的调度策略考虑节点的CPU、内存等资源使用情况,以确保Pod有足够的资源运行。Custom Scheduler:如果内置的调度策略不能满足需求,你还可以编写自定义的调度器。粉丝进群方式如下图:

欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。 ↓↓↓ 点个在看,无需赞赏!
原文作者:运维book思议;如有侵权,请联系管理员删除。