EvenChan's Ops.

EvenChan's Ops.

it's better to burn out than to fade away

kubernetes多集群管理维护方式
相信很多人都会经常部署不同的 Kubernetes 集群,也会经常删除不再使用的 Kubernetes 集群,如果要在本地通过 kubectl 客户端与集群进行交互,就需要不同的 kubeconfig,然后通过环境变量或命令行参数不断来回切换 kubeconfig,或者手动将多个 kubeconfig 合并为一个,然后通过 kubectl 插件 kubectx[1] 或 kubie 来切换上下文环境(即 context)。 那么有没有一种方法可以自动将多个 kubeconfig 文件合并成一个呢?手动合并也太麻烦了啊! 有个小哥和我也有同样的苦恼,索性写了一个自动化工具 kubectx....
Statefulset+storageclass+ceph最佳实践
我们在使用kubernetes/docker时最重要的是要对数据做持久化,ceph做为一个开源的分布式存储系统,支持对象存储,块存储rbd,文件系cephfs,同时具备高可靠,易扩展等特性,kubernetes+ceph在很多企业已经落地实施,也是目前最成熟可靠的方案,本篇博客主要为大家讲解基于storageclass动态管理存储的整个生命周期 1.创建kubernetes对接ceph需要的外部客户端 rbd-provisioner 注:假如你的kubernetes集群是由kubeadm初始化时,那么kube-controller-manager本身是没有rbd的命令,所以需要...
nginx-rewrite重定向跳转实例
nginx-rewrite重定向跳转实例工作中常用到nginx的rewrite,网上许多文章也写了一些,不过实用性的话,还是往下看吧。 nginx重定向-跳转实例: 1,将www.a.com/connect 跳转到connect.a.com 1rewrite ^/connect$ http://connect.a.com permanent; 2,将connect.a.com 301跳转到www.a.com/connect/ 123if ($host = "connect.a.com"){rewrite ^/(.*)$ http://www.a.com/c...
kubernetes容器中域名解析优化
多余的DNS查询一些需要解析外部DNS域名的应用,当运行在容器中时,如果我们在容器的network namespace中对dns报文(udp port 53)进行抓包,可能会发现在正确解析之前,还经过了若干次多余的尝试。 下面是我在容器中ping google.com,同时在容器的network namespace中抓到的包。 1234567891011121314151617181920212223sudo nsenter -t 3885 -n tcpdump -i eth0 udp port 53tcpdump: verbose output suppressed, use -v o...
使用 Certbot 为网站设置永久免费的 HTTPS 证书
我的博客从上线第一天起就使用了 HTTPS,用的是 Cloudflare,直接在其后台配置即可。如果你是用 nginx、apache、haproxy 等服务器来运行自己的网站,给大家推荐 Certbot,可以自动化来配置 SSL 证书和定时更新。 下面记录我自己为 servicemesher.com 网站配置 HTTPS 证书的过程,全程不需要 5 分钟。 环境网站的托管环境如下: OS:CentOS 7.6 阿里云 网站服务器:Nginx,使用 yum 安装,版本 1.12 提前配置好 Nginx,确保使用 HTTP 先可以访问到网站 注意:请使用 yum 命令安装 nginx,...
构建 Kubernetes 集群 —— 选择工作节点数量和大小
编者按 本文从多个维度阐述了使用更少的大节点与更多的小节点来组建 Kubernetes 集群各自的优势与劣势,并结合实践经验给出了选择工作节点数量和大小的一般方法。 引言在创建 Kubernetes 集群时,您首先会想到的问题之一就是:“我应该创建何种类型的工作节点,以及应该创建多少个?”。  如果您正在搭建内部集群,是应该购买最新一代的超级服务器,还是使用数据中心里的十几台旧机器呢?  或者您使用的是托管 Kubernetes 服务,例如 Google Kubernetes Engine (GKE),是应该使用 8 个 n1-standard-1 实例,还是应该使用 2 个 n1-st...
编写Go的一些建议
显式与隐式  Go 语言社区对于显式的初始化、方法调用非常推崇,类似 Spring Boot 和 Rails 的框架其实都广泛地采纳了『约定优于配置』的中心思想,简化了开发者和工程师的工作量 init  在这里先以一个非常常见的函数 init 为例,介绍 Go 语言社区对显式调用的推崇;相信很多人都在一些 package 中阅读过这样的代码: 123456789101112131415161718var grpcClient *grpc.Clientfunc init() { var err error grpcClient, err = grpc.Dial(......
k8s基于自定义指标实现自动扩容
基于自定义指标  除了基于 CPU 和内存来进行自动扩缩容之外,我们还可以根据自定义的监控指标来进行。这个我们就需要使用 Prometheus Adapter,Prometheus 用于监控应用的负载和集群本身的各种指标,Prometheus Adapter 可以帮我们使用 Prometheus 收集的指标并使用它们来制定扩展策略,这些指标都是通过 APIServer 暴露的,而且 HPA 资源对象也可以很轻易的直接使用。  下面来看具体怎么实现的! 部署应用  首先,我们部署一个示例应用,在该应用程序上测试 Prometheus 指标自动缩放,资源清单文件如下所示:(podinfo....
Dockerhub反向代理
https://dockerhub.mirrors.nwafu.edu.cn/ 使用方法 修改 /etc/docker/daemon.json ,加入: 123{ "registry-mirrors": ["https://dockerhub.mirrors.nwafu.edu.cn/"]}  然后重新启动 Docker 服务: 12sudo systemctl daemon-reloadsudo systemctl restart docker
K8S Pod 内抓包快速定位网络问题
前言在使用 Kubernetes 时,可能会遇到一些网络问题。当通过检查配置与日志无法排查错误时,这时就需要抓取网络数据包,但是Pod内一般不会安装tcpdump命令,那有没有方法可以直接通过宿主机抓取Pod网络数据包? 当然有,本文介绍 nsenter 命令,能够进入Pod容器 net 命名空间。并且本文提供一个快速进入Pod容器 net 命名空间脚本,方便大家使用。 nsenter 使用参数12345678910111213141516nsenter [options] [program [arguments]]options:-t, --target pid:指定被进入命名空间...
avatar
EvenChan
Tomorrow Is Another Day