/avatar.webp

karmada作为集群资源同步工具在灾备系统中的实践

karmada是一个kubernetes多集群管理系统,它可以保持原有使用apiserver的方式,将资源分布到多个集群中。提供了跨云多集群多模式管理、多策略的多集群调度、应用的跨集群故障转移、全局统一资源视图、多集群的服务发现和FederatedHPA能力。它的设计思路继承了集群联邦v2,目前是cncf的sandbox开源项目。

pod一直往一个节点上调度

遇到奇怪的现象:spark生成的job pod大概率都调度到同一节点,即不同的job的pod都会调度到同一节点,pod过于集中在某个节点上,出现调度不均衡现象。节点没有任何污点,节点资源空闲程度差不多。job没有任何nodeSelectornodeAffinitynodeNamePodTopologySpread

修改pod的dns配置文件/etc/resolv.conf内容

kubernetes提供了修改pod的/etc/resolv.conf文件配置方法,即spec.dnsConfigspec.dnsPolicy,具体可以访问[Customizing DNS Service],但是这种方法会导致pod重新生成。

我们有个业务场景:pod访问本地的localdns方式,取代中心化的访问coredns。kubelet的cluster dns配置已经改成localdns地址,但是在变更之前生成的pod还是使用coredns,需要将这部分pod的dns的nameserver改成localdns。但是不能主动删除pod或重启container(这的确不是一个好的容器使用方式(把容器当成宠物),这里公司文化决定的(业务程序没有实现优雅退出))。 即需要将pod直接访问coredns进行域名解析方式,切换到pod访问本地的node local dns,但是不能让pod进行重启。