下载下面的两个文件

https://github.com/coredns/deployment/tree/master/kubernetes

wget https://raw.githubusercontent.com/coredns/deployment/master/kubernetes/coredns.yaml.sed
wget https://raw.githubusercontent.com/coredns/deployment/master/kubernetes/deploy.sh

coredns.yaml.sed文件

apiVersion: v1
kind: ServiceAccount
metadata:name: corednsnamespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:labels:kubernetes.io/bootstrapping: rbac-defaultsname: system:coredns
rules:- apiGroups:- ""resources:- endpoints- services- pods- namespacesverbs:- list- watch- apiGroups:- discovery.k8s.ioresources:- endpointslicesverbs:- list- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:annotations:rbac.authorization.kubernetes.io/autoupdate: "true"labels:kubernetes.io/bootstrapping: rbac-defaultsname: system:coredns
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: system:coredns
subjects:
- kind: ServiceAccountname: corednsnamespace: kube-system
---
apiVersion: v1
kind: ConfigMap
metadata:name: corednsnamespace: kube-system
data:Corefile: |.:53 {errorshealth {lameduck 5s}readykubernetes CLUSTER_DOMAIN REVERSE_CIDRS {fallthrough in-addr.arpa ip6.arpa}prometheus :9153forward . UPSTREAMNAMESERVER {max_concurrent 1000}cache 30loopreloadloadbalance}STUBDOMAINS
---
apiVersion: apps/v1
kind: Deployment
metadata:name: corednsnamespace: kube-systemlabels:k8s-app: kube-dnskubernetes.io/name: "CoreDNS"
spec:# replicas: not specified here:# 1. Default is 1.# 2. Will be tuned in real time if DNS horizontal auto-scaling is turned on.strategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1selector:matchLabels:k8s-app: kube-dnstemplate:metadata:labels:k8s-app: kube-dnsspec:priorityClassName: system-cluster-criticalserviceAccountName: corednstolerations:- key: "CriticalAddonsOnly"operator: "Exists"nodeSelector:kubernetes.io/os: linuxaffinity:podAntiAffinity:preferredDuringSchedulingIgnoredDuringExecution:- weight: 100podAffinityTerm:labelSelector:matchExpressions:- key: k8s-appoperator: Invalues: ["kube-dns"]topologyKey: kubernetes.io/hostnamecontainers:- name: corednsimage: coredns/coredns:1.8.4imagePullPolicy: IfNotPresentresources:limits:memory: 170Mirequests:cpu: 100mmemory: 70Miargs: [ "-conf", "/etc/coredns/Corefile" ]volumeMounts:- name: config-volumemountPath: /etc/corednsreadOnly: trueports:- containerPort: 53name: dnsprotocol: UDP- containerPort: 53name: dns-tcpprotocol: TCP- containerPort: 9153name: metricsprotocol: TCPsecurityContext:allowPrivilegeEscalation: falsecapabilities:add:- NET_BIND_SERVICEdrop:- allreadOnlyRootFilesystem: truelivenessProbe:httpGet:path: /healthport: 8080scheme: HTTPinitialDelaySeconds: 60timeoutSeconds: 5successThreshold: 1failureThreshold: 5readinessProbe:httpGet:path: /readyport: 8181scheme: HTTPdnsPolicy: Defaultvolumes:- name: config-volumeconfigMap:name: corednsitems:- key: Corefilepath: Corefile
---
apiVersion: v1
kind: Service
metadata:name: kube-dnsnamespace: kube-systemannotations:prometheus.io/port: "9153"prometheus.io/scrape: "true"labels:k8s-app: kube-dnskubernetes.io/cluster-service: "true"kubernetes.io/name: "CoreDNS"
spec:selector:k8s-app: kube-dnsclusterIP: CLUSTER_DNS_IPports:- name: dnsport: 53protocol: UDP- name: dns-tcpport: 53protocol: TCP- name: metricsport: 9153protocol: TCP

deploy.sh 文件

#!/bin/bash# Deploys CoreDNS to a cluster currently running Kube-DNS.show_help () {
cat << USAGE
usage: $0 [ -r REVERSE-CIDR ] [ -i DNS-IP ] [ -d CLUSTER-DOMAIN ] [ -t YAML-TEMPLATE ]-r : Define a reverse zone for the given CIDR. You may specify this option morethan once to add multiple reverse zones. If no reverse CIDRs are defined,then the default is to handle all reverse zones (i.e. in-addr.arpa and ip6.arpa)-i : Specify the cluster DNS IP address. If not specified, the IP address ofthe existing "kube-dns" service is used, if present.-s : Skips the translation of kube-dns configmap to the corresponding CoreDNS Corefile configuration.USAGE
exit 0
}# Simple Defaults
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
CLUSTER_DOMAIN=cluster.local
YAML_TEMPLATE="$DIR/coredns.yaml.sed"
STUBDOMAINS=""
UPSTREAM=\\/etc\\/resolv\.conf# Translates the kube-dns ConfigMap to equivalent CoreDNS Configuration.
function translate-kube-dns-configmap {kube-dns-upstreamnameserver-to-corednskube-dns-stubdomains-to-coredns
}function kube-dns-upstreamnameserver-to-coredns {up=$(kubectl -n kube-system get configmap kube-dns  -ojsonpath='{.data.upstreamNameservers}' 2> /dev/null | tr -d '[",]')if [[ ! -z ${up} ]]; thenUPSTREAM=${up}fi
}function kube-dns-stubdomains-to-coredns {STUBDOMAIN_TEMPLATE='SD_DOMAIN:53 {errorscache 30loopforward . SD_DESTINATION {max_concurrent 1000}}'function dequote {str=${1#\"} # delete leading quotestr=${str%\"} # delete trailing quoteecho ${str}}function parse_stub_domains() {sd=$1# get keys - each key is a domainsd_keys=$(echo -n $sd | jq keys[])# For each domain ...for dom in $sd_keys; dodst=$(echo -n $sd | jq '.['$dom'][0]') # get the destinationdom=$(dequote $dom)dst=$(dequote $dst)sd_stanza=${STUBDOMAIN_TEMPLATE/SD_DOMAIN/$dom} # replace SD_DOMAINsd_stanza=${sd_stanza/SD_DESTINATION/$dst} # replace SD_DESTINATIONecho "$sd_stanza"done
}sd=$(kubectl -n kube-system get configmap kube-dns  -ojsonpath='{.data.stubDomains}' 2> /dev/null)STUBDOMAINS=$(parse_stub_domains "$sd")
}# Get Opts
while getopts "hsr:i:d:t:k:" opt; docase "$opt" inh)  show_help;;s)  SKIP=1;;r)  REVERSE_CIDRS="$REVERSE_CIDRS $OPTARG";;i)  CLUSTER_DNS_IP=$OPTARG;;d)  CLUSTER_DOMAIN=$OPTARG;;t)  YAML_TEMPLATE=$OPTARG;;esac
done# Conditional Defaults
if [[ -z $REVERSE_CIDRS ]]; thenREVERSE_CIDRS="in-addr.arpa ip6.arpa"
fi
if [[ -z $CLUSTER_DNS_IP ]]; then# Default IP to kube-dns IPCLUSTER_DNS_IP=$(kubectl get service --namespace kube-system kube-dns -o jsonpath="{.spec.clusterIP}")if [ $? -ne 0 ]; then>&2 echo "Error! The IP address for DNS service couldn't be determined automatically. Please specify the DNS-IP with the '-i' option."exit 2fi
fiif [[ "${SKIP}" -ne 1 ]] ; thentranslate-kube-dns-configmap
fiorig=$'\n'
replace=$'\\\n'
sed -e "s/CLUSTER_DNS_IP/$CLUSTER_DNS_IP/g" \-e "s/CLUSTER_DOMAIN/$CLUSTER_DOMAIN/g" \-e "s?REVERSE_CIDRS?$REVERSE_CIDRS?g" \-e "s@STUBDOMAINS@${STUBDOMAINS//$orig/$replace}@g" \-e "s/UPSTREAMNAMESERVER/$UPSTREAM/g" \"${YAML_TEMPLATE}"

部署

chmod +x deploy.sh
./deploy.sh -i 10.96.0.10 > coredns.yml

执行上面脚本依赖jquery,没有安装需要提前安装

yum install -y jq

执行脚本后生成coredns.yml文件

执行前注意cm coredns 的配置信息   避免丢失

 kubectl apply -f coredns.yml

部署发现报错,因为我的kube-dns的集群ip为10.1.0.10,而非默认的10.96.0.10,所以需要重新生成coredns.yml

./deploy.sh -i 10.1.0.10 > coredns.yml

 kubectl apply -f coredns.yml

coredns的镜像版本已经从之前的1.6.7升级到1.8.4最新版

coredns 更新部署相关推荐

  1. SCCM管理 - 更新部署

    软件更新 - 更新部署本篇文章主要讨论ConfigMgr软件更新部署的相关内容  状态扫描客户端基于SUP提供的更新元数据进行对自身的更新状态进行评估,并对每一个更新元数据生成一个状态(已安装.未安装 ...

  2. 网站更新部署20110210,新站部署全过程记录

    网站更新部署20110210,新站部署全过程记录 sudo adduser <用户名> 按提示输入 更改初始root账户密码 ubuntu修改初始root密码 2007-01-24 20: ...

  3. #19# SCCM管理 - 更新部署

    软件更新 - 更新部署 本篇文章主要讨论ConfigMgr软件更新部署的相关内容 状态扫描 客户端基于SUP提供的更新元数据进行对自身的更新状态进行评估,并对每一个更新元数据生成一个状态(已安装.未安 ...

  4. java war包更新 部署_关于Linux系统下基于Tomcat部署和升级war包的详细过程

    1.首先Linux先安装java,Tomcat 中间件规范要求: 1)         软件必须下载到/services/download_soft_v        --------(用xftp上传 ...

  5. 20101022网站更新部署

    上线海外版, 今天部署应该是最糟糕的一次,因为更新内容较多,所以有很多遗忘 1.由于更新了schema,只上传了索引数据导致,不能访问 2.更新了uwsgi_test2.py的内容,但是由于是一个一个 ...

  6. nuxt 更新部署因浏览器缓存导致页面错误解决方法

    部署nuxt项目后更新项目后部分页面会发生错误,无法进入,但是清除浏览器缓存和无痕模式正常显示 查原因查了大半天,后发现主要原因是因为项目更新后浏览器进行本地缓存 解决方法保证版本更新时与上版本文件名 ...

  7. 灰度发布和蓝绿,发布更新部署

    滚动发布 一般是取出一个或者多个服务器停止服务,执行更新,并重新将其投入使用.周而复始,直到集群中所有的实例都更新成新版本 灰度发布(金丝雀) 灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式. ...

  8. VUE 项目更新部署时,浏览器页面缓存问题

    VUE 文章目录 前言 一.为什么会这样? 二.如何解决 1.具体操作 2.打包测试 总结 前言 最近客户和我反应一个问题他们在服务器上更新包后,发现页面并没有更新,而且简单刷新浏览器页面也没有效果, ...

  9. 利用shell脚本自动更新部署SpringBoot项目

    文章目录 背景 脚本源码 脚本说明 脚本使用 背景 因为项目中有多个模块,每个模块需要打包成一个jar运行.每次更新到服务器比较麻烦,所以就想到利用脚本一键实现代码的更新.编译打包.备份.和启动工作. ...

最新文章

  1. [Js-Spring]Spring与IoC(控制反转,Inversion of Control)
  2. python篮球-用Python把蔡徐坤打篮球视频转换成字符动画!
  3. SQL查询 的一些原则
  4. uniapp 子组件 props拿不到数据_来吧!一文彻底搞定Vue组件!
  5. 减去字符串_从文本字符串中提取指定值的6个超级技巧解读
  6. 乐高创意机器人moc_LEGO乐高MOC作品欣赏:超有爱机器人偶E-MOTE
  7. 吴恩达机器学习 神经网络 作业1(用已经求好的权重进行手写数字分类) Python实现 代码详细解释
  8. linux 删除已输入的命令
  9. python pyecharts 折线图_Python数据可视化之pyecharts实现各种图表
  10. Firebug下载地址及安装方法
  11. 数学建模国赛LaTex模板讲解(Slager模板)
  12. 如何变更 Git 服务器 IP 地址以及变更后的解决方法
  13. 基于centos搭建reviewboard
  14. 360无线wifi路由器连接到服务器,luyou.360.cn如何登录360路由器
  15. 面试必备:常用的设计模式总结
  16. 微信公众号开发功能大全
  17. 2023中国传媒大学计算机考研信息汇总
  18. EOSRAM终扩容,再谈如何在币圈做“价值投资”!
  19. python注册码_python 注册码
  20. 计算机安全协议是,计算机通信网安全协议的分析研究

热门文章

  1. 硬盘格式化了数据怎么免费恢复?
  2. 杭电2007 求偶数平方和奇数立方和
  3. 2023年楼宇设备行业研究报告
  4. GeForce MX150相对应的NVIDIA CUDA版本_MX150显卡满血版和非满血版有哪些区别【区别对比】...
  5. python 训练集 测试集 验证集划分_将自己的图片数据集分成训练集、验证集和测试集并用 Tensorflow2.0 导入...
  6. 网络流量监控“时间戳”的实际意义
  7. CSS 盒模型 标准盒模型 IE盒模型
  8. 还单身?不如来看看AI脱单神器!
  9. win10如何查看系统盘分区表类型
  10. 区块链百科合集之共识机制