![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
golang
runstrider
这个作者很懒,什么都没留下…
展开
-
statefulset创建
所有Pod的Volume必须使用PersistentVolume或者是管理员事先创建好 为了保证数据安全,删除StatefulSet时不会删除VolumeStatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务而设计),其应用场景包括稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化数据,基于PVC来实现 稳定的网络标志...转载 2019-01-14 18:05:17 · 542 阅读 · 0 评论 -
kubernets eviction策略
pod eviction当资源使用情况触发了驱逐条件时,kubelet会启动一个任务去轮流停止运行中的pod,直到资源使用状况恢复到阈值以下。以硬驱逐为例,整体流程是:每隔一段时间从cadvisor中获取资源使用情况,发现触发了阈值; 从运行中的pod里找到QoS策略最开放的一个,比如策略为bestEffort的一个pod(即便这个pod没有吃多少内存,大部分内存是另一个策略为burst...转载 2019-01-15 14:30:11 · 368 阅读 · 0 评论 -
ISTIO中包含有四种流量管理配置资源
Istio 中包含有四种流量管理配置资源,分别是 VirtualService、DestinationRule、ServiceEntry、以及 Gateway。下面会讲一下这几个资源的一些重点。在网络参考中可以获得更多这方面的信息。 在请求被 VirtualService 路由之后,DestinationRule 配置的一系列策略就生效了。这些策略由服务属主编写,包含断路器、负载均衡以及 ...转载 2019-01-30 19:38:50 · 1311 阅读 · 0 评论 -
cgroup相关
subsystem 一个subsystem就是一个内核模块,他被关联到一颗cgroup树之后,就会在树的每个节点(进程组)上做具体的操作。subsystem经常被称作"resource controller",因为它主要被用来调度或者限制每个进程组的资源,但是这个说法不完全准确,因为有时我们将进程分组只是为了做一些监控,观察一下他们的状态,比如perf_event subsystem。到目前为...转载 2019-01-04 10:32:25 · 474 阅读 · 0 评论 -
golang ctx
go的每个request都可以有一个context用于方便进行http处理。ctx.backend()返回是一个空的ctx,其实所有的context的父类,其没有任何值,他是一棵树,类似于进程,删除父,其子也被删。每个request都可以新建一个context,可以向里面传入值,其有个Done chanel,用于终止。比如:func httpDo(ctx context.Cont...原创 2018-10-12 11:33:51 · 2299 阅读 · 0 评论 -
kubelete对pod中容器的探测分为liveness,失败则重启容器;readiness失败则不作为service的后端pod进行服务,等待;
本文将向展示如何配置容器的存活和可读性探针。Kubelet使用liveness probe(存活探针)来确定何时重启容器。例如,当应用程序处于运行状态但无法做进一步操作,liveness探针将捕获到deadlock,重启处于该状态下的容器,使应用程序在存在bug的情况下依然能够继续运行下去(谁的程序还没几个bug呢)。Kubelet使用readiness probe(就绪探针)来确定容器是...原创 2018-11-21 11:32:27 · 1341 阅读 · 0 评论 -
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_B...转载 2018-11-24 09:43:35 · 1587 阅读 · 0 评论 -
k8s APIservice
他是通过创建kind:APIservice来创建的;APIserver通过创建APIservice controller来进行监控创建APIservice资源,然后通过注册path转到proxy,proxy通过获取APIservice指定的server,获取其对应endpoint,获取到相应的host。通过将请求发送到对应pod获得返回结果,然后将结果copy到请求的返回结果,完成功能。...原创 2018-11-23 15:20:07 · 2342 阅读 · 0 评论 -
golang引号
Golang的双引号和反引号都可用于表示一个常量字符串,不同在于: 双引号用来创建可解析的字符串字面量(支持转义,但不能用来引用多行) 反引号用来创建原生的字符串字面量,这些字符串可能由多行组成(不支持任何转义序列),原生的字符串字面量多用于书写多行消息、HTML以及正则表达式 而单引号则用于表示Golang的一个特殊类型:rune,类似其他语言的byte但又不完全一样,是指:...转载 2018-11-27 17:54:01 · 141 阅读 · 0 评论 -
kubernetes service
headless service:使用场景:(1)statefulset中进行pod的网络功能域名的,如创建的pod的名字为web-0,web-1那网络一致性其对应的dns存储就是以web-0,web-1打头(2)进行跨namespace的访问服务(service),只有headless中的pod设置spec.hostname字段的pod才会在dns中单独记录pod的dns值(3)...原创 2018-12-13 15:19:33 · 209 阅读 · 3 评论 -
kubernetes dns功能
创建dns记录的必要条件,创建出endpoint,无endpoint无dns记录SVC创建dns记录(1)正常的service创建的dns a记录,通过my-svc.my-namespace.svc.cluster.local与clusterip映射(2)headless service创建dns a记录,通过service的域名(如上),返回的是pod与pod domain对应的dn...原创 2018-12-13 17:00:32 · 195 阅读 · 0 评论 -
k8s oom
这段代码就是讲的如何计算每个容器的oom score的。首先看这个容器所属的Pod是属于什么级别的,如果是Guaranteed级别的直接返回-998也是最高级最后被Kill掉的,如果是BestEffort级别则直接返回1000是最低级别的,最有可能被杀掉。如果是Burstable则是中间级别需要按照资源的申请量来计算oom score。oomScoreAdjust := 1000 - (1...转载 2018-12-19 16:27:15 · 1075 阅读 · 0 评论