K8s Node Docker devicemapper 设备初始化方法

步骤

  1. drain 掉节点上所有的 pod
1
kubectl drain <node-name> --ignore-daemonsets --delete-local-data --force
  1. 停止 kubelet
1
systemctl stop kubelet
  1. 停止所有容器
1
2
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
  1. 停止 docker daemon
1
systemctl stop docker
Read more

K8s 集群 master 节点迁移

背景

当前测试环境 K8s 集群 3 台 master 机器配置相对较高,之前为了充分利用资源将 workload 与 control plane + etcd 混部,这样大大降低了集群的稳定性,而 IaaS 层没有用虚拟化技术,不支持原地升级规格,因此我们决定通过迁移的方式来实现:

  1. 让 K8s master 组件独享 3 台机器,与 workload 分开部署
  2. 用 3 台性能较差的机器代替,避免资源浪费

旧的 master 节点为:oldmaster-1 oldmaster-2 oldmaster-3
新的 master 节点为:master-1 master-2 master-3

前置条件

检查客户端配置

  1. 检查所有 kubelet server 配置为 LB 地址

如果不是则改为 LB 地址

1
ansible all -m shell -a 'sed -i "s#server: https://.*#server: https://10.200.20.241:443#" /etc/kubernetes/kubelet.conf'
  1. 检查 kube-proxy server 配置为 LB 地址
1
kubectl -n kube-system get configmap kube-proxy -o yaml | sed 's#server: https://.*#server: https://10.200.20.241:443#' | kubectl apply -f -
  1. 检查所有 controller-manager 和 scheduler server 配置为本机 apiserver 6443 地址

  2. 确保所有业务方 kubeconfig 都使用 LB 地址

Read more

HTC 刷机备忘

笔者对 HTC 手机有着深厚的感情,从 HTC G2 到 HTC M8,经历了 HTC 的鼎盛和衰落。本文记录了一些常用的刷机方法和 hack 命令,以作备忘。

官方 Unlock/ReLock 方法

Unlock

获取解锁 token

1
fastboot oem get_identifier_token
Read more

Kubernetes 容器生命周期管理

健康检查和就绪检查

健康检查(Liveness Probe)

如果设置了 livenessProbe,k8s (kubelet) 会每隔 n 秒执行预先配置的行为来检查容器是否健康

当健康检查失败时,k8s 会认为容器已经挂掉,会根据 restartPolicy 来对容器进行重启或其他操作。

每次检查有 3 种结果,SuccessFailureUnknown

如果不配置,默认的检查状态为 Success

Read more

Kubernetes 服务灰度升级最佳实践

本文主要介绍了 Deployment 和 StatefulSet 的升级机制和扩缩容机制,以及一些常用的配置项。并分别介绍了以这两种方式部署 Pod 时的对服务进行升级(包括滚动发布、蓝绿发布、灰度/金丝雀发布)的最佳实践。

Deployment

升级机制

Rollout

Deployment 的 rollout 在 .spec.template 被修改时触发(比如镜像地址更新、Pod label 更新等等),其他修改(.spec.replicas 更新)不会触发。

更新时,k8s 通过计算 pod-template-hash,创建新的 ReplicaSet,由新的 rs 启动新的 Pod,不断替换旧 rs 的 Pod。

Read more

Kubernetes APIServer 证书的手动签发

背景

有时我们需要将自定义的域名或 IP 加入到 apiserver 的证书中,以通过 kubectl 或 kubelet 等客户端的验证,这个时候就需要对 apiserver 证书中包含的 IP 和 DNS 信息做些修改。

概念

首先介绍几个概念:

  • KEY: 私钥
  • CSR: Certificate Signing Request 证书签名请求(公钥)
  • CRT: Certificate 证书
  • x.509: 一种证书格式
  • PEM: X.509 证书文件具体的存储格式(有时候用 pem 代替 crt 后缀)
Read more

Aria2 配置备忘

Aria2 是一款轻量级的命令行下载工具,支持 HTTP/HTTPS、FTP、SFTP、BitTorrent 和 Metalink 等链接格式,提供 JSON-RPC 和 XML-RPC 管理接口,是一款优秀的 Linux 版迅雷替代品。

Read more

Hello, Hexo.

周末折腾了半天,终于将博客从 Pelican 转到了 Hexo,在此记录一下。

方案选择

首先说说方案选择,目前博客系统大致分为静态和动态两类,动态博客有 Wordpress、Ghost 等等,因为需要单独的主机和搭建环境,并且数据存在 DB 迁移起来比较费劲,所以放弃了这种方案;静态博客有 Pelican、Jekyll、Hexo 等等,后者很多优点,访问速度快,博客可直接用 Markdown 以文件的形式保存在 Github,借助 Github Pages 部署方便,不用自己搭建主机,总之个人觉得这些优点可以完爆动态博客。

笔者之前的博客是基于 Pelican 的,因为使用 Python 写的,而自己对 Python 有一种痴迷,因此之前选用了这种方案,但是慢慢发现缺点有很多。首先是渲染速度慢,当文章越来越多时,博客生成的时间就会让人难以忍受。另外 Pelican 的主题都不是很炫,找了半天都没有找到好看的主题,这也是促使我选用其他博客系统的一个原因。

其次了解了 Jekyll,它是用 Ruby 开发的,也是 Github 主推的博客系统,和 Github 无缝结合,可以直接在 Github 页面上配置、修改主题(教程在此),主题也很多,如果没有遇见 Hexo,也许我会选择 Jekyll。

Hexo 使用 Nodejs 开发,渲染速度相对于 Python 和 Ruby 来说很快,而且 CLI 设计也非常人性化,配置简单,支持的插件也有很多,使用 npm 来管理。也许正是由于开发语言的关系,Hexo 的主题质量都非常高,都非常好看,让人眼花缭乱(https://hexo.io/themes/index.html)。老实说我是被这款名叫 AlphaDust 的主题吸引了,非常有科技感,而且响应式在移动设备上也比较完美,无论是英文字体还是中文字体都支持很好,对作者的敬意油然而生。当然 NexT 也是一款非常优秀的主题,以后有机会可以尝试一下(^_^)。

Read more
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×