如何强制Kubernetes“识别”服务的修改?
我最终将服务的类型/规格从
kind: Service
apiVersion: v1
metadata:
name: service-a
namespace: namespace-a
spec:
type: ClusterIP
selector:
app: service-a-pods
ports:
- name: web
port: 80
到
kind: Service
apiVersion: v1
metadata:
name: service-a
namespace: namespace-a
spec:
type: ExternalName
externalName: service-b.namespace-b.svc.cluster.local
ports:
- name: web
port: 80
这工作正常,但是当我在Kubernetes中恢复更改时,service-a
仍然继续转发到namespace-b
中的service-b
。即使硬删除和重新创建service-a
也无济于事。
似乎CoreDNS没有更新或类似的东西。我找到的唯一解决方法是在namespace-b
中重新创建service-b
。这是预期的行为吗?
1条答案
按热度按时间xvw2m8pv1#
这是由于您的k8s集群中的coredns维护的DNS记录该高速缓存。如果您需要服务资源更改的即时效果,可以将以下ttl值减为零:
运行以下命令以编辑Corefile(coredns配置文件):
然后更新
kubernetes
插件下的TTL:注意:这可能会对群集中的DNS解析产生性能影响。您也可以将其减少到适当的值。