`
m635674608
  • 浏览: 5043641 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Kubernetes 1.5 配置dns

 
阅读更多

 在kubernetes1.2的时候,采用了skydns + kube2dns +etcd的方式来部署dns。而从1.3开始,则部署方式有了一点儿变化,将skydns和kube2dns封装到了一个容器镜像中,放弃了etcd,而将dns解析直接放入到了内存之中,同时引入了dnsmasq,进一步利用其缓存,具体的原理,请查阅相关文档。本篇文档,主要阐述新版的dns在kubernetes中的具体部署。

  在Kubernetes的源码目录中,有个cluster/addons/dns目录,下面有几个与dns相关的文件,我们将其中的skydns-rc.yaml.sed以及skydns-svc.yaml.sed文件下载到本地,并去掉后缀。只是拷贝文件的话,可以通过https://rawgit.com这个地址加速,如下:

wget https://rawgit.com/kubernetes/kubernetes/release-1.5/cluster/addons/dns/skydns-rc.yaml.sed -O skydns-rc.yaml
wget https://rawgit.com/kubernetes/kubernetes/release-1.5/cluster/addons/dns/skydns-svc.yaml.sed -O skydns-svc.yaml

下载下来的原文件是用于saltstack自动化安装的,我们手动处理的时候,需要进行相关修改。

修改skydns-rc.yaml内容如下:

# Copyright 2016 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# TODO - At some point, we need to rename all skydns-*.yaml.* files to kubedns-*.yaml.*
# Should keep target in cluster/addons/dns-horizontal-autoscaler/dns-horizontal-autoscaler.yaml
# in sync with this file.

# __MACHINE_GENERATED_WARNING__

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: kube-dns
  namespace: kube-system
  labels:
    k8s-app: kube-dns
    kubernetes.io/cluster-service: "true"
spec:
 #指定副本数 replicas:
1 # replicas: not specified here: # 1. In order to make Addon Manager do not reconcile this replicas parameter. # 2. Default is 1. # 3. Will be tuned in real time if DNS horizontal auto-scaling is turned on. strategy: rollingUpdate: maxSurge: 10% maxUnavailable: 0 selector: matchLabels: k8s-app: kube-dns template: metadata: labels: k8s-app: kube-dns annotations: scheduler.alpha.kubernetes.io/critical-pod: ‘‘ scheduler.alpha.kubernetes.io/tolerations: [{"key":"CriticalAddonsOnly", "operator":"Exists"}] spec: containers: - name: kubedns
     #修改image地址,默认是google的仓库地址,如果不担心被墙,可以直接使用,我这里使用的私有仓库地址,如果要使用国内其他仓库地址,推荐使用阿里云镜像库 image: myhub.fdccloud.com
/library/kubedns-amd64:1.9 resources: # TODO: Set memory limits when weve profiled the container for large # clusters, then set request = limit to keep this container in # guaranteed class. Currently, this container falls into the # "burstable" category so the kubelet doesnt backoff from restarting it. limits: memory: 170Mi requests: cpu: 100m memory: 70Mi livenessProbe: httpGet: path: /healthz-kubedns port: 8080 scheme: HTTP initialDelaySeconds: 60 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 5 readinessProbe: httpGet: path: /readiness port: 8081 scheme: HTTP # we poll on pod startup for the Kubernetes master service and # only setup the /readiness HTTP server once thats available. initialDelaySeconds: 3 timeoutSeconds: 5 args:
     # --domain指定一级域名,可自定义
- --domain=cluster.local. - --dns-port=10053 - --config-map=kube-dns
     #增加--kube-master-url,指向kube master的地址
- --kube-master-url=http://10.5.10.116:8080 # This should be set to v=2 only after the new image (cut from 1.5) has # been released, otherwise we will flood the logs. - --v=0 #__PILLAR__FEDERATIONS__DOMAIN__MAP__ env: - name: PROMETHEUS_PORT value: "10055" ports: - containerPort: 10053 name: dns-local protocol: UDP - containerPort: 10053 name: dns-tcp-local protocol: TCP - containerPort: 10055 name: metrics protocol: TCP - name: dnsmasq image: myhub.fdccloud.com/library/kube-dnsmasq-amd64:1.4 livenessProbe: httpGet: path: /healthz-dnsmasq port: 8080 scheme: HTTP initialDelaySeconds: 60 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 5 args: - --cache-size=1000 - --no-resolv - --server=127.0.0.1#10053 #- --log-facility=-  #注释掉该行 ports: - containerPort: 53 name: dns protocol: UDP - containerPort: 53 name: dns-tcp protocol: TCP # see: https://github.com/kubernetes/kubernetes/issues/29055 for details resources: requests: cpu: 150m memory: 10Mi - name: dnsmasq-metrics image: myhub.fdccloud.com/library/dnsmasq-metrics-amd64:1.0 livenessProbe: httpGet: path: /metrics port: 10054 scheme: HTTP initialDelaySeconds: 60 timeoutSeconds: 5 successThreshold: 1 failureThreshold: 5 args: - --v=2 - --logtostderr ports: - containerPort: 10054 name: metrics protocol: TCP resources: requests: memory: 10Mi - name: healthz image: myhub.fdccloud.com/library/exechealthz-amd64:1.2 resources: limits: memory: 50Mi requests: cpu: 10m # Note that this container shouldnt really need 50Mi of memory. The # limits are set higher than expected pending investigation on #29688. # The extra memory was stolen from the kubedns container to keep the # net memory requested by the pod constant. memory: 50Mi args: - --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1 >/dev/null - --url=/healthz-dnsmasq - --cmd=nslookup kubernetes.default.svc.cluster.local 127.0.0.1:10053 >/dev/null - --url=/healthz-kubedns - --port=8080 - --quiet ports: - containerPort: 8080 protocol: TCP dnsPolicy: Default # Dont use cluster DNS.

修改skydns-svc.yaml内容如下:

# Copyright 2016 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# TODO - At some point, we need to rename all skydns-*.yaml.* files to kubedns-*.yaml.*

# __MACHINE_GENERATED_WARNING__

apiVersion: v1
kind: Service
metadata:
  name: kube-dns
  namespace: kube-system
  labels:
    k8s-app: kube-dns
    kubernetes.io/cluster-service: "true"
    kubernetes.io/name: "KubeDNS"
spec:
  selector:
    k8s-app: kube-dns
#指定clusterIP,后面各pod的dns地址都会指向该地址 clusterIP:
10.254.0.100 ports: - name: dns port: 53 protocol: UDP - name: dns-tcp port: 53 protocol: TCP

启动dns:

kubectl create -f skydns-rc.yaml
kubectl create -f skydns-svc.yaml

修改各node节点上的/etc/kubernetes/kubelet配置文件,增加如下行:

KUBELET_ARGS="--cluster_dns=10.254.0.100 --cluster_domain=cluster.local"

重启各节点:

systemctl restart kubelet

添加一个busybox的pod用于测试,busybox.yaml内容如下:

apiVersion: v1
kind: Pod
metadata:
  labels:
    name: busybox
    role: master
  name: busybox
spec:
  containers:
  - name: busybox
    image: myhub.fdccloud.com/library/busybox
    command:
    - sleep
    - "3600"

执行如下操作:

kubectl exec -it busybox sh
nslookup kubernetes
nslookup kubernetes.default.cluster.local
nslookup kubernetes.default.svc.cluster.local

如果能正常解析,则部署OK。

 

Kubernetes 1.5 配置dns

标签:required   gen   bus   tps   /dev/   fin   right   处理   man   

原文:http://www.cnblogs.com/breezey/p/6553738.html

分享到:
评论

相关推荐

    kubernetes dns 1.5

    基于kubernetes 1.5 的dns镜像包下载,包括: kube2sky:1.11 skydns:2015-10-13-8c72f8c etcd:2.0.9 都为tar包,上传服务器docker load即可转为镜像。 由于kubernetes dns 1.5通过etcd保存dns相关数据,实测与目前...

    kubernetes集群 coredns-v1.9.4官网镜像包以及yaml文件

    kubernetes集群 coredns-v1.9.4官网镜像包以及yaml文件

    k8s kubernetes dashboard dns 配置文件 yaml

    这里我们聚焦于Kubernetes Dashboard、DNS服务以及相关的YAML配置文件。YAML是一种常用的语言,用于编写Kubernetes的资源定义,它简洁且易于阅读。下面我们将深入探讨这些主题。 首先,Kubernetes Dashboard是一个...

    kubernetes之coredns-v1.8.0.tar.gz下载

    kubernetes之coredns-v1.8.0.tar.gz下载

    windows网络操作系统管理~形考作业5~配置DNS服务实训.doc

    Windows 网络操作系统管理 - 配置 DNS 服务实训 在 Windows 网络操作系统管理中,配置 DNS 服务是非常重要的一部分。DNS(Domain Name System)是一种广泛使用的名称解析服务,在互联网上广泛使用“完全限定域名”...

    Kubernetes集群配置与部署, 涉及的配置与部分组件安装包

    在IT行业中,Kubernetes(简称K8s)已经成为容器编排和管理的首选...过程中可能还会涉及到DNS、Ingress、持久化存储等其他方面,这些都是Kubernetes生态系统中不可或缺的部分,对于理解和运维Kubernetes集群至关重要。

    RedHat9.0网络配置DNS服务器

    RedHat9.0配置DNS服务器RedHat9.0网络配置DNS服务器RedHat9.0网络配置DNS服务器RedHat9.0网络配置DNS服务器RedHat9.0网络配置DNS服务器RedHat9.0网络配置DNS服务器RedHat9.0网络配置DNS服务器RedHat9.0网络配置DNS...

    国家开放大学 网络操作系统管理 形考任务5 配置DNS服务实训

    ### 国家开放大学网络操作系统管理形考任务5:配置DNS服务实训 #### 实训目的与背景 本次实训旨在帮助学员深入理解DNS服务的工作原理,并掌握如何在Windows Server 2022环境下配置DNS服务器及客户端的具体操作流程...

    在OpenWRT路由器上配置DNS服务器

    在OpenWRT路由器上配置DNS服务器是一项常见的网络管理任务,尤其对于家庭或小型办公室网络环境而言,这可以提高网络性能并增强网络安全。DNS(Domain Name System)是互联网上的一个关键服务,它将易于记忆的域名...

    k8s-ddns:为CoreDNS部署Kubernetes ExternalDNS

    4. **配置Kubernetes资源**:在Kubernetes中,你需要为要暴露的服务创建一个Ingress或Service对象,同时添加`external-dns.alpha.kubernetes.io/hostname`注解,指定要使用的外部域名。 5. **观察运行状况**:部署...

    如何在Windows Server 2003中配置DNS说明

    在Windows Server 2003中配置DNS是网络管理员日常工作中不可或缺的一部分,因为DNS(Domain Name System)服务是互联网上将域名与IP地址相互映射的关键组件。正确配置DNS服务器可以确保网络上的设备能够顺利地进行...

    负载均衡F5-DNS配置说明

    负载均衡F5-DNS配置是IT领域中一种关键的技术实践,用于提高网络服务的可用性和性能。F5 Networks是一家提供应用交付控制器(ADC)的公司,其产品在负载均衡领域广泛应用。DNS(Domain Name System)则负责将域名...

    XP配置DNS的必备文件

    在Windows XP系统中配置DNS(Domain Name System)是一项至关重要的任务,它涉及到网络连接的稳定性和速度。DNS是互联网的一项核心服务,它负责将我们易于理解的域名转换为计算机能够识别的IP地址。本篇文章将深入...

    计算机软件及应用windowsserer教程配置DNS服务器.pptx

    "计算机软件及应用windowsserer教程配置DNS服务器" 计算机软件及应用windowsserer教程配置DNS服务器是计算机网络基础设施中的一部分,涉及到计算机软件及应用、windowsserer教程和DNS服务器配置三个方面。 域名...

    如何配置DNS服务器

    DNS服务器的配置是网络管理中的重要环节,它负责将域名转换为对应的IP地址,以便网络设备能够找到目标服务器。以下是对如何配置DNS服务器的详细解释: 1. **安装DNS服务**: 在Windows操作系统中,你可以通过控制...

    k8s(dns镜像,Kubernetes)

    在Kubernetes集群中,CoreDNS作为Deployment运行,可以通过ConfigMap配置来定制其行为。 **2. DNS配置** 在Kubernetes中,DNS配置通常包含以下几个关键组件: - **Kube-DNS ConfigMap**: 定义DNS解析策略和DNS...

    实验四 配置DNS服务器(一).docx

    实验四的目的是让学生掌握DNS(Domain Name System)服务器的工作原理、安装方法以及配置技巧,并通过正向解析和反向解析的实践操作来检验DNS服务器的功能。在这个实验中,我们将使用Linux服务器进行配置,标签提示...

    安装和配置DNS服务器

    以下是关于"安装和配置DNS服务器"的详细知识: 1. **DNS服务简介** - DNS(Domain Name System)是域名系统,是一个分布式数据库,用于将域名与IP地址相互映射。 - 域名空间是Internet上所有主机的唯一主机名组成...

    配置DNS辅助域名服务器和子域名服务器

    配置DNS辅助域名服务器和子域名服务器 本文介绍了配置DNS辅助域名服务器和子域名服务器的步骤,涵盖了规划、安装、配置等方面的知识点。 一、规划说明 在配置DNS辅助域名服务器和子域名服务器之前,需要规划好...

Global site tag (gtag.js) - Google Analytics