k8s部署dns

硬件环境:

两台虚拟机,

10.10.20.203 部署docker、etcd、flannel、kube-apiserver、kube-controller-manager、kube-scheduler

10.10.20.206 部署docker、flannel、kubelet、kube-proxy

软件环境:

kubernetes:1.3.3

DNS-etcd:index.tenxcloud.com/google_containers/etcd:2.2.5

kube2sky:index.tenxcloud.com/google_containers/kube2sky:1.15

skyDNS:index.tenxcloud.com/google_containers/skydns:2015-10-13-8c72f8c

1、创建dns-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: dns-rc-test
  labels:
    k8s-app: dns
    version: v8
    kubernetes.io/cluster-service: "true"
spec:
  replicas: 1
  selector:
    k8s-app: dns
    version: v8
    kubernetes.io/cluster-service: "true"
  template:
    metadata:
      labels:
        k8s-app: dns
        version: v8
        kubernetes.io/cluster-service: "true"
    spec:
      containers:
      - name: etcd
        image: 10.10.20.202/library/etcd:2.2.5
        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: 10.10.20.202/library/kube2sky:1.15
        args:
        - --kube-master_url=http://10.10.20.203:8080  #改换实际的master地址
        - --domain=cluster.local
      - name: skydns
        image: 10.10.20.202/library/skydns:2015-10-13
        args:
        - -machines=http://127.0.0.1:4001
        - -addr=0.0.0.0:53
        - -domain=cluster.local
        ports:
        - containerPort: 53
          name: dns-udp
          protocol: UDP
        - containerPort: 53
          name: dns-tcp
          protocol: TCP
      volumes:
      - name: etcd-storage
        emptyDir: {}
      dnsPolicy: Default

2、创建dns-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: dns-svc-test
  labels:
    k8s-app: dns
    kubernetes.io/cluster-service: "true"
    kubernetes.io/name: "DNStest"
spec:
  selector:
    k8s-app: dns
  clusterIP: 10.254.159.10   #在service-cluster-ip-range范围取一个值
  ports:
  - name: dns-udp
    port: 53
    protocol: UDP
  - name: dns-tcp
    port: 53
    protocol: TCP

3、部署dns

kubectl create -f /root/k8s/dns/dns-rc.yaml
kubectl create -f /root/k8s/dns/dns-service.yaml

4、在kubelet的启动脚本中增加cluster-dns=10.254.159.10和cluster-domain=cluster.local,如下,并重启kubelet。

kubelet --logtostderr=true --v=0 --address=0.0.0.0 --api-servers=http://10.10.20.203:8080 \
--pod-infra-container-image=index.tenxcloud.com/google_containers/pause-amd64:3.0 --cluster-dns=10.254.159.10 --cluster-domain=cluster.local >> /var/log/kubelet.log 2>&1 &

5、进入一个pod中执行域名解析和telnet指令,验证域名是否可用

[[email protected]master bin]# kubectl get service
NAME                 CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
dns-svc-test         10.254.159.10    <none>        53/UDP,53/TCP   4d
emp-authc-service    10.254.64.191    <nodes>       11111/TCP       40m
emp-portal-service   10.254.20.196    <nodes>       8080/TCP        39m
kubernetes           10.254.0.1       <none>        443/TCP         10d
postgresql-service   10.254.161.247   <nodes>       5432/TCP        2h
redis-service        10.254.160.1     <nodes>       6379/TCP        1h
zookeeper-service    10.254.229.137   <nodes>       2181/TCP        2h
[[email protected]-master bin]# kubectl exec centos-master-fy8r4 -i -t -- bash -il
[[email protected]-master-fy8r4 /]# nslookup postgresql-service
Server:        10.254.159.10
Address:    10.254.159.10#53

Name:    postgresql-service.default.svc.cluster.local
Address: 10.254.161.247

[[email protected]-master-fy8r4 /]# telnet postgresql-service 5432
Trying 10.254.161.247...
Connected to postgresql-service.
Escape character is ‘^]‘.
时间: 2024-10-07 15:46:20

k8s部署dns的相关文章

Kubernetes(十四)部署K8S内部DNS服务

官网链接   https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns/coredns 用途:为service提供dns解析,部署后可以通过service名称访问该service,service会转发到pod,如果不部署dns,可以通过service的IP访问,但是耦合性较高: 查看service kubectl get svc 输出以下内容: NAME TYPE CLUSTER-IP EXTERNAL-IP

Kubernetes集群部署DNS服务

Kubernetes集群部署DNS服务在kubernetes中每一个service都会被分配一个虚拟IP,每一个Service在正常情况下都会长时间不会改变,这个相对于pod的不定IP,对于集群中APP的使用相对是稳定的. 但是Service的信息注入到pod目前使用的是环境变量的方式,并且十分依赖于pod(rc)和service的创建顺序,这使得这个集群看起来又不那么完美,于是kubernetes以插件的方式引入了DNS系统,利用DNS对Service进行一个映射,这样我们在APP中直接使用域

k8s部署环境

k8s部署环境 公有云环境:AWS.腾讯云.阿里云等等 私有云:OpenStack.vSphere等 Baremetal环境:物理服务器或独立虚拟机(底层没有云环境).    k8s部署方式 Minikube:Kubernetes官网提供的微型分布式环境,适合学习.初次体验,不过应该需要梯子才能用. Kubeadm:由于二进制部署方式过于复杂,所以后来出现了Kubeadm的部署方式,这种方式其实是将k8s的各组件容器化了.注意,使用容器方式部署Master节点各组件时,需要安装kubelet和d

【初级篇】Linux下部署DNS域名解析服务

Linux下部署DNS域名解析服务 1.          实验需求: 1)     使用RPM包安装bind服务 2) 实现配置正向解析域名,反向解析IP地址. 3)搭建从服务器,实现配置和主服务器实时同步,相互提供冗余备份. 2.          实验环境: Linux服务器系统版本:Red Hat Enterprise Linux 6.5(主)   IP:192.168.10.20 Linux服务器系统版本:Red Hat Enterprise Linux 6.5(从)   IP:192

Centos 使用dnsmasq部署DNS服务器

Centos 使用dnsmasq部署DNS服务器 一.默认情况下Centos已安装dnsmasq,如未安装,请自行安装. 12  yum install dnsmasq   13  yum install bind-utils 二.配置hosts文件,解析域名.   14  vim /etc/hosts #添加内容格式 172.17.100.26    ns1.xnnet.com 三.配置主配置文件.   19  vim /etc/dnsmasq.conf #配置在最后三行log-queries

部署DNS服务和管理DNS

部署DNS服务和管理DNS 一.DNS概述 1.早期使用HOSTS文件解析域名主机名称重复,而且主机维护困难2.hosts缺点:名称容易重复,文件大解析效率下降,单点管理主机容易故障3.HOST文件位置:Hosts文件%SystemRoot%\system32\drivers\etc4.DNS(Domain Name System) 域名解析系统5.作用:域名解析为IP地址IP地址解析为域名 现在:DNS服务解析域名 层次性:把DNS分为4层结构 分布式:每层结构由不同的多个DNS服务器管理 二

k8s部署wordpress记录

1.部署说明 wordpress和mysql分开部署,各部署一个svc. wordpress svc通过kube-dns组件服务访问mysql svc 配置NFS(实验环境测试用nfs方便) 配置PV,PVC存储wordpress和mysql数据 需要用到的变量: mysql MYSQL_ROOT_PASSWORD root的密码 wordpress WORDPRESS_DB_HOST 后端mysql主机 WORDPRESS_DB_PASSWORD 连接wordpress 数据的密码 WORDP

Windows Server 部署DNS服务

Windows Server 部署DNS服务 当我们在上网的时候,通常输入的是网址,其实这就是一个域名,而我们计算机网络上的计算机彼此之间只能用I P地址才能相互识别.域名(网址)只是相当与门牌号,只是为了方便记忆而增加的.(图片来自网络)DNS服务器是(Domain Name System)域名系统或者域名服务,域名系统为Internet上的主机分配域名地址和IP地址.用户使用域名地址,该系统就会自动把域名地址转为IP地址.域名服务是运行域名系统的Internet工具.执行域名服务的服务器称之

k8s部署ingress及http、https-实战篇

一.简介ingress:ingress-nginx #用于实现反代https://kubernetes.github.io/ingress-nginx/deploy/#generic-deployment kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yamlhttps://kubernetes.github.io/ingress-nginx/