k8s dns 服务安装配置说明

1. 提前条件

    安装k8s 集群

 

2.  dns  安装配置

 

     安装方式: 使用controller  service 

    controller  脚本:

       基于官方改动

apiVersion: v1
kind: ReplicationController
metadata:
  name: kube-dns-v8
  namespace: kube-system
  labels:
    k8s-app: kube-dns
    version: v8
    kubernetes.io/cluster-service: "true"
spec:
  replicas: 1
  selector:
    k8s-app: kube-dns
    version: v8
  template:
    metadata:
      labels:
        k8s-app: kube-dns
        version: v8
        kubernetes.io/cluster-service: "true"
    spec:
      containers:
      - name: etcd
        image: tlitiwwhtmi/etcd
        resources:
          limits:
            cpu: 100m
            memory: 50Mi
        command:
        - /usr/local/bin/etcd
        - -data-dir
        - /var/etcd/data
        - -listen-client-urls
        - http://127.0.0.1:2379,http://127.0.0.1:4001
        - -advertise-client-urls
        - http://127.0.0.1:2379,http://127.0.0.1:4001
        - -initial-cluster-token
        - skydns-etcd
        volumeMounts:
        - name: etcd-storage
          mountPath: /var/etcd/data
      - name: kube2sky
        image: outrider/kube2sky
        resources:
          limits:
            cpu: 100m
            memory: 50Mi
        args:
        # command = "/kube2sky"
        - --domain=cluster.local
        - --kube_master_url=http://10.25.143.50:8080
      - name: skydns
        image: outrider/skydns
        resources:
          limits:
            cpu: 100m
            memory: 50Mi
        args:
        # command = "/skydns"
        - -machines=http://localhost:4001
        - -addr=0.0.0.0:53
        - -domain=cluster.local
        ports:
        - containerPort: 53
          name: dns
          protocol: UDP
        - containerPort: 53
          name: dns-tcp
          protocol: TCP
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 30
          timeoutSeconds: 5
      - name: healthz
        image: outrider/exechealthz
        resources:
          limits:
            cpu: 10m
            memory: 20Mi
        args:
        - -cmd=nslookup kubernetes.default.svc.cluster.local localhost >/dev/null
        - -port=8080
        ports:
        - containerPort: 8080
          protocol: TCP
      volumes:
      - name: etcd-storage
        emptyDir: {}
      dnsPolicy: Default  # Don't use cluster DNS.

  

     service

  

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: 10.254.0.3
  ports:
  - name: dns
    port: 53
    protocol: UDP
  - name: dns-tcp
    port: 53
    protocol: TCP

  创建namespace 

    

apiVersion: v1
kind: Namespace
metadata:
  name: kube-system

  

 

3. node  进行 dns 配置

  在启动脚本添加:

    

 --cluster-dns=10.254.0.3 \
 --cluster-domain=cluster.local

  

4. 重启node

  

5. 测试pod

   

apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - image: busybox
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
    name: busybox
  restartPolicy: Always

  

6. 测试

  

kubectl  exec busybox -- nslookup ngservice

 测试结果

Server:    10.254.0.3
Address 1: 10.254.0.3

Name:      ngservice
Address 1: 10.254.52.109

  

     

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes中的DNS(Domain Name System)是用于解析服务名称到其对应的网络地址的核心组件。在Kubernetes集群中部署和配置DNS非常简单。 首先,确保Kubernetes集群已经成功部署并且kubectl命令可用。接下来,按照以下步骤进行DNS配置和部署: 1. 创建kube-dns的YAML文件 通过创建一个名为kube-dns.yaml的YAML文件来定义kube-dns的Deployment和Service。在该文件中,需要指定kube-dns镜像的名称和版本,以及相关的部署和服务配置。示例kube-dns.yaml内容如下: ``` apiVersion: apps/v1 kind: Deployment metadata: name: kube-dns namespace: kube-system labels: k8s-app: kube-dns spec: selector: matchLabels: k8s-app: kube-dns template: metadata: labels: k8s-app: kube-dns spec: containers: - name: kube-dns image: k8s.gcr.io/k8s-dns-kube-dns:1.15.0 # 更多配置 --- 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: 10.96.0.10 ports: - name: dns port: 53 protocol: UDP ``` 2. 创建kube-dns对象 运行以下命令来创建kube-dns Deployment和Service: ``` kubectl create -f kube-dns.yaml ``` 3. 验证DNS是否正常工作 运行以下命令来验证DNS是否部署成功: ``` kubectl get pods --all-namespaces -l k8s-app=kube-dns ``` 如果看到kube-dns的Pod以Running状态运行,则表示DNS已经正常部署。 现在,Kubernetes集群中的所有服务都可以通过它们的服务名称进行解析。例如,如果有一个名为my-service的服务,可以使用my-service作为域名来访问它。 这就是在Kubernetes中配置和部署DNS的过程。DNS是Kubernetes中非常重要的一个组件,确保了服务之间的通信和发现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值