kubernetes实践之五十四:垃圾回收机制
一:前言Kubernetes系统在长时间运行后,Kubernetes Node会下载非常多的镜像,其中可能存在很多过期的镜像。同时因为运行大量的容器,容器推出后就变成死亡容器,将数据残留在宿主机上,这样一来,过期镜像和死亡容器都会占用大量的硬盘空间。如果磁盘空间被用光,可能会发生非常糟糕的情况,甚至会导致磁盘的损坏。为此k...
kubernetes实践之五十三:Service中的故障排查
1.查看某种资源的定义和用法kubectl explain 点击(此处)折叠或打开kubectl explain podDESCRIPTION:Pod is a collection of containers that can run on a host. This resource is created by clients and scheduled onto hosts....
kubernetes实践之五十二:Helm
一:简介在Kubernetes上进行容器化部署并非易事,通常需要先研究Docker镜像的运行需求,环境变量等内容,并能为这些容器定制存储,网络等设备,最后设计和编写Deployment,Configmap,Service及Ingress等相关yaml配置文件,再提交给Kubernetes进行部署。这些复杂的过程将逐步被Helm应用包管理工具实现。 Helm是一个由CNCF...
kubernetes实践之五十一:kube-proxy运行机制分析
一: Service,Endpoints与Pod的关系Kube-proxy进程获取每个Service的Endpoints,实现Service的负载均衡功能二:Service的负载均衡转发规则访问Service的请求,不论是Cluster IP+TargetPort的方式;还是用Node节点IP+NodePort的方式,都被Node节点的Iptables规则重定向到Kube-proxy监听Service服务代理端口。kube-proxy...
kubernetes实践之五十:kubelet运行机制分析
一:简介在Kubernetes集群中,每个Node节点上都会启动一个Kubelet服务进行。该进程用于处理Master节点下发到本节点的任务,管理Pod及Pod中的容器。每个Kubelet进程会在API SERVER上注册节点自身信息,定期向Master节点汇报节点资源的使用情况,并通过cAdvise监控容器和节点资源。二:节点管理...
kubernetes实践之四十九:Scheduler原理分析
一: 简介1.Kubernetes scheduler在整个系统中承担了“承上启下”的重要功能,“承上”是指它负责接收Controller Manager创新的新Pod,为其安排一个落脚的Node; "启下"是指安置工作完成后,目标Node上的kubelet服务进程接管后继工作。2.Kubernetes scheduler的作用是将待调度的Pod,按照特定的调度算法和调...
kubernetes实践之四十八:Service Controller与Endpoint Controller
1.Endpoints表示一个Service对应的所有Pod副本的访问地址,而Endpoints Controller就是负责生成和维护所有Endpoints对象的控制器.它负责监听Service和对应的Pod副本的变化,如果检测到Service被删除,则删除和该Service同名的Endpoints对象。如果检测到新的Service被创建或者修改则根据该Service信息获得相关的Pod列表,...
kubernetes实践之四十七:ResourceQuota Controller
一: 简介 资源配额管理(ResourceQuota Controller)确保了指定的资源对象在任何时候都不会超量占用系统物理资源,避免了由于某些业务进程的设计或实现的缺陷导致整个系统运行紊乱,甚至意外宕机,对整个集群的平稳运行和稳定性有非常重要的作用。目前Kubernetes支持如下三个层次的资源配额管理:...
kubernetes实践之四十六:分布式负载测试Locust
一: 前言 本文介绍如何在Kubernetes集群中对一个应用进行分布式测试,sample-webapp是一个简单的web测试应用。测试工具使用Locust.二:Locust 介绍Locust是一个用于可扩展的,分布式的,性能测试的,开源的,用Python编写框架/工具.在模拟有效并发方面,Locust的优势在于其摒弃了进程和线程...
kubernetes实践之四十五:API Server原理分析
一:简介 API Server最主要的REST接口是资源对象的增删改查,另外还有一类特殊的REST接口--Kubernetes Proxy API接口,这类接口的作用是代理REST请求,即kubernetes API Server把收到的REST请求转发到某个Node上的kubelet守护进程的REST端口上,由该kubelet进程负责响应。1.Node 相关的接口...
kubernetes实践之四十四:Ingress详解
一:简介Ingress资源对象,用于将不同URL的访问请求转发到后端不同的Service,以实现HTTP层的业务路由机制。Kubernetes使用一个Ingress策略定义和一个具体的Ingress Controller,两者结合并实现了一个完整的Ingress负载均衡器。Ingress Controller将基于Ingress规则将客户请求直接转发到Service对应的后端Endpoint上,这...
kubernetes实践之四十三: Service详解
一:简介通过Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并将请求负载分发到后端各个应用容器上,实现Pod的负载均衡。二:Service定义模版重要属性说明1.spec.type Service的类型,指定Service的访问方式,默认值为ClusterIP.a.ClusterIP: 虚拟的服务IP地址,该地址用于Kubernetes集群内部的...
kubernetes实践之四十二:StatefulSet
一: 前言1.使用StatefulSet的场景a.稳定、唯一的网络标识b.稳定、持久的存储c.按照顺序、优雅的部署和扩容d.按照顺序、优雅的删除和终止e.按照顺序、自动滚动更新2.StatefulSet的限制a.在Kubernetes 1.9版本之前是beta版本,在Kubernetes 1.5版本之前是不提供的。b.Pod存储由PersistentVolume(storage类或者管...
kubernetes实践之四十一:Pod自动扩容与缩容
一:简介Kubernetes通过HPA控制器,用于实现基本CPU使用率进行自动Pod扩容和缩容的功能。HAP控制器基于Master的Kube-controller-manager服务启动参数--horizontal-pod-autoscaler-sync-period定义的时长(默认值为30s),周期性地检测目标Pod的CPU使用率,并在满足条件时对ReplicationController或Deployment中的Pod副本数...
kubernetes实践之四十:Pod的升级与回滚
一:Deployment的升级举例: 点击(此处)折叠或打开apiVersion: apps/v1beta1kind: Deploymentmetadata: name: nginx-deploymentspec: replicas: 3 template: ...
kubernetes实践之三十九:Pod初始化容器之Init Container
一:前言在很多应用场景中,应用在启动之前都需要进行如下初始化操作1. 等待其他关联组件正确运行(例如数据库)2.基于环境变量或配置模版生成配置文件3.从远程数据库获取本地所需配置,或者将自身注册到某个中央数据库中4.下载相关依赖包,或者对系统进行一些配置操作Init container与应用容器本质上是一样的,但他...
kubernetes实践之三十八:Pod调度
一: Deployment/RC: 全自动调度Deployment或RC的主要功能之一就是自动部署一个容器应用的多份副本,以及持续监控副本的数量,在集群内始终维持用户指定的副本数量。二: NodeSelector: 定向调度可以通过Node的标签(Label)和Pod的nodeSelector属性匹配,将Pod调度到指定节点。三: NodeAffinity: 亲和性调度用于替...
kubernetes实践之三十七:Pod健康检查
一:前言对Pod的健康状态检查可以通过两类探针来检查:LivenessProbe和ReadinessProbe1.LivenessProbe探针: 用于判断容器是否存活,如果LivenessProbe探针探测到容器不健康,则kubelet将杀掉该容器,并根据容器的重启策略做相应的处理。如果一个容器不包含LivenessProbe探针,那么kubelet认为该容器的LivenessProbe探针...
kubernetes实践之三十六:在容器内获取Pod信息 Downward API
一:前言在某些集群中,集群中的每个节点都需要将自身的标识(ID)及进程绑定的IP等信息事先写入配置文件中,进程启动时读取这些信息,然后发布到某个类似服务注册中心的地方,以实现集群节点的自动发现功能。此时可以使用Downward API,具体做法是先编写一个预启动脚本或Init Container,通过环境变量或文件方式获取Pod自...
kubernetes实践之三十五:Pod配置管理ConfigMap
一:简介很多生产环境中的应用程序配置较为复杂,可能需要多个config文件、命令行参数和环境变量的组合。使用容器部署时,把配置应该从应用程序镜像中解耦出来,以保证镜像的可移植性。ConfigMap是用来存储配置文件的kubernetes资源对象,所有的配置内容都存储在etcd中。ConfigMap让我们能够从容器镜像中把配置的详细信...