前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【TKE】修改集群 CorenDNS 服务地址

【TKE】修改集群 CorenDNS 服务地址

原创
作者头像
Jokey
修改2021-04-30 14:56:48
1K0
修改2021-04-30 14:56:48
举报
文章被收录于专栏:云原生搬运工云原生搬运工

使用场景

TKE 中的 Coredns 服务 IP 目前没有办法在创建集群的时候指定,默认是从客户配置的 Service CIDR 网段中分配一个随机的 IP,下面将介绍如何自定义修改 Coredns 服务 IP。

前提条件

  1. 在配置的 service CIDR 网段中选择一个目前集群中没有被使用的 IP
  2. 集群中存量的 Pods 可以接受被重建。

操作步骤

1.修改 kubelet 启动参数 先到存量节点上修改 kubelet 配置文件中 --cluster-dns 参数为新的 Cluster IP 并重启 kubelet,操作命令如下:

代码语言:javascript
复制
DNS_CLUSTER_IP=xxx.xxx.xxx.xxx
sed -i "/CLUSTER_DNS/c\CLUSTER_DNS=\"--cluster-dns=${DNS_CLUSTER_IP}\"" /etc/kubernetes/kubelet
systemctl restart kubelet

2.重建指定了新 ClusterIP 的 Coredns 的 Service 资源

由于.spec.clusterIP 字段是不可修改的,所以必须先删除原来的Service 资源:

代码语言:javascript
复制
kubectl delete svc kube-dns -n kube-system

然后再重新创建 Service kube-dns,可以根据需求适当修改和应用如下 YAML重建:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  annotations:
    prometheus.io/port: "9153"
    prometheus.io/scrape: "true"
  labels:
    addonmanager.kubernetes.io/mode: Reconcile
    kubernetes.io/cluster-service: "true"
    kubernetes.io/name: CoreDNS
  name: kube-dns
  namespace: kube-system
spec:
  clusterIP: xxx.xxx.xxx.xxx  # 你要指定的服务 IP
  ports:
  - name: dns-tcp
    port: 53
    protocol: TCP
    targetPort: 53
  - name: dns
    port: 53
    protocol: UDP
    targetPort: 53
  selector:
    k8s-app: kube-dns
  sessionAffinity: None
  type: ClusterIP

3.重建集群中存量已有所有 Pods

由于kubelet 使用 --cluster-dns=<DNS 服务 IP> 标志将 DNS 解析器的信息传递给每个容器,所以存量 Pods 需要重建下更新到新的 Cluster IP,使用正常删除命令即可:

代码语言:javascript
复制
 kubectl delete pod --all --all-namespaces 

4.新建节点时指定 kubelet 参数

新建节点时可以通过自定义参数的功能指定kubelet 配置文件中--cluster-dns参数,但目前需要联系售后同学开白名单后可在控制台配置使用。

温馨提示:由于 Coredns Pods 比较特殊,在 Coredns 创建时容器中 /etc/resolv.conf 默认是继承当前节点相同路径中的Dnsservers 配置,不会使用 kubelet 参数中的配置,并且后续也不会 watch 和同步节点 /etc/resolv.conf 中的内容改动,所以节点上配置修改后需要重建 coredns Pods 更新新配置。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用场景
  • 前提条件
  • 操作步骤
    • 2.重建指定了新 ClusterIP 的 Coredns 的 Service 资源
      • 3.重建集群中存量已有所有 Pods
        • 4.新建节点时指定 kubelet 参数
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档