spec

如何快速给pod添加健康检查?

◇◆丶佛笑我妖孽 提交于 2019-12-09 12:01:51
脚本如下 #!/usr/bin/env bash [[ -n $DEBUG ]] && set -x set -eou pipefail useage(){ cat <<HELP USAGE: kubeprobe.sh TYPE WORKLOAD CONTAINER [LIVENESSPROBE READINESSPROBE] eg: kubeprobe deploy ui nginx kubeprobe deploy ui nginx "" "/ 80 3 2 1 1 3" kubeprobe deploy ui nginx "/ 80 10 2 1 1 3" "/ 80 3 2 1 1 3" HELP } exit_err() { echo >&2 "${1}" exit 1 } if [ $# -lt 3 ];then useage exit 1 fi TYPE=$1 WORKLOAD=$2 CONTAINER=$3 LIVENESSPROBE_CONFIG=${4:-""} READINESSPROBE_CONFIG=${5:-""} SPEC='{"spec": {"template": {"spec": {"containers": [{"name": "'${CONTAINER}'"' if [ -n "${LIVENESSPROBE_CONFIG}" ];then

APACHE服务器出现No input file specified.的完美解决方案

一世执手 提交于 2019-12-07 10:28:00
启用REWRITE的伪静态功能的时候,首页可以访问,而访问内页的时候,就提示:“No input file specified.” 原因在于使用的PHP是fast_cgi模式,而在某些情况下,不能正确识别path_info所造成的错误,Wordpress的伪静态也有一样的问题。 Wordpress程序默认的.htaccess里面的规则: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L] “No input file specified.”,是没有得到有效的文件路径造成的。 修改伪静态规则,如下: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L] 有没有发现不同? 其实就是在正则结果“/$1”前面多加了一个“?”号,问题也就随之解决了。 来源: oschina 链接: https://my.oschina.net/u

测试驱动开发 Ruby 命令行工具实战

亡梦爱人 提交于 2019-12-05 12:54:23
TL;DR; 本文介绍了 to_yaml 的开发过程中如何采用 TDD 方法开发功能,以及用到的免费服务 GitHub / TravisCI / RubyGems 。 TDD (测试驱动开发)是敏捷开发中的一项核心实践和技术,也是一种设计方法论。 TDD 的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。 to_yaml 是一款命令行工具, 将 JSON 输入转为 YAML 文本输出 。 <!--excerpt--> 背景 先从最近使用的 ElasticSearch 说起。 作为通用的日志收集、分析与展示的工具集, ELK 工具栈已经相当普及。 其中在管理 ElasticSearch 集群时,大部分时间都要使用 HTTP 接口跟 JSON 格式数据打交道。 ES 输出 JSON 数据内容比较多,即使使用 ?pretty 参数,仍然难看清数据的层次关系。 ?pretty 的一个副作用是输出内容过长,浪费了大量的屏幕纵向空间。 使用 YAML 格式能够在很大程度上缓解空间的问题。 基于这个想法,做了一个简单的工具出来,发布在了 RubyGems.org 。 初步想法 在实际使用 JSON 时,希望的是能直接将接口输出内容直接转换为 YAML 格式。 如这样的形式: $ curl -s -XGET http://localhost:9200/

Skyshop代码解析

邮差的信 提交于 2019-12-05 12:31:36
MarmosetInput.cginc: Input结构定义: struct Input { #if defined(MARMO_PACKED_UV) || defined(MARMO_PACKED_VERTEX_OCCLUSION) || defined(MARMO_PACKED_VERTEX_COLOR) float4 texcoord; #else float2 texcoord; #endif float3 worldNormal; #if defined(MARMO_SPECULAR_DIRECT) || defined(MARMO_SPECULAR_IBL) float3 viewDir; #endif #if defined(MARMO_COMPUTE_WORLD_POS) #ifdef MARMO_U5_WORLD_POS float3 worldPos; //this is free in Unity 5 #endif #else float4 worldP; //lets write our own #endif #if defined(MARMO_VERTEX_COLOR) || defined(MARMO_VERTEX_LAYER_MASK) half4 color : COLOR; #elif defined(MARMO_VERTEX_OCCLUSION)

第十五章 Kubernetes调度器

梦想与她 提交于 2019-12-05 04:22:51
一、 简介 Scheduler 是 kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上。听起来非常简单,但有很多要考虑的问题: ①  公平:如何保证每个节点都能被分配资源 ②  资源高效利用:集群所有资源最大化被使用 ③  效率:调度的性能要好,能够尽快地对大批量的 pod 完成调度工作 ④  灵活:允许用户根据自己的需求控制调度的逻辑 Scheduler 是作为单独的程序运行的,启动之后会一直 坚挺 API Server ,获取 PodSpec.NodeName 为空的 pod ,对每个 pod 都会创建一个 binding (必须遵守的) ,表明该 pod 应该放到哪个节点上 二、 调度过程 调度分为几个部分: 1) 首先是过滤掉不满足条件的节点,这个过程称为 predicate(预选) ; 2) 然后对通过的节点按照优先级排序,这个是 priority(优选) ; 3) 最后从中选择优先级最高的节点。 如果中间任何一步骤有错误,就直接返回错误 (先预选,后优选) Predicate(预选) 有一系列的算法可以使用: ① PodFitsResources :节点上剩余的资源是否大于 pod 请求的资源 ② PodFitsHost :如果 pod 指定了 NodeName ,检查节点名称是否和 NodeName 匹配 ③

CW2 Software Maintenance Spec Sheet

那年仲夏 提交于 2019-12-05 00:28:33
CW2 Software Maintenance Spec Sheet Academic Year 2019/2020 CW2 is about maintaining and extending a re-implementation of a classic retro game (Frogger). This version has never been completed, but at least it runs, once it is set up properly. More information about the original Frogger game and its history is available here. You can also pick up some ideas for creating additional levels. https://www.arcadeclassics.net/80s-game-videos/frogger To get started download the original re-implementation from the following GitHub repository. https://github.com/hirish99/Frogger-Arcade-Game Then you

Docker服务编排05-k8s持续集成(CICD)springcloud微服务

为君一笑 提交于 2019-12-04 16:36:41
k8s持续集成(CICD)springcloud微服务 DevOps简介 CICD简介 环境准备 微服务程序 安装gitlab服务器中文版 安装jenkins 安装harbor 安装maven 安装git客户端 安装k8s集群 部署微服务 部署微服务 上传代码 添加构建服务 DevOps简介 DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。 它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。 它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作 详细解释 CICD简介 持续集成(continuous integration )指的是,频繁地(一天多次)将代码集成到主干。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。 它的好处主要有两个。 (1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。 (2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大

行为驱动设计(rspec)

强颜欢笑 提交于 2019-12-04 15:51:35
行为驱动设计(rspec) 原文:Behavior Driven Design (并非公开版权文档) 你可能已经注意到,验证模对象改变了你在单元测试中执行的那类测试的本质。传统的单元测试中,通过断言(Assertion)来进行大多数的验证。这是一种对应用程序状态的测试。模对象的测试,是测试测试中调用过程十分符合预期。它测试的是应用程序的行为。至少潜在能力上,行为测试更容易将期望行为与实际的实现方法分开。 行为驱动设计(BDD)的口号是试图将测试设计从实现空间移到问题空间。部分地使用设计BDD工具集,测试可以通过指定更接近自然语言的关键词来进行。BDD工具充分利用模对象,既作为说明问题的方法,也作为区分单独的个别单元测试的方法。使用传统的TDD测试,低层方法的修改会导致很多测试失败。BDD认为一个代码的改变能产生许多测试失败表明这个测试不是真正意义上的单元测试,而是集成测试,尽管是非常小的范围内。TDD方式的测试只有在实际对象不能得到或者不好用的情况下才会使用模对象,BDD方式则更加积极地使用模对象来将测试中的函数与系统的其它部分分离。 这个章节将概要地介绍一下RSpec(Ruby中最流行的BDD测试包)。RSpec与Rails集成得非常好,包括单独地测试Controller, View和Helper函数的能力。 安装RSpec RSpec即可以作为Ruby

RSPEC::RAILS介绍(翻译)

邮差的信 提交于 2019-12-04 15:51:22
想有一下RSPec来做BDD开发,地发现中文资料太少了,无耐只能自己去主页上看资料,做为爱国者,俺的英文真烂得不成,不过翻完了,发出来大家乐一乐吧。 Spec::rails --------------------------- 一个将RSpec引入Rails的Rails插件 特点: 1. 可以使用RSpec独立的测试models,views,controllers和heplers 2. 整合了具夹(fixture)的载入 3. 为models和controllers特别制作的生成器,可以生成指定的测试RSpec文件来代替原来rails默认生成的tests文件。 4. 增加了很多易读的匹配器 愿景: 对那些刚认识TDD这个概念的人来说,rails的测试支持是一个大的飞跃。弄好这些测试就相当的棒了,因为这样的rails程序通常会比没有测试支持的rails程序要容易维护的多。 对于我们这些经历了TDD到现在的BDD的人来说,还必须考虑在现有支持上那些spec之间依赖性的问题。为此,RSpec支持4种规范。这主要启发于Test::Rails,这个zenTest内置rails框架。 我们还建立良好的mocking和stubbing的支持,以助于打破那些不同关联间的依赖关系。 不同类型的Example Groups: -------------------------------------

k8b部署prometheus+grafana

こ雲淡風輕ζ 提交于 2019-12-04 11:07:14
来源: https://juejin.im/post/5c36054251882525a50bbdf0 https://github.com/redhatxl/k8s-prometheus-grafana Prometheus master/node节点环境部署 git clone https://github.com/redhatxl/k8s-prometheus-grafana.git 在node节点下载监控所需镜像(在所有节点也下载了) docker pull prom/node-exporter docker pull prom/prometheus:v2.0.0 docker pull grafana/grafana:4.2.0 采用daemonset方式部署node-exporter组件 kubectl create -f node-exporter.yaml 部署prometheus组件 rbac文件 kubectl create -f k8s-prometheus-grafana/prometheus/rbac-setup.yaml 以configmap的形式管理prometheus组件的配置文件 kubectl create -f k8s-prometheus-grafana/prometheus/configmap.yaml Prometheus