- 博客(54)
- 资源 (4)
- 收藏
- 关注
原创 [kubernetes]spec yaml定义command/args
对于DockerFile中的CMD [“”] 以及ENTRYPOINT[“xxx”, “xxxx”]以及kubernetes中的command Args的描述一直很困惑,特别是针对外网下载的image,进行调试验证的时候。需要弄清楚DockerFile与Kubernetes yaml中定义的关系。其实kubernetes社区已经给出了明确的说明This table summarizes the...
2019-01-15 20:13:39
12460
转载 [golang] cannot take the address of xxx()
package mainimport "time"func main() { _ = &time.Now()}编译的时候提示:cannot take the address of time.Now()给出的解释The probably unsatisfying answer is “you can’t do it because the spec says so.”...
2018-12-18 21:03:40
4251
翻译 Kubernetes autoscaler
Kubernetes作为容器编排工具,应用部署在集群中,应用的负载本身是会随着时间动态发生变化的,为了更好的平衡资源使用率以及性能,kubernetes引入了autoscaler。可以根据应用负载的情况动态的扩缩容资源。Kubernetes的autoscaler分成两个层次:pod级别的扩容,包含横向扩容(HPA)以及纵向扩容(VPA),扩容容器可用的资源使用量。集群级别的扩容,通过CA(...
2018-09-19 19:00:12
4668
原创 节点unknown状态,对使用ceph rbd作为后端存储的statefulset应用处理方法
当kubernetes集群节点变成unknown状态,statefulset创建的pod并不会被主动重新在其他的节点上进行创建,需要人为的将该node通过kubectl delete node进行删除,这样才会在其他的节点上进行创建。社区upstream的smarterclayton给出了为什么要这样设计 This is by design. When a node goes “dow...
2018-08-16 22:50:07
1271
原创 kubernetes node notReady触发pod重调度策略
kubernetes node notReady触发pod重调度策略当kubernetes中node的状态异常的时候,会导致无状态的pod重新调度到其他的节点中,关于什么时候会触发重新调度,很多人都很关心,kubernetes原生提供了参数配置触发重新调度的时间,首先分析触发该流程的具体流程: 1. kubelet周期性的更新自身状态到apiserver,周期为–node-status-u...
2018-07-19 19:59:21
8131
原创 Application on kubernetes实践
Application on kubernetes实践本系列是GCE推出的文章,解决随着大量的应用迁移到kubernetes中,如何能够紧随kubernetes的发展,更好的在kubernetes上运行应用的建议。翻译文章并没有直接翻译,而是概要的解释每种建议,详细的内容通过文后链接找到。建立更小的镜像Docker公司创新的提出了容器镜像的概念,通过定义Dockerfile以及执行do...
2018-06-24 23:01:22
1145
原创 Kubelet的grabage collection
介绍Kublet中会定期的执行垃圾回收流程,清理节点上不使用的images和containers.下面讲会对如何配置垃圾回收策略以及代码实现层面上分析该业务流程.Image 回收策略中存在两个阈值,HighThresholdPercent和LowThresholdPercent,当磁盘使用率超过HighThresholdPercent将会触发回收流程,回收流程将会删除最老没有被使用...
2018-03-28 14:45:45
4046
原创 kubelet与runtime的整合
Kubernetes 1.10版本Kubelet调用docker创建容器的调用链如图所示 解析该流程能够深入的了解kubernetes是怎么与docker进行交互的.CRI首先介绍CRI, CRI全称为container runtime interface接口,是kubernetes在1.5版本之后引入的概念,为了使得kubernetes更好的扩展以及整合容器运行时(docker...
2018-03-27 15:39:55
3175
原创 golang中的cross compiling
交叉编译就是编译出在其它操作系统下运行的程序,比如在Linux下编译后在Windows系统中运行,或者说在32位下编译在64位下运行。 golang 1.5之后很容易的实现交叉编译,通过设置$GOOS, $GOARCH两个环境变量就能够编译出来其他平台运行所需要的bin文件.通过下面的例子来说明package mainimport "fmt"import "runtime"fu...
2018-03-27 13:24:23
974
原创 mount namespace和shared subtrees
mount namespace是一个强大并且复杂的机制,用来为每个用户和每个容器创建文件系统树.它是一个很复杂的特性.在我们关于namespaces的一系列文章中,我们将会解开它的复杂性,我们将会深入的研究shared subtrees特性,这个特性以自动,受控的方式允许mount/unmount事件在mount namespaces之间传播事件.介绍mount namespace在2...
2018-03-21 18:50:07
2668
原创 golang-Timers and Tickers
Go内置的timer和ticker实现 1. 在未来某个时刻执行某段代码 2. 指定间隔周期性的执行某个任务example/test1.gopackage mainimport ( "fmt" "time")func durationExec() { timer := time.NewTicker(time.Second * 2) <...
2018-03-11 01:21:36
412
原创 Kubernetes集群升级
云环境下新增节点,安装高版本的kubelet,kube-proxy,加入到现有集群中,等节点ready了再执行操作,通过kubectl 当前集群的节点设置成不可调度,drain命令隔离掉需要升级的节点,让pod在新节点上重建,需要考虑的问题如下: 有状态应用(Pod使用了本地存储)Daemonset Pod NodeSelector到特定节点的PodPod设置了强制Node亲和性的P...
2018-03-09 13:52:32
709
原创 大规模下kubernetes集群的scheduler性能
测试流程搭建测试环境,可以使用社区推荐的kubemark确定当前kubernetes社区确定的scheduler调度性能,每秒能处理多少个pod的调度实际测试当前环境的scheduler性能,是否与社区确定的scheduler性能有差异,如果存在差异过大,那么确定是scheduler本身以外导致的性能差异采用优化方案,通过比对优化前后的性能指标确定是否达到优化效果以及得到影响sched...
2018-03-09 10:05:41
2214
原创 kubernetes中跨namespace访问服务
问题的场景: kubernetes中的namespace=A中的Pod需要访问namespace=B中的Pod所提供service=service_B解决办法: 在namespace_A中创建一个service_c, service_c里面不指定selector, 采用type=ExternalName的方式,externalName定义成为指向namespace=B中的service_
2018-02-01 12:57:06
17505
原创 minikube初体验
Minikube下载以及安装 curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/ 启动一个kubernetes集群 minikube star
2018-01-18 17:26:58
9904
1
原创 Golang timer定时器
timer 计时器用于在指定的Duration类型时间后调用函数或计算表达式。如果只是想指定时间之后执行,使用time.Sleep()使用NewTimer(),可以返回的Timer类型在计时器到期之前,取消该计时器直到使用定义计数器timer := time.NewTimer(time.Second * 2)停止定时器timer.Stop()强制的修改timer中规定
2018-01-11 00:25:44
8630
原创 Kubernetes中的亲和性
现实中应用的运行对于kubernetes在亲和性上提出了一些要求,可以归类到以下几个方面: 1.Pod固定调度到某些节点之上 2.Pod不会调度到某些节点之上 3.Pod的多副本调度到相同的节点之上 4.Pod的多副本调度到不同的节点之上实践下面我们将通过例子的方式来说明在kubernetes需要去设置亲和性实现上面要求.Pod调动到某些节点上Pod的定义中通过no
2018-01-08 15:35:06
12586
原创 Kubernetes上的一些常见标签
beta.kubernetes.io/arch=amd64 Node的label,通过golang的runtime.GOOS来获取kubernetes.io/hostname Node的label,node的hostname,可以通过kubelet参数–hostname-override 来修改beta.kubernetes.io/instance-type Node的label,通
2018-01-04 23:58:07
3183
原创 扩展kubernetes实践
本文整理业界对于Kubernetes在扩展性方面做的一些实践,随着时间的积累,相信会有更多的人在扩展kubernetes作出实践的经验
2017-12-30 21:59:48
794
原创 magnum下kubernetes安全模型
magnum下kubernetes安全模型,基于magnum mitaka版本以及Kubernetes 1.5版本对magnum如何跟kubernetes进行配合,实现更安全的kubernetes集群.
2017-12-28 10:59:48
974
翻译 Kubernetes 1.9版本带来更大的稳定性和存储功能
Kubernetes开发者社区在Kubernetes 1.9的发布中取得了一个成功的一年,增加了一些重要的新功能,这些功能将有助于进一步鼓励企业采用Kubernetes。Kubernetes是最受欢迎的容器编排工具。它被用来简化容器的部署和管理,被开发人员普遍使用,允许他们在不同的计算环境运行他们的应用程序,而不需要对底层代码做任何改变。在今年的第四个版本中,社区表示将Apps W
2017-12-12 22:46:46
1740
1
原创 glide install 无法下载依赖项目
1.在github上下载对应的github上mirror的相关项目,赋值到对应目录. golang.org相关的项目-->github.com/golang/目录下k8s.io相关的项目-->github.com/kubernetes/项目下2. 使用glide mirror$ rm -rf ~/.glide$ mkdir -p ~/.glide$
2017-11-26 15:23:33
2671
转载 go依赖包管理工具对比
写的挺清楚的,备份一下 转载于:https://www.studygolang.com/articles/10523 vendor一下当开始真正用go去做项目的时候,不可避免的就会遇到依赖包的问题。go的依赖包管理与java+maven的依赖管理不太一样,我们从GOPATH开始逐渐理解其思想,然后再对比下目前常用的依赖包管理工具。GOPATH和GOROOT初学者很容易会被这两个
2017-09-26 17:15:53
2540
翻译 Kubernetes中PV/PVC/StorageClass
kubernetes中Persistent Volumes, Persistent Volumes claim, StorageClass介绍
2017-05-25 09:35:46
26122
翻译 Kuberentes Ingress
术语Node: Kuberentes集群中的虚拟机节点或者物理机器节点Cluster 一系列的被防火墙隔离的节点,它们是Kubernetes管理的主要资源Edge router 加强了防火墙策略的路由, 他可以是硬件或者是云提供商提供的网关Cluster network 一系列逻辑或者物理的链接, 根据Kubernetes网络模型组成了集群内的通信, 集群网络的例子包括flannel
2017-05-06 11:02:39
8060
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人