CoreDNS

Pods in EKS: can't resolve DNS (but can ping IP)

假装没事ソ 提交于 2020-08-10 05:02:25
问题 I have 2 EKS clusters, in 2 different AWS accounts and with, I might assume, different firewalls (which I don't have access to). The first one (Dev) is all right, however, with the same configuration, UAT cluster pods is struggling to resolve DNS. The Nodes can resolve and seems to be all right. 1) ping 8.8.8.8 works --- 8.8.8.8 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3003ms 2) I can ping the IP of google (and others), but not the actual dns names. Our

Dubbo-go k8s注册中心设计方案与实现

不想你离开。 提交于 2020-08-09 08:56:30
Dubbo-go k8s注册中心设计方案与实现 随着云原生的推广,越来越多的公司或组织将服务容器化,并将容器化后的服务部署在k8s集群中。 今天这篇文章将会介绍dubbo-go将k8s作为服务注册中心的方案设计,以及具体实现。到目前为止该方案的实现已经被合并到dubbo-go的master分支。具体实现为 关于Kubernetes的PullRequest 。 k8s管理资源的哲学 k8s作为容器集群化管理方案可以将管理资源的维度可主观的分为服务实例管理和服务接入管理。 服务实例管理,主要体现方式为Pod设计模式加控制器模式。控制器保证具有特定标签(Label)的Pod保持在恒定的数量(多删,少补)。 服务接入管理,主要为Service,该Service默认为具有特定标签(Label)的一批Pod提供一个VIP(ClusterIP)作为服务的接入点,默认会按照round-robin的负载均衡策略将请求转发到真正提供服务的Pod。并且CoreDNS为该Service提供集群内唯一的域名。 k8s服务发现模型 为了明确k8s在服务接入管理提供的解决方案,我们以kube-apiserver 提供的API(HTTPS)服务为例。k8s集群为该服务分配了一个集群内有效的ClusterIP,并通过CoreDNS为其分配了唯一的域名 kubernetes

使用kubeadm安装Kubernetes

浪尽此生 提交于 2020-08-07 20:55:57
使用kubeadm安装Kubernetes Dlutzhangyi 2019-08-07 23:45:17 979 收藏 5 分类专栏: Kubernetes 版权 使用kubeadm安装Kubernetes 环境准备 基础配置 安装Docker 关闭防火墙 关闭SELinux 关闭swap 配置转发参数 配置Kubernetes阿里云源 安装Kubernetes相关组件 加载IPVS内核 安装Master节点 执行kubeadm init 失败 手动下载镜像 执行kubeadm init 配置网络 安装Node节点 下载镜像 添加Node节点 FAQ 执行kubeadm init显示kubelet not running 获取不到pods 参考 本次配置使用kubeadm安装Kubernetes,使用kubeadm init和kubeadm join两个命令可以很容易的初始化master节点和将node节点加入到master节点上。 环境准备 系统 版本 Kubernetes v1.15.1 Docker 18.06.1-ce Centos7 CentOS Linux release 7.1.1503 (Core) 节点 主机名 Roles 10.32.170.109 dx-ee-releng-webserver01 master 10.21.88.3 gh-ee-plus09

如何使用Istio 1.6管理多集群中的微服务?

佐手、 提交于 2020-08-07 16:20:43
假如你正在一家典型的企业里工作,需要与多个团队一起工作,并为客户提供一个独立的软件,组成一个应用程序。你的团队遵循微服务架构,并拥有由多个Kubernetes集群组成的广泛基础设施。 由于微服务分布在多个集群中,你需要设计一个解决方案来集中管理所有微服务。幸运的是,你正在使用Istio,提供这个解决方案只不过是另一个配置的变化。 像Istio这样的服务网格技术可以帮助你安全地发现和连接分布在多个集群和环境中的微服务。今天我们来讨论一下使用Istio管理托管在多个Kubernetes集群中的微服务。 架构说明 Istio使用以下组件提供跨集群服务发现: Istio CoreDNS:每个Istio控制平面都有一个CoreDNS。Istio使用它来发现全局范围上定义的服务。例如,如果一个托管在集群1上的微服务需要连接到另一个托管在集群2上的微服务,你需要为运行在集群2上的微服务在Istio CoreDNS上做一个全局条目。 Root CA:由于Istio需要在不同集群上运行的服务之间建立mTLS连接,因此需要使用共享的Root CA为两个集群生成中间CA证书。这就在不同集群上运行的微服务之间建立了信任,因为中间CA共享同一个Root CA。 Istio Ingress网关:集群间的通信通过Ingress网关进行,服务之间没有直接连接。因此,你要确保Ingress网关是可发现的

k8s 1.8.2部署实践

☆樱花仙子☆ 提交于 2020-08-06 13:21:41
由于业务需要,近期在研究k8s,故就需要先部署一套。我通过官方文档来部署发现还是有一些坑,故整理了部署中遇到的问题做个记录。本文章主要介绍了在centos7环境下k8s 1.8.2+dashboard+metrics server+ingress的部署。 系统环境 1,k8s的版本为1.8.2 2,docker ce的版本为19.03.8-3 3,五台主机操作系统版本为centos7,kernel版本3.10.0-957 4,使用五台主机部署,机器列表 172.18.2.175 master1 172.18.2.180 master2 172.18.2.181 master3 172.18.2.186 work1 172.18.2.187 work2 172.18.2.182 apiserver-lb 部署HA架构 1,etcd是使用Go语言开发的一个开源的、高可用的强一致性分布式key-value存储系统,可以用于配置共享和服务的注册和发现集群,每个节点都可以提供服务。 2,kubernetes系统组件间只能通过API服务器通信,它们之间不会直接通信,API服务器是和etcd通信的唯一组件。 其他组件不会直接和etcd通信,需要通过API服务器来修改集群状态。 3,controller-manager和scheduler监听API服务器变化,如果API服务器有更新则进行对应的操作

赛题解析|初赛赛道三:服务网格控制面分治体系构建

余生颓废 提交于 2020-08-05 05:26:45
首届云原生编程挑战赛正在报名中,初赛共有三个赛道,题目如下: 赛道一:实现一个分布式统计和过滤的链路追踪 赛道二:实现规模化容器静态布局和动态迁移 赛道三:服务网格控制面分治体系构建 立即报名 (报名时间即日起至06/29): https://tianchi.aliyun.com/specials/promotion/cloudnative#problem-definition 本文主要针对赛道三题目做出剖析,帮助选手更高效的解题。 背景知识 “服务网格” 是近年来非常火热的技术,其全托管的思维非常适合云原生场景。“服务网格” 核心分为控制面与数据面:数据面主要是一个名为 Sidecar 的代理组件,它通过接收控制面发送的路由与控制信息来定向转发或处理数据。这样一些坐落在服务网格里的应用就将整个分布式逻辑交给了底层,自己不用关心了。一旦与底层解耦,灵活性大大增加,更符合云原生的标准。 题目解析 本题的核心考查点还是如何让服务网格的控制面支撑大规模的 Sidecar 实例。为什么会产生这个问题呢?因为在目前服务网格影响最广的实现 Istio 架构中,控制平面 Pilot 负责整个系统的路由转译工作,也就是说所有服务的实例信息都需要通过 Pilot 下发给每一个 Sidecar,当然用户可以通过 SidecarScope 来设置个别 Sidecar 对于系统服务的可见性,但这只会影响到

Kubernetes 1.18.3高可用集群快速升级及扩容

一世执手 提交于 2020-07-28 17:52:59
Kubernetes 1.18.3 已经正式发布,高可用集群也可以直接升级(这里改用hub.docker.com的镜像,可以快速更新整个集群、增加新的master和worker节点)。 快速升级(含国内镜像快速下载链接)包括升级kubeadm/kubectl/kubelet版本、拉取镜像、升级Kubernetes集群三个主要步骤。参考《 Ubuntu上软件锁定版本不更新 》安装特定DockerCE版本。 实现将镜像传送到相应节点上,然后在任何一个master节点运行下面的命令即可完成升级。 kubeadm upgrade apply v1 .18 .3 在当前的集群中新增节点: 第一步,重新创建certificate key和token: sudo kubeadm init phase upload-certs --upload-certs ### Got: # [upload-certs] Using certificate key: # 2ffe5bbf7d2e670d5bcfb03dac194e2f21eb9715f2099c5f8574e4ba7679ff78 # Add certificate-key for Multi Master Node. kubeadm token create --print-join-command --certificate-key

向Kubernetes集群域名服务器中插入自定义的解析记录-coredns

老子叫甜甜 提交于 2020-07-27 16:32:16
向Kubernetes集群域名服务器中插入自定义的解析记录-coredns 注意:从Kubenretes 1.14开始,集群内部的域名服务器默认换成了coredns 找到kube-system命名空间的名称为coredns的configmap: » kubectl get configmap coredns -n kube-system NAME DATA AGE coredns 1 9d » 编辑这个configmap: ~ » kubectl edit configmap coredns -n kube-system 编辑为以下内容(添加了hosts块): apiVersion: v1 data: Corefile: | .:53 { errors health kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure upstream fallthrough in-addr.arpa ip6.arpa ttl 30 } hosts { 10.10.10.10 www.baidu.com 10.10.10.11 www.baidu.cn #添加记录 } prometheus :9153 forward . "/etc/resolv.conf" cache 30 loop reload loadbalance }

CoreDNS suffix rewrite causes DNS queries to return the rewritten name

…衆ロ難τιáo~ 提交于 2020-06-01 05:31:22
问题 I have a Kubernetes 1.13.1 cluster with CoreDNS and a number of services running in the default namespace that I'd like to be reachable via <servicename>.nsc in addition to the default <servicename>.default.svc.cluster.local . The first thing I've tried was manually rewriting each service, like this: rewrite name gitea.nsc gitea.default.svc.cluster.local Running nslookup gitea.nsc returns the expected output: Server: 10.245.0.10 Address: 10.245.0.10#53 Name: gitea.nsc Address: 10.245.64.203 I

Kubernetes 部署集群内部DNS服务

人盡茶涼 提交于 2020-04-23 14:45:57
Kubernetes 部署集群内部DNS服务 部署官网:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns/coredns 为服务提供名称域名的访问。 - DNS服务监视Kubernetes API,为每一个Service创建DNS记录用于域名解析。 - ClusterIP A记录格式:<service-name>.<namespace-name>.svc.cluster.local 示例:my-svc.my-namespace.svc.cluster.local coredns 1、创建dns Yaml配置文件 apiVersion: v1 kind: ServiceAccount metadata: name: coredns namespace: kube - system labels: kubernetes.io /cluster-service: " true " addonmanager.kubernetes.io / mode: Reconcile --- apiVersion: rbac.authorization.k8s.io / v1 kind: ClusterRole metadata: labels: kubernetes.io /bootstrapping: