(十)kubernetes集群搭建(二进制方式)之--coredns部署

本文介绍如何在Kubernetes集群中配置CoreDNS,并通过实际测试验证其功能。具体步骤包括编辑模板文件、生成配置文件及部署DNS服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DNS 是 Kubernetes 的核心功能之一,通过CoreDNS 作为集群的必备扩展来提供命名服务。
在安装kube-apiserver的时候kubernetes-server-linux-amd64.tar.gz解压后,有一kubernetes-src.tar.gz包我们需要的coredns.yaml文件就是在这个里面生成的

# 进入server二进制包中,解压kubernetes-src.tar.gz
tar fx kubernetes-src.tar.gz -C ./kubernetes-src
# 进入生成coredns的目录
cd kubernetes-src/cluster/addons/dns/coredns/
# 看到如下文件
coredns.yaml.base  coredns.yaml.in  coredns.yaml.sed  Makefile  transforms2salt.sed  transforms2sed.sed

下面编辑transforms2sed.sed

[root@k8smaster coredns]# cat transforms2sed.sed 
s/__PILLAR__DNS__SERVER__/$DNS_SERVER_IP/g
s/__PILLAR__DNS__DOMAIN__/$DNS_DOMAIN/g
s/__PILLAR__CLUSTER_CIDR__/$SERVICE_CLUSTER_IP_RANGE/g
s/__PILLAR__DNS__MEMORY__LIMIT__/$DNS_MEMORY_LIMIT/g
s/__MACHINE_GENERATED_WARNING__/Warning: This is a file generated from the base underscore template file: __SOURCE_FILENAME__/g

将$DNS_SERVER_IP和$DNS_DOMAIN 进行替换,那么替换这两个值,这两个值在哪里找呢,在node节点的kubelet-config.yaml里。

[root@k8snode1 cfg]# cat kubelet-config.yml 
kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
address: 0.0.0.0
port: 10250
readOnlyPort: 10255
cgroupDriver: cgroupfs
clusterDNS:
- 10.0.0.2 # **这个替换\$DNS_SERVER_IP**
clusterDomain: cluster.local.  # 这个替换\$DNS_DOMAIN
failSwapOn: false
authentication:
  anonymous:
    enabled: false
  webhook:
    cacheTTL: 2m0s
    enabled: true
  x509:
    clientCAFile: /data/kubernetes/ssl/ca.pem
authorization:
  mode: Webhook
  webhook:
    cacheAuthorizedTTL: 5m0s
    cacheUnauthorizedTTL: 30s
evictionHard:
imagefs.available: 15%
memory.available: 100Mi
nodefs.available: 10%
nodefs.inodesFree: 5%
maxOpenFiles: 1000000
maxPods: 110

替换后的样子

[root@k8smaster coredns]# cat transforms2sed.sed 
s/__PILLAR__DNS__SERVER__/10.0.0.2/g
s/__PILLAR__DNS__DOMAIN__/cluster.local./g
s/__PILLAR__CLUSTER_CIDR__/$SERVICE_CLUSTER_IP_RANGE/g
s/__PILLAR__DNS__MEMORY__LIMIT__/$DNS_MEMORY_LIMIT/g
s/__MACHINE_GENERATED_WARNING__/Warning: This is a file generated from the base underscore template file: __SOURCE_FILENAME__/g

下面执行一条sed命令生成coredns.yaml文件

sed -f transforms2sed.sed coredns.yaml.base > coredns.yaml

然后编辑coredns.yaml
在这里插入图片描述
然后就部署dns了

# 部署dns
kubectl apply -f coredns.yaml
# 查看运行的pod状态
[root@k8smaster coredns]# kubectl get pods -n kube-system
NAME                       READY   STATUS    RESTARTS   AGE
coredns-664847c9cc-g6swn   1/1     Running   0          3d21h

部署完了
验证下:
部属个busybox

 kubectl run -it --image=busybox --rm --restart=Never sh

执行以下命令:
有以下说明成功

[ root@curl:/ ]$ nslookup javatest-s
Server:    10.0.0.2
Address 1: 10.0.0.2 kube-dns.kube-system.svc.cluster.local

Name:      javatest-s
Address 1: 10.244.0.65 10-244-0-65.javatest-s.production.svc.cluster.local
[ root@curl:/ ]$ nslookup nginx
Server:    10.0.0.2
Address 1: 10.0.0.2 kube-dns.kube-system.svc.cluster.local

Name:      nginx
Address 1: 10.0.0.247 nginx.production.svc.cluster.local
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值