![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
kubernetes
文章平均质量分 90
五星上炕
君子悟本,本立而道生。
展开
-
kubernetes日志架构
日志主要分成两种,一种是应用日志,另外一种是系统日。日志对于理解集群内部的工作原理非常有帮助,另外日志对于调试、排错、监控集群活动特别有用。大部分的现在应用都支持某种类型的日志机制,相似的,大部分的容器引擎也被设计成支持此种类型的日志机制。标准输出及标准错误输出是最简单的也是大部容器内嵌的日志机制。然而,容器引擎支持的原生日志系统往往不是有关日志的完全解决方案。例如,容器销毁、pod驱除、节点死亡...原创 2018-07-09 17:44:40 · 4649 阅读 · 0 评论 -
kubernetes自定义、扩展介绍
kubernetes具备高可配、高扩展特性。自定义kubernetes集群大体上也分成两个方向,一个是配置,一个是扩展。配置主机是修改配置文件,扩展需要运行额外的程序。...原创 2018-07-13 12:55:30 · 1720 阅读 · 0 评论 -
kubernetes之Deployments
Deployments是kubernetes中的一种控制器,是比ReplicaSet更高级的概念,它最重的特性是支持对pod与ReplicaSet的声明式升级,声明式升级比其它方式的升级更安全可靠。需要注意的是用户不应该手动管理被Deployments创建的ReplicaSet。使用案例以下是几种典型的Deployments使用案例:Create a Deployment to rol...原创 2018-07-19 13:46:40 · 3486 阅读 · 0 评论 -
Kubernetes之pod优先级与抢占
优先级导致不公平,抢占是强盗行为,受害者莫名奇妙。此特性增加系统复杂性并带来额外不稳定因素。如果资源紧张,首先应该扩容,硬件很便宜,应该禁用优先级特性。Pod优先级指明pod的相对重要程度。在1.9之前的版本中,如果pod因为资源问题无法调度,则kubernetes尝试抢占低优先级pod资源,将它们排挤掉,为高优先级pod提供运行条件。在1.9及之后的版本中,pod优先级会影响pod的调度...原创 2018-07-24 20:12:37 · 3464 阅读 · 0 评论 -
Kubernetes之Kubeconfig实现多集群、多用户接入的组织、管理
概述kubectl命令访问集群时,默认情况下在$HOME/.kube目录下寻找名为config的配置文件,配置文件中包含集群ip地址、端口号、用户名、密码、证书、名称空间等信息,kubectl据此建构访问集群的上下文。也可以通过KUBECONFIG环境变量或者--kubeconfig覆盖默认配置文件。在实际应用中,往往需要同时使用多套环境如开发、测试、显示、生产等。一个kubectl客户端需要...原创 2018-07-24 18:15:58 · 5762 阅读 · 0 评论 -
Kubernetes之Secrets
Secrets是Kubernetes中一种对象类型,用来保存密码、私钥、口令等敏感信息。与直接将敏感信息嵌入image、pod相比,Secrets更安全、更灵活,用户对敏感信息的控制力更强。同Docker对敏感信息的管理类似,首先用户创建Secrets将敏感信息加密后保存在集群中,创建pod时通过volume、环境变量引用Secrets。创建Secrets假设pod需要访问数据库。首先将用...原创 2018-07-24 15:59:12 · 2631 阅读 · 0 评论 -
Kubernetes之亲和与反亲和
部署pod时,大多数情况下kubernetes的调度程序能将pod调度到集群中合适的节点上。但有些情况下用户需要对pod调度到那个节点上施加更多控制,比如将pod部署到拥有SSD存储节点、将同一个服务的多个后端部署在不同的机架上提高安全性、将通信频繁的服务部署在同一个可用区域降低通信链路长度。用户对pod部署的节点施加控制都与"label selector"有关。nodeSelector(节点...原创 2018-07-24 11:17:46 · 6226 阅读 · 0 评论 -
kubernetes之ReplicaSet
参考:https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/ReplicaSet是什么?ReplicaSet是kubernetes中的一种副本控制器,主要作用是控制由其管理的pod,使pod副本的数量始终维持在预设的个数。Kubernetes中还有一个类似功能的控制器:Replication Control...原创 2018-07-18 18:49:04 · 9768 阅读 · 0 评论 -
Kubernetes之StatefulSet
StatefulSet介绍从1.9 GA版本开始,StatefulSet成为kubernetes的稳定特性。StatefulSet是一种副本控制器,管理pod的部署、缩放等。与ReplicaSet、Deployment不同的是,它对集合中的pod提供顺序、唯一性保证。StatefulSet为集合中的每个pod分配唯一、持久的pod名称、DNS解析、持久化存储,并且负责将这些标识粘在pod上,无...原创 2018-07-19 19:52:44 · 4128 阅读 · 0 评论 -
Kubernetes之Service
概述Service是Kubernetes中最核心的概念,正是因为对此概念的支持,Kubernetes在某种角度下可以被看成是一种微服务平台。Kubernetes中的pod并不稳定,比如由ReplicaSet、Deployment、DaemonSet等副本控制器创建的pod,其副本数量、pod名称、pod所运行的节点、pod的IP地址等,会随着集群规模、节点状态、用户缩放等因素动态变化。Serv...原创 2018-07-25 18:17:16 · 5278 阅读 · 4 评论 -
Kubernetes之Volumes
概述Volume是对各种存储资源的抽象、虚拟化。为管理、控制、使用存储资源提供统一接口。Openstack中的volume为虚拟机提供存储,Docker中的volume为容器提供存储。因为在kubernetes中可部署运行最小单位是pod ,所以kubernetes的volume为pod提供存储。当然在部署pod时可以不为其提供volume,pod中的容器使用所在节点的硬盘,能同时读写数据的地...原创 2018-09-14 18:26:13 · 4337 阅读 · 0 评论 -
Kubernetes之Network Policy
概述Kubernetes要求集群中所有pod,无论是节点内还是跨节点,都可以直接通信,或者说所有pod工作在同一跨节点网络,此网络一般是二层虚拟网络,称为pod网络。在安装引导kubernetes时,由选择并安装的network plugin实现。默认情况下,集群中所有pod之间、pod与节点之间可以互通。网络主要解决两个问题,一个是连通性,实体之间能够通过网络互通。另一个是隔离性,出于安...原创 2018-07-27 12:50:18 · 2231 阅读 · 1 评论 -
Kubernetes之Ingress
概述向外网暴露集群内服务,以使客户端能够访问,有以下几种方法,本文重点描述Ingress。LoadBalancerLoadBalancer一般由云服务供应商提供或者用户自定义,运行在集群之外。在创建service时为其配置LoadBalancer相关参数,当从外网访问集群内servcie时,用户直接连接到LoadBalancer服务器,LoadBalancer服务器再将流量转发到集群内...原创 2018-07-26 20:11:23 · 2412 阅读 · 2 评论 -
Kubernetes之配置与自定义DNS服务
本文解释如何为kubernetes集群配置及自定义DNS服务。从kubernetes1.11版本开始,coreDNS插件被包含在GA发行版中,并且被kubeadm默认安装。详情:Configuring CoreDNS and Using CoreDNS for Service Discovery。除特别说明,本文讨论的是默认dns插件。介绍Kubernetes的DNS功能以插件形式提供,是...原创 2018-07-26 15:06:37 · 7980 阅读 · 0 评论 -
Kubernetes之DNS
介绍Kubenetes以插件的形式提供DNS服务,一般是运行在kube-system名称空间下的service,拥有固定IP地址。插件运行起来后,配置各个节点上的kubelet,告诉它集群中DNS服务的IP地址,kebelet在启动容器时再将DNS服务器的地址告诉容器,容器再使用此DNS服务器进行域名解析。能通过DNS名称得到什么?集群中的service在创建时会被分配DNS名称,包含...原创 2018-07-26 12:49:12 · 11488 阅读 · 0 评论 -
Kubernetes之Job
Job是什么?对于ReplicaSet、ReplicationController等类型的控制器而言,它希望pod保持预期数目、持久运行下去,除非用户明确删除,否则这些对象一直存在,它们针对的是耐久性任务,如web服务等。对于非耐久性任务,比如压缩文件,任务完成后,pod需要结束运行,不需要pod继续保持在系统中,这个时候就要用到Job。因此说Job是对ReplicaSet、Replicati...原创 2018-07-20 20:08:27 · 10163 阅读 · 0 评论 -
Kubernetes之Garbage Collection
在以前的博文中介绍过如何配置kubelet,按策略删除无用image、正常或者异常终止不会再启动的container,以节省资源。kubelet回收的对象在容器层面。那么kubernetes层面的对象,比如pod、ReplicaSet、Replication Controller、Deployment、StatefulSet、DaemonSet等类型的对象,垃圾回收又是如何呢?实际上,按理说以...原创 2018-07-20 15:10:06 · 3205 阅读 · 0 评论 -
Kuebernetes之DaemonSet
DaemonSet确保集群中每个(部分)node运行一份pod副本,当node加入集群时创建pod,当node离开集群时回收pod。如果删除DaemonSet,其创建的所有pod也被删除,DaemonSet中的pod覆盖整个集群。当需要在集群内每个node运行同一个pod,使用DaemonSet是有价值的,以下是典型使用场景:运行集群存储守护进程,如glusterd、ceph。 运行集群...原创 2018-07-20 12:05:25 · 22949 阅读 · 0 评论 -
Kubernetes RBAC Authorization(基于角色的访问控制)
基于角色的访问控制(RBAC),是一种其于用户的角色控制其对资源访问的方法。RBAC利用rbac.authorization.k8s.io API组实现授权决策,允许管理通过kubernetes API动态配置策略。在kubernetes 1.8版本中RBAC成为稳定特性,由rbac.authorization.k8s.io/v1 API在后端实现。通过为apiserver指定--authoriz...原创 2018-07-12 16:12:46 · 4880 阅读 · 0 评论 -
kubernetes之使用Preset向pod注入信息
参考:https://kubernetes.io/docs/concepts/workloads/pods/podpreset/https://kubernetes.io/docs/tasks/inject-data-application/podpreset/理解pod PresetsPod Preset是一种API资源,用来在创建pod时向其注入运行时需要的额外信息,通过使用...原创 2018-07-18 15:18:25 · 2275 阅读 · 0 评论 -
kubernetes资源组织、管理介绍
如果已经在kubenetes中部署了应用,并通过service的形式将它暴露出去。那么接下来呢?kubenetes提供了大量工具帮助用户管理应用的部署、弹性伸缩、升级等。组织资源配置文件很多应用要求同时创建多个资源,比如deployment与service等。管理多个相关资源的一种简单的方法是分它们简单的组织在一个文件中(在YAML格式的文件中通过 --- 分隔),如下例:# https://gi...原创 2018-07-07 12:30:15 · 931 阅读 · 0 评论 -
kubectl命令管理kubernetes对象的三种方式
kubenetes中的抽象概念,如Pod、Service、Volume、Namespace、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job统称为对象,kubectl命令提供了三种方式对这些对象进行操作、管理,本文分别详细介绍三种管理方式,并相互之间比较优缺点。在正式介绍之前,先说明一个重要的概念:live objects(实时对象)。一个实时...原创 2018-07-06 15:47:32 · 5390 阅读 · 0 评论 -
kubernetes的node 节点管理
node是kubernetes集群中的工作节点,可以是虚拟机也可以是物理机。node节点上运行一些服务用来运行pod以及与master通信等。一个node上的服务包括docker运行时环境、kubelet、kube-proxy以及其它一些可选的add-ons。节点状态node的状态包含如下几个方面的信息:AddressesConditionCapacityInfoAddresses节点的地址信息由...原创 2018-07-10 17:45:34 · 11383 阅读 · 0 评论 -
kubernetes之容器生命周期管理
参考:https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/大多数编程语言框架都会提供组件生使周期管理钩子,与此类似,kub...原创 2018-07-16 19:58:29 · 3629 阅读 · 0 评论 -
kubernetes中通过文件将定义pod时的字段信息暴露给容器
参考:https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/本文描述如何将定义pod时的字段如标签、注释等某些字段以文件的形式暴露给容器,使容器在运行时能读到这些字段,注意这里是以文件的形式不是以环境变量的形式。这个特性的主要目的是将定义pod、容器时的...原创 2018-07-16 16:36:55 · 1933 阅读 · 0 评论 -
kubernetes proxy简介
本文解释kubernetes中涉及到的各种proxy。参考文档:https://kubernetes.io/docs/concepts/cluster-administration/proxies/proxy在使用kubernetes时可能会遇到如下几种proxy。1.kubectl proxyruns on a user’s desktop or in a podproxies from a l...原创 2018-07-10 12:39:39 · 7525 阅读 · 0 评论 -
kubernetes之service catalog
参考:https://kubernetes.io/docs/concepts/extend-kubernetes/service-catalog/Service Catalog是kubernetes的一种API扩展,方便kubernetes集群内部应用访问集群外部、由第三方管理、提供的服务,如由云供应商提供的数据库服务。Service Catalog通过Service Brokers使集群内应用能...原创 2018-07-16 14:15:41 · 6571 阅读 · 0 评论 -
kubelet垃圾回收配置
kubelet垃圾回收主要指定期清理不使用的image以及container,以便节约存储空间。kubelet将人每隔一分钟清楚掉无效的container,每隔五分钟清理掉不使用的container。不推荐使用外部的垃圾回收工具,因为这些工具有潜在的风险清掉掉仍然在使用的container。image回收在cadvisor的协助下,kubernetes通过imageManager管理所有image...原创 2018-07-09 19:13:18 · 2291 阅读 · 0 评论 -
kuburnetes的Taints与Tolerations
Node亲和性,详细参考这里,指pod的一种属性,以偏好或者硬性要求的方式指示将pod部署到相关的node集合中。Taints与此相反,允许node抵制某些pod的部署,注意taints是node的属性,affinity是pod的属性。Taints与tolerations一些工作确保pod不会被调度到不合适的节点上去。单个节点可以应用多个taint,node应该不接受无法容忍taint的pod调度...原创 2018-07-11 10:23:51 · 9031 阅读 · 0 评论 -
kubernetes各组件通信路径与安全
本文将kubernetes master node与整个集群的通信路径分类,目的是使用户能够通过自定义安装强化网络配置,从而使集群运行在不受信任的网络之上,比如云供应商的全开放IP环境。通信路径分成两条:由master到集群、由集群到master。cluster->master所有从集群到master的通信路径终点都是apiserver,由kubernetes的安装部署可知道,其它控制面(m...原创 2018-07-11 12:41:39 · 1029 阅读 · 0 评论 -
kubernetes之初始化容器
参考:https://kubernetes.io/docs/concepts/workloads/pods/init-containers/初始化容器是什么?在kubernetes中,一个pod可以包含多个容器,其中的init container,顾名思义主要负责初始化工作,一个pod也可以包含多个init container。后文统一用"初始化容器"表示"init container"。...原创 2018-07-18 13:03:17 · 6506 阅读 · 0 评论 -
Kubernetes之容器计算资源管理
Kubernetes有一种与资源配额管理有关的对象:ResourceQuota,此种类型的对象由集群管理员创建,创建好后作用于某个名称空间,限制名称空间内可以创建的各类对像的总数、CPU、内存等。用户、用户组则工作在名称空间之下,以此实现多用户、多用户共享同一集群,公平合理的分配资源。本文描述在一个名称空间之下创建容器时,对容器所使用的计算资源进行管理。计算资源类型计算资源包含cpu与me...原创 2018-07-23 18:41:05 · 2275 阅读 · 0 评论 -
kubernetes资源配额管理
参考:https://kubernetes.io/docs/concepts/policy/resource-quotas/当集群有多个用户或者团队时,一个重要的问题就是资源的公平分配。资源配置就是管理员用来解决类似问题的工具。通过定义ResourceQuota对象,约束一个名称空间可以消耗的系统资源的总数。它可以限制一个名称空间内可以创建的某种类型对象的数量,也可以限制名称空间所能消...原创 2018-07-11 19:49:57 · 3048 阅读 · 0 评论 -
kubernetes之配置保活探针与就绪探针
参考:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/在kubernetes中,kubelet通过liveness探针决定在何时重新启动容器。例如,容器中的应用运行时进入死锁状态,liveness探针对容器进行健康检查时检测到这种情况,那么探针检测失败,则k...原创 2018-07-17 19:54:09 · 5659 阅读 · 0 评论 -
Kubernetes之配置最佳实践
从多个方面总结Kubernetes配置最佳实践1.普通配置当定义配置时,使用最新的稳定版API,对于非稳定版注意后续更新。 利用版本控制器管理配置文件,有利于变更审计、审核、回滚、配置重复利用。 使用对用户更友好的YAML格式写配置文件。 考虑将密切耦合的相关对象写入一个配置文件,管理一个文件比管理多个文件更方便。 kubectl某些命令支持目录,考虑将相关文件置入同一目录。 如...原创 2018-07-23 14:23:42 · 777 阅读 · 0 评论 -
Kubernetes之CronJob
类似于Linux的Cron模块,CronJob用来运行定时性任务,或者周期性、重复性任务。注意CronJob启动的是kubernetes中的Job,不是ReplicaSet、DaemonSet等其它控制器类型。示例:以下CronJob每分钟运行一次,打印出当前时间与hello消息。CronJob SPEC:apiVersion: batch/v1beta1kind: CronJ...原创 2018-07-23 12:37:55 · 3080 阅读 · 0 评论 -
kubernetes之pod生命周期
参考:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/Pod phase系统中表示pod的条目包含一个表示pod状态的字段,称为“status”。“status”字段本身是一个“PodStatus”类型的对象,其中包含一个“phase”字段,用来表示pod当前所处的生命周期状态。以下是“phase”可能的取值...原创 2018-07-17 17:28:59 · 3441 阅读 · 0 评论 -
Kubernetes之持久化存储
ConfigMap、Secret、emptyDir、hostPath等属于临时性存储,当pod被调度到某个节点上时,它们随pod的创建而创建,临时占用节点存储资源,当pod离开节点时,存储资源被交还给节点,pod一旦离开它们就失效,不具备持久化存储数据的能力。与此相反,持久化存储拥有独立的生命周期,具备持久化存储能力,其后端一般是独立的存储系统如NFS、iSCSI、cephfs、glusterfs...原创 2018-09-14 18:26:47 · 13679 阅读 · 1 评论