配置k8s dns

DNS (domain name system),提供域名解析服务,解决了难于记忆的IP地址问题,以更人性可读可记忆可标识的方式映射对应IP地址。

Cluster DNS扩展插件用于支持k8s集群系统中各服务之间发现与调用。

  

组件:
  ?SkyDNS 提供DNS解析服务
  ?Etcd 存储DNS信息
  ?Kube2sky 监听kubernetes,当有Service创建时,生成相应的记录到SkyDNS。

1.修改所有node的配置文件:/etc/kubernetes/kubelet  kubernetes-node1,kubernetes-node2,kubernetes-node3:

[[email protected] ~]# tail -n 1 /etc/kubernetes/kubelet
KUBELET_ARGS="--cluster-dns=10.254.254.254 --cluster-domain=cluster.local"

2.所有node节点都重新启动服务

systemctl restart kubelet.service

3.根据namespace分为不同的名称空间,将系统服务统一放到一个单独的空间:kube-system,由于默认空间只有default,我们首先要创建kube-system空间。

[[email protected] pods]# cat kube-system.yml
apiVersion: v1
kind: Namespace
metadata:
      name: kube-system

4.在master服务器上编辑ReplicationController文件dns-rc.yml

  1 apiVersion: v1
  2 kind: ReplicationController
  3 metadata:
  4   name: kube-dns-v11
  5   namespace: kube-system
  6   labels:
  7     k8s-app: kube-dns
  8     version: v11
  9     kubernetes.io/cluster-service: "true"
 10 spec:
 11   replicas: 1
 12   selector:
 13     k8s-app: kube-dns
 14     version: v11
 15   template:
 16     metadata:
 17       labels:
 18         k8s-app: kube-dns
 19         version: v11
 20         kubernetes.io/cluster-service: "true"
 21     spec:
 22       containers:
 23       - name: etcd
 24         image: docker.gaoxiaobang.com/kubernetes/etcd-amd64:2.2.1
 25         resources:
 26           limits:
 27             cpu: 100m
 28             memory: 500Mi
 29           requests:
 30             cpu: 100m
 31             memory: 50Mi
 32         command:
 33         - /usr/local/bin/etcd
 34         - -data-dir
 35         - /var/etcd/data
 36         - -listen-client-urls
 37         - http://127.0.0.1:2379,http://127.0.0.1:4001
 38         - -advertise-client-urls
 39         - http://127.0.0.1:2379,http://127.0.0.1:4001
 40         - -initial-cluster-token
 41         - skydns-etcd
 42         #volumeMounts:
 43         #- name: etcd-storage
 44         #  mountPath: /var/etcd/data
 45       - name: kube2sky
 46         image: docker.gaoxiaobang.com/kubernetes/kube2sky:1.14
 47         args:
 48         # command = "/kube2sky"
 49         - --domain=cluster.local
 50         - --kube-master-url=http://10.64.8.68:8080
 51         resources:
 52           limits:
 53             cpu: 100m
 54             memory: 200Mi
 55           requests:
 56             cpu: 100m
 57             memory: 50Mi
 58       - name: skydns
 59         image: docker.gaoxiaobang.com/kubernetes/skydns:2015-10-13-8c72f8c
 60         resources:
 61           limits:
 62             cpu: 100m
 63             memory: 200Mi
 64           requests:
 65             cpu: 100m
 66             memory: 50Mi
 67         args:
 68         - -machines=http://127.0.0.1:4001
 69         - -addr=0.0.0.0:53
 70         - -ns-rotate=false
 71         - -domain=cluster.local.
 72         ports:
 73         - containerPort: 53
 74           name: dns
 75           protocol: UDP
 76         - containerPort: 53
 77           name: dns-tcp
 78           protocol: TCP
 79         livenessProbe:
 80           httpGet:
 81             path: /healthz
 82             port: 8080
 83             scheme: HTTP
 84           initialDelaySeconds: 60
 85           timeoutSeconds: 5
 86           successThreshold: 1
 87           failureThreshold: 5
 88         readinessProbe:
 89           httpGet:
 90             path: /readiness
 91             port: 8080
 92             scheme: HTTP
 93           initialDelaySeconds: 30
 94           timeoutSeconds: 5
 95       - name: healthz
 96         image: docker.gaoxiaobang.com/kubernetes/exechealthz:1.0
 97         resources:
 98           limits:
 99             cpu: 10m
100             memory: 20Mi
101           requests:
102             cpu: 10m
103             memory: 20Mi
104         args:
105         - -cmd=nslookup kubernetes.default.svc.cluster.local localhost >/dev/null
106         - -port=8080
107         ports:
108         - containerPort: 8080
109           protocol: TCP
110       volumes:
111       - name: etcd-storage
112         emptyDir: {}
113       dnsPolicy: Default

dns-rc.yml

注意dns-rc.yml:修改文件中的master ip

dns service服务yml

 1 apiVersion: v1
 2 kind: Service
 3 metadata:
 4   name: kube-dns
 5   namespace: kube-system
 6   labels:
 7     k8s-app: kube-dns
 8     kubernetes.io/cluster-service: "true"
 9     kubernetes.io/name: "KubeDNS"
10 spec:
11   selector:
12     k8s-app: kube-dns
13   clusterIP:  10.254.254.254
14   ports:
15   - name: dns
16     port: 53
17     protocol: UDP
18   - name: dns-tcp
19     port: 53
20     protocol: TCP

dns-svc.yml

创建namespace(有就不用在创建了)

kubectl create -f kube-system.yml

创建ReplicationController

[[email protected] pods]# kubectl create -f dns-rc.yml

创建Service

[[email protected] pods]# kubectl create -f dns-svc.yml

查看dns-rc.yml文件中定义pod的启动状态,如下则启动成功。

[[email protected] pods]#  kubectl get pod --namespace=kube-system

查看dns-svc.yml文件中定义的Service的信息。

[[email protected] pods]# kubectl get svc -l k8s-app=kube-dns --namespace=kube-system

测试DNS的效果。
部署一个busybox的Pod

 1 apiVersion: v1
 2 kind: Pod
 3 metadata:
 4   name: busybox
 5   namespace: default
 6 spec:
 7   containers:
 8   - image: busybox
 9     command:
10       - sleep
11       - "3600"
12     imagePullPolicy: IfNotPresent
13     name: busybox
14   restartPolicy: Always

busybox.yml

验证kubernetes服务的地址解析,出现如下所示则证明DNS解析正常。

时间: 2024-11-09 21:57:25

配置k8s dns的相关文章

k8s DNS 服务发现的一个坑

按照官当文档,以及大家的实践进行k8s dns 服务发现搭建还是比较简单的,但是会有一个因为系统默认dns 配置造成的一个问题 1. linux  默认dns 配置在 /etc/resolv.conf 一般来只会有几个简单的配置信息 比如:  nameserver XXXXXXXXX 但是今天在阿里云服务器上进行按照的时候出现了进行dns 解析测试的pod 能够解析,但是 自己创建的pod 不能使用 很是困惑, 阿里云dns 的配置如下: options timeout:1 attempts:1

DNS之配置子域DNS服务器

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 假设某个网段很大,你只想负责上层的DNS管理,下层的DNS希望直接交给各单位的负责人去管理,要怎么设置呢?子域授权DNS服务器可以解决这样的问题. 那么如何开放子域授权呢?以在"DNS之配置Master DNS服务器"博文中建立的Master DNS服务器为基础,假设有人想向你申请domain name,他要的domain是"ll.muluhe.com",那该如何处

DNS之配置Slave DNS服务器

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 从DNS服务器环境规划 虚拟主机IP:10.170.2.20    Slave Master DNS服务器 搭建DNS服务器所需要的软件:bind Master DNS服务器权限的开放 提供Slave DNS 服务器进行zone transfer 的服务器为ns.muluhe.com: muluhe.com及2.170.10.in-addr.arpa两个zone都提供给Slave DNS服务器使

配置缓存DNS服务器和主DNS服务器

规划: 域:fsy.com地址段:172.16.100.0/24 ns地址:172.16.100.3 www地址:172.16.100.3, 172.16.100.5 mail地址:172.16.100.4 ftp 别名: www 一.配置缓存DNS服务器: 1.安装软件包 [[email protected] ~]# yum -y install bind 2.备份主配置文件 [[email protected] ~]# mv /etc/named.conf /etc/named.conf.o

DNS之配置Master DNS服务器

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 由于本人没有注册合法的域名,因此只有玩玩自己局域网内的DNS服务器的配置了. DNS的环境规划 虚拟主机IP:10.170.2.10    Master DNS服务器 搭建DNS服务器所需要的软件:bind 设置主配置文件/etc/named.conf # vim /etc/named.conf 配置区域配置文件/etc/named.rfc1912.zones # vim /etc/named.

redhat7.0配置高速缓存DNS

简介:DNS(域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析).它在UDP协议上运行,使用53端口. UDP(用户数据报协议),是OSI(开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事物的简单不可靠信息传送服务. 学习目标:配置高速缓存DNS,了解DNS的功能与用途. DNS资源记录:DNS采用资源记录的形式存储信息.

小型公司网络组建及WEB服务配置及DNS解析

实验名称:小型公司网络组建及WEB服务配置及DNS解析实验拓扑:所需设备:1.5台三层交换机(路由器也OK) 2. 1台DNS服务器 3. 1台WEB服务器 4. 5台PC机 5. 一台客户端 client 1 地址规划:设备 IP地址及子网掩码 所属vlan 网关 DNS PC1 |192.168.1.1|/24 |VLAN10 |192.168.1.254| 192.168.3.1| PC2 |192.168.2.2|/24 |VLAN20 |192.168.2.254| 192.168.3

Centos7.5配置缓存DNS服务器(三)

本案例我们来搭建缓存DNS服务器,我们需要准备2台Centos7.5系统,svr100作为缓存DNS服务器,IP为192.168.2.100/24,pc200作为客户机,IP地址为192.168.2.200/24,其中客户机的DNS地址需配置为服务器的IP地址192.168.2.100. 实验拓扑如下图: 第一步,我们在svr100上安装bind.bind-chroot软件包,如下图 第二步,我们编辑svr100的主配置文件,在options中配置真实的DNS服务器地址,编辑如下: 第三步,检查

二进制搭建kubernetes多master集群【四、配置k8s node】

上一篇我们部署了kubernetes的master集群,参考:二进制搭建kubernetes多master集群[三.配置k8s master及高可用] 本文在以下主机上操作部署k8s node k8s-node1:192.168.80.10 k8s-node2:192.168.80.11 k8s-node3:192.168.80.12 以下kubeadm和kubectl命令操作都是在k8s-master1上执行的. kubernetes work 节点运行如下组件: docker kubelet