前言

阅读地址 http://thoreauz.com/2017/04/16/docker/Kubernetes%E9%83%A8%E7%BD%B2DNS%E5%92%8CDashboard/

Kubernetes中的dns是什么?

k8s的服务发现有两种,第一种是基于环境变量,第二种是基于DNS。

第一种环境变量

1.比如生成个pod的容器,默认情况,外部是不能访问容器内部的。

2.我们生成service的资源对象,绑定第一步的pod容器,后生成的pod容器的环境变量会增加第一步的service生成的集群IP。

3.这种方式缺点明显,第一个pod容器是找不到后面pod容器生成的service对象。

第二种基于DNS.

1.首先整个kube-dns的容器,它负责去获取service对应的服务

2.再整个kube-dnsmasq-amd64:1.4容器,它是个dns服务端

3.第一步检测的service的变化就自动更新到第二部的dns服务端

4.其他业务容器启动时的dns指定第二步容器的集群IP,我们可以通过cat /etc/resolv.conf 查看是否生效.

实战,如果按照作者的方法去做,dns一会就死了,改进版

1.线生成kube-dns和kube-dnsmasq容器的配置文件skydns-rc.yaml

  1. apiVersion: extensions/v1beta1
  2. kind: Deployment
  3. metadata:
  4. name: kube-dns
  5. namespace: kube-system
  6. labels:
  7. k8s-app: kube-dns
  8. kubernetes.io/cluster-service: "true"
  9. spec:
  10. # replicas: not specified here:
  11. # . In order to make Addon Manager do not reconcile this replicas parameter.
  12. # . Default is .
  13. # . Will be tuned in real time if DNS horizontal auto-scaling is turned on.
  14. strategy:
  15. rollingUpdate:
  16. maxSurge: %
  17. maxUnavailable:
  18. selector:
  19. matchLabels:
  20. k8s-app: kube-dns
  21. template:
  22. metadata:
  23. labels:
  24. k8s-app: kube-dns
  25. annotations:
  26. scheduler.alpha.kubernetes.io/critical-pod: ''
  27. scheduler.alpha.kubernetes.io/tolerations: '[{"key":"CriticalAddonsOnly", "operator":"Exists"}]'
  28. spec:
  29. containers:
  30. - name: kubedns
  31. # image: gcr.io/google_containers/kubedns-amd64:1.9
  32. image: registry.cn-hangzhou.aliyuncs.com/google-containers/kubedns-amd64:1.9
  33. args:
  34. # - --domain=cluster.local.
  35. - --domain=cluster.local.
  36. - --dns-port=
  37. - --config-map=kube-dns
  38. # This should be set to v= only after the new image (cut from 1.5) has
  39. # been released, otherwise we will flood the logs.
  40. - --v=
  41. - --kube-master-url=http://192.168.122.94:8080 # 指定api
  42. env:
  43. - name: PROMETHEUS_PORT
  44. value: ""
  45. ports:
  46. - containerPort:
  47. name: dns-local
  48. protocol: UDP
  49. - containerPort:
  50. name: dns-tcp-local
  51. protocol: TCP
  52. - containerPort:
  53. name: metrics
  54. protocol: TCP
  55. - name: dnsmasq
  56. # image: gcr.io/google_containers/kube-dnsmasq-amd64:1.4.
  57. image: registry.cn-hangzhou.aliyuncs.com/google-containers/kube-dnsmasq-amd64:1.4
  58. args:
  59. - --cache-size=
  60. - --no-resolv
  61. - --server=127.0.0.1#
  62. # - --log-facility=-
  63. ports:
  64. - containerPort:
  65. name: dns
  66. protocol: UDP
  67. - containerPort:
  68. name: dns-tcp
  69. protocol: TCP
  70. # see: https://github.com/kubernetes/kubernetes/issues/29055 for details

2.生成service,容器内部通过集群IP来访问dns,这里固定了个集群IP地址,不然会动态生成一个。配置文件名skydns-svc.yaml

  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: $DNS_SERVER_IP
  14. clusterIP: 10.10.10.254
  15. ports:
  16. - name: dns
  17. port:
  18. protocol: UDP
  19. - name: dns-tcp
  20. port:
  21. protocol: TCP

3.启动

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

4.修改各个node节点的kubelet配置并重启

vim /etc/kubernetes/kubelet
# 添加这一行
KUBELET_ARGS="--cluster_dns=10.254.0.100 --cluster_domain=cluster.local"
systemctl restart kubelet
 
5.验证
  所有pod容器重新生成,进入容器检测 cat /etc/resolv.conf  配置的dns是否有集群IP

Kubernetes部署DNS的更多相关文章

  1. Kubernetes 部署集群内部DNS服务

    Kubernetes 部署集群内部DNS服务 部署官网:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns/ ...

  2. Kubernetes集群部署DNS插件

    准备 kube-dns 相关镜像 准备 kube-dns 相关 yaml 文件 系统预定义的 RoleBinding 配置 kube-dns 相关服务 检查 kube-dns 功能 kube-dns ...

  3. k8s部署dns

    硬件环境: 两台虚拟机, 10.10.20.203 部署docker.etcd.flannel.kube-apiserver.kube-controller-manager.kube-schedule ...

  4. kubernetes部署spring cloud注册中心 Eureka

    系统环境 java JDK 1.8 Docker 18.09.6 kubernetes 1.16 创建Eureka Server 1.Maven引入相应的jar 引入 SpringBoot 做基础框架 ...

  5. Kubernetes 部署 Nebula 图数据库集群

    Kubernetes 是什么 Kubernetes 是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效,Kubernetes 提供了应 ...

  6. Kubernetes部署-二进制方式

    环境配置 一.系统环境 序号 用途 系统 Docker版本 IP地址 1 Master CentOS Linux release 7.6.1810 (Core) 19.03.4 192.168.0.1 ...

  7. [系统集成] 基于Kubernetes 部署 jenkins 并动态分配资源

    基于kubernetes 部署 jenkins master 比较简单,难点是为 jenkins 动态分配资源.基于kubernetes 为 jenkins 动态分配资源需要实现下述功能: 资源分配: ...

  8. kubernetes 部署

    kubernetes 部署(Centos 7) 一个或者多个兼容 deb 或者 rpm 软件包的操作系统,比如 Ubuntu 或者 CentOS 每台机器 2 GB 以上的内存,内存不足时应用会受限制 ...

  9. Linux 自动化部署DNS服务器

    Linux 自动化部署DNS服务器 1.首先配置主DNS服务器的IP地址,DNS地址一个写主dns的IP地址,一个写从dns的地址,这里也可以不写,在测试的时候在/etc/resolv.conf中添加 ...

随机推荐

  1. [转]Vue项目全局配置微信分享思路详解

    这篇文章给大家介绍了vue项目全局配置微信分享思路讲解,使用vue作为框架,使用vux作为ui组件库,具体内容详情大家跟随脚本之家小编一起学习吧 这个项目为移动端项目,主要用于接入公众号服务.项目采用 ...

  2. oralce创建dblink

    CREATE DATABASE LINK dblinkName CONNECT TO dbLoginName IDENTIFIED BY dbLoginPwd USING '(DESCRIPTION= ...

  3. JavaScript-Templates

    https://github.com/blueimp/JavaScript-Templates https://blueimp.github.io/JavaScript-Templates/ http ...

  4. Java中的BigDecimal类和int和Integer总结

    前言 我们都知道浮点型变量在进行计算的时候会出现丢失精度的问题.如下一段代码: System.out.println(0.05 + 0.01); System.out.println(1.0 - 0. ...

  5. 【cs231n作业笔记】一:KNN分类器

    安装anaconda,下载assignment作业代码 作业代码数据集等2018版基于python3.6 下载提取码4put 本课程内容参考: cs231n官方笔记地址 贺完结!CS231n官方笔记授 ...

  6. day41—JavaScript运动的停止条件

    转行学开发,代码100天——2018-04-26 前面学过了JavaScript运动的两种常用情形:匀速运动与缓冲运动.在这两种运动的处理过程中最大的区别在于速度的处理和到达目标点的处理. 即本文需要 ...

  7. img下面出现了蜜汁空白

    这段时间一直在做老师不值得的手机端的网页,在给元素设置宽度的时候都是使用百分比的形式,后来知道,这就是流体布局.不过这些都是后话,下面说的是在做静态手机站的时候遇到的一个问题. 因为使用了流体布局,几 ...

  8. Java中使用MATLAB作图 .

    最近做一个项目,需要很多进行很多信号处理——小魏就是学软件的,对信号处理简直是个小白,最简单的实现就是傻瓜似的调用MATLAB的各种工具箱,达到目的就行. 同时,MATLAB是种解释性语言,执行效率比 ...

  9. Delphi XE2 之 FireMonkey 入门(3) - 关于 TPosition

    把 FireMonkey 简称为 FM 吧. FM 的窗体继续使用 Left.Top 属性, 但更多控件不是了. //FM 控件的位置控制不再是 Left.Top, 取而代之的是 Position 属 ...

  10. C语言作业总结

    .## 一.我学到的内容 二.我的收获 作业 学到的知识点简介 C语言I博客作业01 学习了markdown语法. C语言I博客作业02 学习了<提问的智慧>. C语言I博客作业03 了解 ...