带你玩转kubernets-k8s
文章平均质量分 84
坚持的道路注定孤独
这个作者很懒,什么都没留下…
展开
-
带你玩转kubernetes-k8s(第49篇:深入分析k8s网络原理-[直接路由,Calico部署])
我们知道,docker0网桥上的IP地址在Node网络上是看不到的。从一个Node到一个Node内的docker0是不通的,因为它不知道某个IP地址在哪里。如果能够让这些机器知道对端docker0地址在哪里,就可以让这些docker0互相通信了。这样,在所有Node上运行的Pod就都可以互相通信了。 我们可以通过部署MultiLayer Switch(MLS)来实现...原创 2019-08-23 16:23:18 · 3521 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第48篇:深入分析k8s网络原理[开源的网络组件Flannel])
Kubernetes的网络模型假定了所有Pod都在一个可以直接连通的扁平网络空间中。这在GCE里面是现成的网络模型,Kubernetes假定这个网络也存在。而在私有云里搭建Kubernetes集群,就不能假定这种网络已经存在了。我们需要自己实现这个网络假设,将不同节点上的Docker容器之间的相互访问先打通,然后运行Kubernetes。 目前已经有多个开源组件支持容器网络模...原创 2019-08-22 19:46:53 · 1379 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第47篇:深入分析k8s网络原理[在K8s中使用网络插件)
Kubernetes目前支持两种网络插件的实现。◎ CNI插件:根据CNI规范实现其接口,以与插件提供者进行对接。◎ kubenet插件:使用bridge和host-local CNI插件实现一个基本的cbr0。为了在Kubernetes集群中使用网络插件,需要在kubelet服务的启动参数上设置下面两个参数。◎ --network-plugin-dir:kubelet启动时扫描网络插件的...原创 2019-08-21 22:29:00 · 1331 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第46篇:深入分析k8s网络原理[CNM、CNI]网络模型)
随着容器技术在企业生产系统中的逐步落地,用户对容器云的网络特性要求也越来越高。跨主机容器间的网络互通已经成为基本要求,更高的要求包括容器固定IP地址、一个容器多个IP地址、多个子网隔离、ACL控制策略、与SDN集成等。目前主流的容器网络模型主要有Docker公司提出的Container Network Model(CNM)模型和CoreOS公司提出的Container Network ...原创 2019-08-20 18:12:03 · 1347 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第45篇:深入分析k8s网络原理[Pod和Service])
Docker给我们带来了不同的网络模式,Kubernetes也以一种不同的方式来解决这些网络模式的挑战,但其方式有些难以理解,特别是对于刚开始接触Kubernetes的网络的开发者来说。我们在前面学习了Kubernetes、Docker的理论,本节将通过一个完整的实验,从部署一个Pod开始,一步一步地部署那些Kubernetes的组件,来剖析Kubernetes在网络层是如何实现及工...原创 2019-08-20 00:40:57 · 5207 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第44篇:利用DockerFile+deployment部署memcache集群)
由于今天在公司搭建memcache集群,就把今天的工作过程记录一下,与大家分享一下。制作镜像环境:centos7.3.1611基础镜像(可以自行去docker hub上面下载)也可以在下面连接下载https://pan.baidu.com/s/1OdgeDOdKO5slAPD2005isQ部署方案:Memcache版本:1.4.33M...原创 2019-08-19 23:45:37 · 2526 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第43篇:深入分析k8s网络原理[Docker的网络实现])
Docker的网络实现标准的Docker支持以下4类网络模式。◎ host模式:使用--net=host指定。◎ container模式:使用--net=container:NAME_or_ID指定。◎ none模式:使用--net=none指定。◎ bridge模式:使用--net=bridge指定,为默认设置。 在Kubernetes管理模式下通常只会使用bridge...原创 2019-08-16 20:28:16 · 1652 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第42篇:深入分析k8s网络原理[veth设备对、网桥、iptables、Netfilter、路由])
关于Kubernetes网络,我们通常有如下问题需要回答。 kubernetes的网络模型是什么? Docker背后的网络基础是什么? Docker自身的网络模型和局限是什么? Kubernetes的网络组件之间是怎么通信的? 外部如何访问Kubernetes集群? 有哪些开源组件支持Kubernetes的网络模型?本章节分别回答这...原创 2019-08-15 19:07:06 · 2193 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第41篇:深入分析集群安全机制四[Secret, PodSecurityPolicy])
Secret私密凭据 上一节提刀Secret对象,Secret的主要作用是保管私密数据,比如密码、OAuth Tokens、 SSH Key等信息。将这些私密信息放在Secret对象中比直接放在Pod或Docker Image中更安全,也更便于使用和分发。 下面的例子用于创建一个Secret:apiVersion: v1kind: Secretmetadata: n...原创 2019-08-14 15:56:21 · 4232 阅读 · 2 评论 -
带你玩转kubernetes-k8s(第40篇:深入分析集群安全机制三[Admission Control, Service Account])
Adminssion Control 突破了之前所说的认证和鉴权两道关卡之后,客户端的调用请求就能够得到API Server的真正响应了吗?答案是:不能!这个请求还需要通过Admission Control(准入控制)所控制的一个准入控制链的层层考验,才能获得成功的响应。Kubernetes官方标准的“关卡”有30多个,还允许用户自定义扩展。 Admission C...原创 2019-08-13 23:02:33 · 738 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第39篇:深入分析集群安全机制二[RBAC授权模式])
RBAC授权模式详解 RBAC(Role-Based Access Control,基于角色的访问控制)在Kubernetes的1.5版本中引入,在1.6版本时升级为Beta版本,在1.8版本时升级为GA。作为Kubeadm安装方式的默认选项,足见其重要程度。相对于其他访问控制方式,新的RBAC具有如下优势。 对集群中的资源和非资源权限均有完整的覆盖。 整个RBAC完全由几个AP...原创 2019-08-12 17:01:44 · 529 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第38篇:深入分析集群安全机制)
Kuberetes通过一系列机制来实现集群的安全控制,其中包括API Server的认证授权、准入控制机制及保护敏感信息的Secret机制等。集群的安全性必须考虑如下几个目标。(1) 保证容器与其所在宿主机的隔离。(2) 限制容器给基础设施或其他容器带来的干扰。(3) 最小权限原则一合理限制所有组件的权限,确保组件只执行它被授权的行为,通过限制单个组件的能力来限制它的权限...原创 2019-08-09 20:08:33 · 570 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第37篇:核心组件运行机制-Kubelete)
Kubelet运行机制解析 在Kubernetes集群中,在每个Node(又称Minion)上都会启动一个kubelet服务进程。该进程用于处理Master下发到本节点的任务,管理Pod及Pod中的容器。每个kubelet进程都会在API Server上注册节点自身的信息,定期向Master汇报节点资源的使用情况,并通过cAdvisor监控容器和节点资源。节点管理节点通过设置kub...原创 2019-08-08 15:36:12 · 1110 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第36篇:核心组件运行机制-Sheduler)
Scheduler 原理解析 前面深入分析了Controller Manager及它所包含的各个组件的运行机制,本节将继续对Kubernetes中负责Pod调度的重要功能模块—Kubernetes Scheduler的工作原理和运行机制做深入分析。 Kubernetes Scheduler在整个系统中承担了“承上启下”的重要功能,“承上”是指它负责接收Controller ...原创 2019-08-08 11:04:54 · 398 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第35篇:核心组件运行机制-kube-proxy与 manger-controller)
独特的Kubernetes Proxy API接口 前面讲到,Kubernetes API Server最主要的REST接口是资源对象的增、删、改、查接口,除此之外,它还提供了一类很特殊的REST接口—Kubernetes Proxy API接口,这类接口的作用是代理REST请求,即Kubernetes API Server把收到的REST请求转发到某个Node上的kubelet守护...原创 2019-08-07 21:24:55 · 562 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第34篇:核心组件运行机制-kube-apiserver)
Kubernetes API Server原理解析 总体来看,Kubernetes API Server的核心功能是提供Kubernetes各类资源对象(如 Pod、RC、Service等)的增、删、改、查及Watch等HTTP Rest接口,成为集群内各个功能模块之间数据交互和通信的中心枢纽,是整个系统的数据总线和数据中心。除此之外,它还有以下一些功能特性。 (1) 是...原创 2019-08-07 01:23:44 · 618 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第33篇:k8s-深入掌握Service:DNS服务详细讲解第三部分)
Ingress的策略配置技巧 为了实现灵活的负载分发策略,Ingress策略可以按多种方式进行配置,下面对几种常见的Ingress转发策略进行说明。1.转发到单个后端服务上 基于这种设置,客户端到Ingress Controller的访问请求都将被转发到后端的唯一Servie上,在这种情况下Ingress无须定义任何Rule。 通过如下所示的设置,对Ingress ...原创 2019-08-05 20:11:57 · 456 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第32篇:k8s-深入掌握Service:DNS服务详细讲解第二部分)
CoreDNS的配置说明 CoreDNS的主要功能是通过插件系统实现的。CoreDNS实现了一种链式插件结构,将DNS的逻辑抽象成了一个个插件,能够灵活的组合使用。 常用的插件如下:◎ loadbalance:提供基于DNS的负载均衡功能。◎ loop:检测在DNS解析过程中出现的简单循环问题。◎ cache:提供前端缓存功能。◎ health:对Endpoint...原创 2019-08-02 17:43:41 · 1009 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第31篇:k8s-深入掌握Service:DNS服务详细讲解)
DNS服务搭建和配置指南 作为服务发现机制的基本功能,在集群内需要能够通过服务名对服务进行访问,这就需要一个集群范围内的DNS服务来完成从服务名到ClusterIP的解析。 DNS服务在Kubernetes的发展过程中经历了3个阶段,接下来会继续讲解。 在k8s1.2版本时,DNS服务是由SkyDNS提供的,它由4个容器组成:kube2sky、skydns、etcd...原创 2019-08-02 00:53:32 · 2862 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第30篇:k8s-深入掌握Service:定义详解)
Headless Service 在某些应用场景中,开发人员希望自己控制负载均衡的策略,不使用Service提供的默认负载均衡的功能,或者应用程序希望知道属于同组服务的其他实例。k8s提供了Headless Service来实现这种功能,即不为Service设置ClusterIP(入口IP地址),仅通过Label Selector将后端的Pod列表返回给调用的客户端。apiVers...原创 2019-07-31 22:05:14 · 559 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第29篇:k8s-深入掌握Service:定义详解)
Pod的讲解终于告一段落了,现在我们来一起学习Service。 Service是Kubernetes的核心概念,通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到后端的各个容器应用上。本章对Service的使用进行详细说明,包括Service的负载均衡机制、如何访问Service、Headless Service、DN...原创 2019-07-30 21:31:22 · 1486 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第28篇:k8s-kubeadm1.4.0安装 k8s高可用)
今天我们来使用kubeadm 安装高可用k8s。 系统:Centos7 角色规划如下:hostname ip role k8s-master1 20.0.40.51 master k8s-master2 20.0.40.52 master k8s-master3 20.0....原创 2019-07-30 16:13:49 · 566 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第27篇:k8s-深入掌握Pod-使用StatefulSet 搭建MongoDB已经GlusterFS+Heketi的部署-2)
定义StorageClass 准备工作已经就绪,集群群里元现在可以在k8s集群中定义一个StorageClass了。 storageclass-gluster-hekeit.yaml 配置文件的内容如下:apiVersion: storage.k8s.io/v1kind: StorageClassmetadata: name: gluster-testprovi...原创 2019-07-27 23:02:21 · 2289 阅读 · 1 评论 -
带你玩转kubernetes-k8s(第26篇:k8s-深入掌握Pod-使用StatefulSet 搭建MongoDB已经GlusterFS+Heketi的部署-1)
昨天的内容,大家了解概念就好,至于实例,我们后面service章节详细来做。 本节以MongoDB为例,使用StatefulSet 完成MongoDB集群的创建,为每个MongoDB实例在共享存储中(这里采用GlusterFs)都申请一篇存储空间,以实现一个无单点故障、高可用、可动态扩展的MongoDB集群。部署架构如下图:前提条件 在创建StatefulSet ...原创 2019-07-26 01:12:28 · 2578 阅读 · 4 评论 -
带你玩转kubernetes-k8s(第25篇:k8s-深入掌握Pod-Metrics中的Pods类型)
类型为Pods的指标数据来源于Pod对象本身,其中target指标类型只能使用AverageValue,示例如下metrics:- type: Pods pods: metric: name: packets-per-second target: type: AverageValue averageValue: 1k ...原创 2019-07-25 00:44:42 · 2459 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第24篇:k8s-深入掌握Pod-Pod扩缩容)
在实际生产系统中,我们经常会遇到某个服务需要扩容的场景,也可能会遇到由于资源紧张或者工作负载降低而需要减少服务实例数量的场景。此时可以利用Deployment/RC的Scale机制来完成这些工作。 K8S对Pod的扩缩容操作提供了手动和自动两种模式,手动模式通过执行kubectl scale命令或通过RESTful API对一个Depoyment/RC进行Pod副本数量的设置,既...原创 2019-07-24 00:38:42 · 2819 阅读 · 3 评论 -
带你玩转kubernetes-k8s(第23篇:k8s-深入掌握Pod-RC的滚动升级)
上节我们讲解了使用Deployment的滚动升级和回滚内容,今来讲解Replication Controller的滚动升级使用kubectl rolling-update命令完成RC的滚动升级 对于RC的滚动升级,kubernetes还提供了一个 kubectl rolling-update命令进行实现。该命令创建了一个新的RC,然后自动控制旧的RC中的Pod副本数量减少到0,同时新的的...原创 2019-07-23 17:19:05 · 470 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第22篇:k8s-深入掌握Pod-Deployment的回滚,暂停和恢复)
有时我们可能需要将Deployment回滚到旧版本。在默认情况下,所有Deployment的发布历史记录都被保留在系统中,以便于我们随时进行回滚(可以配置你是记录数量)。 假设在更新Deployment镜像时,将容器镜像名误设置成Nginx:1.91(一个不存在的镜像),此时Deployment的部署过程会卡住:kubectl set image deployment/ngi...原创 2019-07-22 23:23:04 · 2921 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第21篇:k8s-深入掌握Pod-初始化容器、Pod滚动升级)
上节内容的错误,还请大家不要太在意,后面我们会解决的,理解Job的作用,概念就可以了。下面我们进入正题。Init Container(初始化容器)在很多应用场景中,应用在启动之前都需要进行如下初始化操作。◎ 等待其他关联组件正确运行(例如数据库或某个后台服务)。◎ 基于环境变量或配置模板生成配置文件。◎ 从远程数据库获取本地所需配置,或者将自身注册到某个中央数据库中。◎ 下...原创 2019-07-22 17:35:48 · 804 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第20篇:k8s-深入掌握Pod-Job:批处理调度)
近几天家里出了些事情,所以耽搁了更新的进度,希望大家可以谅解。Job: 批处理调度Kubernetes从1.2版本开始支持批处理类型的应用,我们可以通过Kubernetes Job资源对象来定义并启动一个批处理任务。批处理任务通常并行(或者串行)启动多个计算进(work item),处理完成后,整个批处理任务结束。按照批处理任务实现方式的不同,批处理任务可以分为以下的几种模式。...原创 2019-07-19 22:52:06 · 1537 阅读 · 8 评论 -
带你玩转kubernetes-k8s(第19篇:k8s-深入掌握Pod-Pod优先级调度)
今天直接进入正题。Pod Priority Preemption: Pod优先级调度 对于运行各种负载(如Service、Job)的中等规模或者大规模的集群来说,出于各种原因,我们需要尽可能提高集群的资源利用率。而提高资源利用率的常规做法是采用优先级方案,即不同类型的负载对应不同的优先级,同时允许集群中的所有负载所需的资源总量超过集群可提供的资源,在这种情况下,当发生...原创 2019-07-17 23:47:29 · 862 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第18篇:k8s-深入掌握Pod-Node亲和性调度,Taints和Tolerations[污点和容忍])
上节介绍的NodeAffinity节点亲和性,是在Pod上定义的一种属性,使得Pod能够被调度到某些Node上运行(优先选择或强制要求)。Taint则正好相反,它让Node拒绝Pod的运行。 Taint需要和Toleration配合使用,让Pod避开那些不合适的Node。在Node上设置一个或多个Taint之后,除非Pod明确声明能够容忍这些污点,否则无法在这些Node...原创 2019-07-16 23:23:49 · 913 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第17篇:k8s-深入掌握Pod-Node亲和性调度,Pod亲和与互斥调度策略)
今天我为大家讲解Node亲和性调度,Pod亲和与互斥调度策略,本节课程内容,理论偏多,希望大家可以认认真真的看,如果有不理解的,可以和博主沟通哦。NodeAffinity:Node亲和性调度 NodeAffinity意为Node亲和性的调度策略,是用于替换NodeSelector的全新调度策略。目前有两种节点亲和性表达。◎ RequiredDuringSched...原创 2019-07-16 16:42:54 · 1373 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第16篇:k8s-深入掌握Pod-玩转Pod调度)
上节为大家讲解了Pod的健康检查和服务可用性检查,这节我就带着大家更深层次的去学习Pod玩转Pod调度 在k8s平台上,我们很少会直接创建一个Pod,在大多数情况下会通过RC、Deployment、DaemonSet、Job等控制器完成对一组Pod副本的创建,调度及全生命周期的自动控制任务。 在最早的k8s版本里面没有这么多Pod副本控制器的,只有一个Pod副本控制器...原创 2019-07-15 23:36:48 · 583 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第15篇:k8s-深入掌握Pod-上节遗留问题解决方案,Pod生命周期和重启策略)
上篇我们在使用Downward API将Pod的labels 信息 annotations信息过载到Volume这个实例中出现了问题,本节先解决上篇的内容再回头讲解今天的内容。 上篇中,我们mouthPaht指定的目录的是/etc下面的目录,由于docker的容器的目录结构,docker容器是对下层的文件系统有只对权限,但是没有修改权限,所以导致报一些了rootfs的错误。...原创 2019-07-13 16:24:21 · 1013 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第14篇:k8s-深入掌握Pod-在容器内获取Pod信息)
哈喽~大家好!昨天我们讲解了ConfigMap的使用,今天我来继续深入的讨论Pod的概念及其用法。 现在我们进入正题。Downward API 我们知道,每个Pod在被成功创建出来之后,都会被系统分配唯一的名字、IP地址,并且处于某个Namespace中,那么我们如何在Pod的容器内获取Pod的这些重要信息呢?答案就是使用Downward API。 Down...原创 2019-07-13 00:24:04 · 5847 阅读 · 1 评论 -
带你玩转kubernetes-k8s(第13篇:k8s-深入掌握Pod-在Pod中使用ConfigMap)
昨天带着大家一起使用三种方式创建了ConfigMap,今天我就带着大家一起来学习在Pod中使用ConfigMap。在Pod中使用ConfigMap1.通过环境变量方式使用ConfigMap以前面创建的ConfigMap“cm-appenv”为例:根据上图中的部分内容填写下面yamlapiVersion: v1kind: Podmetadata: name:...原创 2019-07-12 00:11:41 · 1442 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第12篇:k8s-深入掌握Pod-Pod容器共享Volume)
这一节我们继续来深入讲解Pod。Pod容器共享Volume 同一个Pod中的多个容器能够共享Pod级别的存储卷Volume。Volume可以被定义为各种类型,多个容器各自进行挂载操作,将一个Volume挂载为容器内部需要的目录。 在下面的实例中,Pod内包含两个容器:tomcat和busybox,在Pod级别设置Volume “app-logs”,用于tomcat...原创 2019-07-11 01:17:42 · 1100 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第11篇:k8s-深入掌握Pod-Pod的基本用法)
上一篇我们讲解了Pod.Yaml的定义,以及各个参数的作用。那么我们这一篇就深入的讲解Pod的基本用法。Pod的基本用法 在对Pod的用法进行说明之前,有必要先对Docker容器中应用的运行要求进行说明。 在使用Docker时,可以使用docker run命令创建并命令创建并启动一个容器。而在k8s系统中对长时间运行的容器要求是:其主程序需要一直...原创 2019-07-10 00:35:30 · 712 阅读 · 0 评论 -
带你玩转kubernetes-k8s(第10篇:k8s-深入掌握Pod-Pod定义详解)
本章将对Kubernetes如何发布与管理容器应用进行详细说明和示例,主要包括Pod和容器的使用、应用配置管理、Pod的控制和调度管理、Pod的升级和回滚,以及Pod的扩缩容机制等内容。 1 Pod 定义详解。YAML格式的Pod定义文件如下: apiVersion:v1kind: Podmetadata: name: string n...原创 2019-07-09 18:25:20 · 940 阅读 · 0 评论