EvenChan's Ops.

EvenChan's Ops.

it's better to burn out than to fade away

k8s之纵向扩缩容Vpa
vpa纵向容器自动缩放器(VPA)使用户无需设置最新的资源限制和对容器中容器的要求。配置后,它将根据使用情况自动设置请求,从而允许在节点上进行适当的调度,以便为每个Pod提供适当的资源量。它还将保持限制和初始容器配置中指定的请求之间的比率。 它既可以根据资源的使用情况来缩减对资源过度使用的Pod,也可以对资源需求不足的向上扩展Pod。 Kubernetes VPA 包含以下组件: Recommender:用于根据监控指标结合内置机制给出资源建议值 Updater:用于实时更新 pod resource requests History Storage:用于采集和存储监控数据 Admis...
01. GO之从零实现Web框架
本文是 7天用Go从零实现Web框架Gee教程系列的第一篇。 简单介绍net/http库以及http.Handler接口。 搭建Gee框架的雏形,代码约50行。 标准库启动Web服务Go语言内置了 net/http库,封装了HTTP网络编程的基础的接口,我们实现的Gee Web 框架便是基于net/http的。我们接下来通过一个例子,简单介绍下这个库的使用。 day1-http-base/base1/main.go 12345678910111213141516171819202122232425package mainimport ( "fmt&q...
etcd-operator的部署及使用
1. 部署RBAC下载create_role.sh、cluster-role-binding-template.yaml、cluster-role-template.yaml 例如: 1234567|-- cluster-role-binding-template.yaml|-- cluster-role-template.yaml|-- create_role.sh# 部署rbackubectl create ns operatorbash create_role.sh --namespace=operator # namespace与etcd-operator的ns一致 示例: ...
Kubernetes 最佳安全实践指南(更新版)
前言对于大部分 Kubernetes 用户来说,安全是无关紧要的,或者说没那么紧要,就算考虑到了,也只是敷衍一下,草草了事。实际上 Kubernetes 提供了非常多的选项可以大大提高应用的安全性,只要用好了这些选项,就可以将绝大部分的攻击抵挡在门外。为了更容易上手,我将它们总结成了几个最佳实践配置,大家看完了就可以开干了。当然,本文所述的最佳安全实践仅限于 Pod 层面,也就是容器层面,于容器的生命周期相关,至于容器之外的安全配置(比如操作系统啦、k8s 组件啦),以后有机会再唠。 1. 为容器配置 Security Context大部分情况下容器不需要太多的权限,我们可以通过 Sec...
Pod 一直停留在 Terminating 状态问题处理
前言近期,弹性云线上集群发生了几起特殊的容器漂移失败事件,其特殊之处在于容器处于 Pod Terminating 状态,而宿主则处于 Ready 状态。 宿主状态为 Ready 说明其能够正常处理 Pod 事件,但是 Pod 却卡在了退出阶段,说明此问题并非由 kubelet 引起,那么 docker 就是 1 号犯罪嫌疑人了。 下文将详细介绍问题的排查与分析全过程。 2. 抽丝剥茧2.1 排除 kubelet 嫌疑Pod 状态如下: 12[stupig@master ~]$ kubectl get pod -owidepod-976a0-5 0/1 ...
golang cobra的一些笔记
这几天稍微写了下cobra,网上搜到的博客分为两类,一类是把官方的readme翻译一下完事的,一类是写的都太简单了没有实际常见场景的。这里不废话了,先用官方demo讲解下 Cobra介绍是一个golang的库,其提供简单的接口来创建强大现代的CLI接口,类似于git或者go工具。同时,它也是一个应用,用来生成个人应用框架,从而开发以Cobra为基础的应用。热门的docker和k8s源码中都使用了CobraCobra 结构由三部分组成:命令( Command )、标志( Flag )、参数( Args )。 1234567type Command struct { Use ...
从一次IPVS故障开始的Kubernetes容器网络排障
问题现象是集群运行一段时间后kube-proxy停止更新IPVS规则,这个问题是由一个存在于1.11.5/1.12.2/1.13.0版本中的bug造成的。并在以下版本中得到了修复,可以查看kubernetes/kubernetes#71071了解更多信息。 1.11.7 1.12.5 1.13.2 另一方面,也可以通过将未修复版本的kube-proxy设置为iptables模式来规避这个问题。 开始讲故事最近有两个新平台部署,第一次在线上启用了很多新方案。包括Master高可用,LVS,持久化存储,Prometheus监控。本以为在测试环境已经正常跑了一...
K8S 问题排查:cgroup 内存泄露问题
前言这篇文章的全称应该叫:[在某些内核版本上,cgroup 的 kmem account 特性有内存泄露问题],如果你遇到过 pod 的 cannot allocated memory 报错,node 内核日志的 SLUB: Unable to allocate memory on node -1 报错,那么恭喜你中招了。 这个问题在 pingcap 文章 和腾讯云的官方修复都发过,原因也讲的很清楚,不过因为版本差异,文章里的方法有所变动,这里做下总结。 现象我们的环境: K8S 版本: 1.11、1.13、1.16 docker 版本:18.09 机器操作系统:centos7、cen...
K8S 部署流程
本地 Kubernetes 集群安装0. 网络环境的准备 Kubernetes 用到的很多镜像都在 gcr.io 上,在国内访问会有困难。 这里提供两个手段: 在家庭路由器上整个科学代理,实现全局科学上网。 使用 liangyuanpeng 大佬在评论区提供的 gcr 国内镜像地址,这需要进行如下替换: k8s.gcr.io—> lank8s.cn gcr.io—> gcr.lank8s.cn 1. 节点的环境准备首先准备三台 Linux 虚拟机,系统按需选择,然后调整这三台机器的设置: 节点配置: master:不低于 2c/3g,硬盘 20G 主...
Kubernetes 平滑移除节点
如果你想从Kubernetes集群中删除节点,正确流程如下: 获取节点列表1kubectl get node 设置不可调度由于节点目前处于正常工作状态,集群中新建资源还是有可能创建到该节点的,所以先将节点设置为不可调度: 1kubectl cordon $node_name 将节点上资源调度到其他节点目前集群已经不会分配新的资源在该节点上了,但是节点还运行着现有的业务,所以我们需要将节点上的业务分配到其他节点: 1kubectl drain $node_name 注意:DaemonSet Pod 和 Static Pod 是不会在集群中其他节点重建的。 移除节点当前集群中已...
avatar
EvenChan
Tomorrow Is Another Day