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让我们能够从容器镜像中把配置的详细信...
kubernetes实践之三十四: Master节点安装与配置
一:简介1.kubernetes master节点包含以下组件:kube-apiserver,kube-scheduler和kube-controller-manager。 这三个组件需要部署在同一台机器上。 同时只能有一个kube-scheduler,kube-controller-manager进程处于工作状态,如果运行多个,则需要通过选举产生一个leader.2.在/etc/kubernetes/ssl目录下,准备好可能用到的...
kubernetes实践之三十三:基本概念
kubernetes实践之三十二:Jenkins和SonarQube集成
一:Jenkins与SonarQube 集成插件的安装Jekins-->系统管理-->管理插件 安装SonarQube Scanner for Jenkins插件二:SonarQube server 的配置Jenkins-->系统管理-->系统配置三: 安装
kubernetes实践之三十一:kubectl
kubernetes实践之三十: SonarQube和SonarQube Runner
一:简介Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同...
kubernetes实践之二十九:Kubernetes+Harbor+Gitlab+Jenkins+Maven DevOps
一:流程结构说明:1. ?户向Gitlab提交代码,代码中包含 Dockerfile文件。2.Jenkins监听Gitlab代码库的推送和变更事件3.Jenkins调用maven插件对源码进行编译打包4.Jenkins调用docker工具根据Dockerfile文件生成镜像,并推送镜像到Harbor仓库5.Jenkins通过SSH远程调用Kubernetes集群的master节点,更...
kubernetes实践之二十八:使用Harbor作为私有镜像仓库
一:前言
kubernetes实践之二十七:Harbor
一:简介镜像的存储harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。harbor以docker-compose的规范形式组织各个组件,并通过docker-compose工具进行启停。Proxy:对应启动组件ngi...