Kubernetes
给 Kubernetes 添加 imagePullSecrets
· ☕ 1 分钟
1. 通过 kubectl create 添加 1 kubectl create secret docker-registry mypullsecret --docker-server=harbor.chenshaowen.com --docker-username=robot-test --docker-password=xxxxxx 通过 kubectl create 可以直接添加拉取镜像的凭证。 2. 通过 ~/.docker/config.json 添加 使用账户密码登录镜像仓库 1 docker login harbor.chenshaowen.com:5000 1 docker login harbor.chenshaowen.com 可以添加多个。 查看本地保存的凭证 1 2 3 4 5 6 7 8 9 10 11 12 cat ~/.docker/config.json { "auths": { "harbor.chenshaowen.com:5000": { "auth": "xxxxxx" }, "harbor.chenshaowen.com": { "auth": "xxxxxx" } } } 对凭证进行 base64 编码 1 2 3 cat ~/.docker/config.json |base64 -w

面向全球的镜像分发网络
· ☕ 5 分钟
1. 全球的网络规划 很多面向全球的多区域基础设施,在设计之初并没有在网络规划上花费太多心思。当业务复杂到一定程度时,又被逼着进行网络调整和优化。而任何网络上的大调整,都将对业务产生巨大影响。最终会陷入进退两难之地,只能投入更多人力,背上历史包袱

如何升级 Kubernetes 集群
· ☕ 1 分钟
升级思路是,驱逐负载、摘除流量之后,先升级控制节点,后升级工作节点。 1. 查看集群版本 1 2 3 4 kubectl version Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.4", GitCommit:"e87da0bd6e03ec3fea7933c4b5263d151aafd07c", GitTreeState:"clean", BuildDate:"2021-02-18T16:12:00Z", GoVersion:"go1.15.8", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.0", GitCommit:"c2b5237ccd9c0f1d600d3072634ca66cefdf272f", GitTreeState:"clean", BuildDate:"2021-08-04T17:57:25Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"} 当前版本是 1.22,由于 kubeadm 不允许跨版本升级,这里准备升级到 1.23 。 2. 添加 Kubernetes 安装源 CentOS 操作系统: 1 2 3 4 5 6 7

在 Kubernetes Pod 中注入环境变量及优先级
· ☕ 1 分钟
1. Kubernetes Pod 引用环境变量的几种方式 1.1 直接 Key/Value 可以直接设置 Value 值,也可以将当前 Pod 的信息作为 Value 值。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 apiVersion:v1kind:Podmetadata:name:envar-demolabels:purpose:demonstrate-envarsspec:containers:- name:envar-demo-containerimage:gcr.io/google-samples/node-hello:1.0env:- name:DEMO_GREETINGvalue:"Hello from the environment"- name:DEMO_FAREWELLvalue:"Such a sweet sorrow"- name:MY_NODE_NAMEvalueFrom:fieldRef:fieldPath:spec.nodeName- name:MY_POD_NAMEvalueFrom:fieldRef:fieldPath:metadata.name 1.2 从 Secret 引用 有两种方式引用 Secret 中的变量: 通过 envFrom 引用 Secret 中全部变量 通过 valueFrom 引用 Secret 中指定变量 1 2 3

给 Kubernetes 集群新增外部 DNS 服务
· ☕ 1 分钟
1. 给主机添加 DNS 1.1 CentOS 直接编辑 resolve.conf 文件即可。 1 2 3 4 /etc/resolv.conf nameserver 114.114.114.114 nameserver 8.8.8.8 1.2 Ubuntu 由于 resolve.conf 是自动生成的,需要改 resolved.conf 才行。 1 2 3 4 5 vim /etc/systemd/resolved.conf [Resolve] DNS=114.114.114.114 DNS=8.8.8.8 接着重启 resolve 服务。 1 systemctl restart systemd-resolved.service 最后,还可以确认下配置是否生效。 1 systemd-resolve --status 2. 重启 Nodelocaldns 在 Pod 中发起外部请求时,解析逻辑是 nodelocaldns -> 节点配置的 DNS -> 返回 I