PLEG is not healthy (一)
本文永久链接: https://www.xtplayer.cn/kubernetes/kubelet/pleg-is-not-healthy/
PLEG 是什么?PLEG 全称叫 Pod Lifecycle Event Generator,即 Pod 生命周期事件生成器。实际上它只是 Kubelet 中的一个模块,主要职责就是通过匹配每个的 Pod 事件级别来调整容器运行时的状态,并将调整的结果写入缓存,使 Pod 的缓存保持最新状态。
PLEG 出现的背景在 Kubernetes 中,每个节点上都运行着守护进程 Kubelet 来管理节点上的容器,调整容器的实际状态以匹配 spec 中定义的状态。具体来说,Kubelet 需要对两个地方的更改做出及时的回应:
Pod spec 中定义的状态
容器运行时的状态
对于 Pod,Kubelet 会从多个数据来源 watch Pod spec 中的变化。对于容器,Kubelet 会定期(例如,10s)轮询容器运行时,以获取所有容器的最新状态。
随着 Pod 和容器数量的增加,轮询会产生不可忽略的开销,并且会由于 Kubelet 的并行操 ...
阅读全文Rancher2 配置 okta 认证
本文永久链接: https://www.xtplayer.cn/rancher/authentication/rancher2-okta-authentication/
版本支持: Rancher v2.2.0+
注意 在开始之前,请熟悉 外部身份验证配置和主要用户 的概念。
okta 应用配置这里以 okta 官方 demo 为例,访问 https://www.okta.com/free-trial/ 可以申请 30 天的试用账号。
创建应用
登录控制台后,依次点击 1、2、3、4 来创建应用。
注意:深红色的 3 是系统的提示。
选择 web 和 SAML 2.0,并点击创建。
SAML 配置常规设置 设置 APP 名称,其他参数可以忽略,然后点击下一步。
配置 SAML
SAML Settings
Single sign on URL
https://yourRancherHostURL/v1-saml/okta/saml/acs
Audience URI (SP Entity ID)
https://yourRancherHostUR ...
阅读全文采用 GitOps 的 11 大原因
本文永久链接: https://www.xtplayer.cn/git/top-11-reasons-to-use-gitops/
Kubernetes 允许我们单纯地使用声明性的配置文件来管理我们的应用部署和其他基础设施组件(例如,我们现在都是 YAML 开发者)。这使我们能够把所有这些文件放到 Git 仓库中,然后把它挂到流水线上(Jenkins、GitLab 等),流水线会把这些变化应用到集群上,然后就有了 GitOps。如果你还不了解 GitOps 是什么,可以查看我们之前发布过的文章:GitOps 初阶指南:将 DevOps 扩展至 K8S
为了使工作正常进行,我们必须确保改变集群的唯一方法是在 Git 仓库上提交。GitOps 并不是专门针对 Kubernetes 的,同样的原理也可以应用于任何其他声明式配置管理的环境。
可以说,很多企业已经开始采用 GitOps 了,但现在是业界开始充分认识到其潜力的时候。所以,让我们深入了解一下它如此出色的原因吧!
存储环境变更历史记录
只有通过更新相应 Git 仓库中的配置,才能改变应用环境。这将创建一个完整的状态变化的历史记 ...
阅读全文Could not generate persistent MAC address
本文永久链接: https://www.xtplayer.cn/linux/network/could-not-generate-persistent-mac-address/
问题现象在 docker 容器环境中,可能会看到很多如下的错误日志:
Could not generate persistent MAC address for tap0: No such file or directory
问题分析这是一个容器环境下的 BUG:https://github.com/systemd/systemd/issues/3374 。
解决方案编辑以下文件,如果这个文件没有则新建,然后配置以下参数。
/etc/systemd/network/99-default.link
[Link]NamePolicy=kernel database onboard slot pathMACAddressPolicy=none
MACAddressPolicy= 如何设置网卡的 MAC 地址:persistent 如果内核使用了网卡硬件固有的 MAC 地址(绝大多数网卡都有), 那么啥也不做, ...
阅读全文etcd 配置优化
本文永久链接: https://www.xtplayer.cn/etcd/etcd-optimize/
注意: 以下操作中所指的 K8S 集群,均是 rancher 或者 rke 创建的集群。
存储空间配额--quota-backend-bytes
存储空间配额可以理解为 ETCD 数据库大小,默认限制 2G(推荐最大 8G)。当数据写入耗尽存储空间时,ETCD 会引发整个集群范围的警告,该警告将会导致集群切换为维护模式,维护模式 仅接受键值读取和删除,不支持写入。
所以,在创建集群时候建议修改配额大小。但是这个配额值不宜过设置大,建议在主机内存的 60% - 70%。
手动释放配额空间如果在 ETCD 服务日志中看到类似以下的日志,那么说明 ETCD 配额空间可能已经满了,需要手动去清理并释放空间。
Error: rpc error: code = 8 desc = etcdserver: mvcc: database space exceeded
执行以下命令查看配额空间具体使用信息
# 在 ETCD 主机上执行以下命令docker exec -ti etcd sh ...
阅读全文mds、mds_stores、mdworker 占用大量 cpu 和内存
问题背景有时候忽然发现风扇转到特别厉害,打开的应用程序并不多。打开活动监视器,可以看到 mds、mds_stores、mdworker 占用很高的 cpu 和 内存 资源。
Spotlight 中文名称为 聚焦,就是按下 Command + 空格 弹窗的那个搜索框。
系统偏好设置位置:
mds、mds_stores、mdworker 是 Spotlight 的组成部分:
mds
元数据服务器。
mdworker
元数据服务器 worker 进程,主要负责文件的索引。
mds_stores
元数据存储服务。
在 Mac 上使用“聚焦”利用“聚焦”,您可以在 Mac 上查找应用、文稿及其他文件。您还可以利用“聚焦建议”来获取新闻、体育、影片、天气等信息。
使用“聚焦”进行搜索
点按菜单栏右上角的 ,或按下 Command-空格键。
输入您要查找的内容。您可以搜索类似“Apple Store 商店”或“来自艾米莉的电子邮件”这样的内容。
要打开结果列表中的某个项目,请连按这个项目。或者,要快速浏览结果,请使用向上箭头或向下箭头键。
按文件类型或位置进行搜索
...
阅读全文project.management.cattle.io not found
本文永久链接: https://www.xtplayer.cn/rancher/project-management-cattle-io-not-found/
问题背景有时候可能会在 rancher server 中看到很多如下的错误提示:
2019/07/16 06:33:23 [ERROR] NamespaceController default [resourceQuotaSyncController] failed with : project.management.cattle.io "cluster-vp4z8/project-zj5k9" not found, [resourceQuotaUsedLimitController] failed with : project.management.cattle.io "cluster-vp4z8/project-zj5k9" not found2019/07/16 06:33:39 [ERROR] NamespaceController kube-system [resourceQu ...
阅读全文自签名 SSL 证书
HTTP over SSL要保证 Web 浏览器到服务器的安全连接,HTTPS 几乎是唯一选择。HTTPS 其实就是 HTTP over SSL,也就是让 HTTP 连接建立在 SSL 安全连接之上。
SSL 使用证书来创建安全连接,有两种验证模式:
仅客户端验证服务器的证书,客户端自己不提供证书;
客户端和服务器都互相验证对方的证书。
一般第二种方式用于网上银行等安全性要求较高的网站,普通的 Web 网站只采用第一种方式。
客户端如何验证服务器的证书呢?
web 服务的证书必须经过某权威证书的签名,而这个权威证书又可能经过更权威的证书签名。这么一级一级追溯上去,最顶层那个最权威的证书就称为根证书,根证书一般内置在浏览器中。这样,浏览器就可以利用自己自带的根证书去验证某个 web 服务的证书是否有效。如果要提供一个有效的证书,web 服务的证书必须从 VeriSign 这样的证书颁发机构签名。这样,浏览器就可以验证通过,否则浏览器给出一个证书无效的警告。一般安全要求较高的内网环境,可以通过创建自签名 SSL 证书来加密通信。
数字证书(Certificate)在 HTTPS ...
阅读全文Rancher v2.4.6 发布
本文永久链接: https://www.xtplayer.cn/rancher/release/246/
重要更新
请查看 v2.4.0 发行说明 以获取重要更新/重大更改。
Kubernetes 1.18 现在是默认版本[ #25117 ]
Kubernetes 1.18 现在是默认版本。每当升级到任何 Kubernetes 版本时,请查看 Kubernetes 发行说明以了解任何重大更改。
使用单个 Docker 容器安装的用户
Docker 容器中的 Etcd 已从 3.3 升级到 3.4,因此您必须在升级之前进行备份,以便能够回滚到 v2.3.x 版本。没有备份,您将无法回滚。
使用带有 RHEL / CentOS 节点的节点池用户[ #18065 ]
RHEL / CentOS 节点的默认存储驱动程序已更新为 overlay2,如果您的节点模板未指定存储驱动程序,则将使用新的更新的默认值(overlay)而不是旧的默认值(devicemapper)来配置任何新节点。如果需要继续使用 devicemapper 作为存储驱动程序选项,请编辑节 ...
阅读全文Rancher v2.4.8 发布
本文永久链接: https://www.xtplayer.cn/rancher/release/248/
Rancher 2.4.8 版本于 2020 年 9 月 4 日发布。Rancher 2.4.8 解决了 Rancher v2.4.6 中新引入的设置(auth-token-max-ttl-minutes)有关的问题。除了以下变化,版本说明与 v2.4.6 相同。点击这里查看英文版版本说明。
修正了一个 UI 问题,在这个问题上,列出 KMS 密钥需要权限才能修改 AWS 节点模板#28724。
修正了 k8s go-client 与旧版 k8s 不兼容的问题,它可能会引起 Timeout: Too large resource version 错误。注意:该消息对集群没有已知的直接影响#28623。
修正了新设置的默认值(auth-token-max-ttl-minutes)
修正了在 v2.4.6 中创建的新 API 令牌会在 24 小时内默认过期的问题。该设置现在默认为 0,允许令牌永不过期,与 v2.4.5 类似#28668
修正了一个用户界面问题,如果 API ...
阅读全文Rancher v2.4.10 发布
本文永久链接: https://www.xtplayer.cn/rancher/release/2410/
仅解决了 v2.4.9 中没有最新系统 chart 的离线设置问题。请注意,发行说明与 v2.4.9 相同。
重要
请查看 v2.4.0 发行说明 以获取重要的更新/重大更改。
Kubernetes 1.18 现在是默认版本[ #25117 ] -Kubernetes 1.18 现在是默认版本。每当升级到任何 Kubernetes 版本时,请查看 Kubernetes 发行说明以了解任何重大更改。
使用单个 Docker 容器安装的用户-Docker容器中的Etcd 已从 3.3 升级到 3.4,因此您必须在升级之前进行备份,以便能够回滚到 v2.3.x 版本。没有此备份,您将无法回滚。
**使用带有 RHEL/CentOS 节点的节点池的用户[ #18065 ]**:RHEL/CentOS 节点的默认存储驱动程序已更新为 overlay2。如果您的节点模板未指定存储驱动程序,则将使用新的更新的默认值(overlay)而不是旧的默认值(d ...
阅读全文单节点+权威证书+四层负载均衡安装 Rancher
本文永久链接: https://www.xtplayer.cn/rancher/install/single-node-install-authority-ssl-l4/
权威 ssl 证书与默认自签名 ssl 证书或者自己生成的自签名证书有所不同,在权威 ssl 证书模式下,agent 通过 IP 访问无法通过证书的校验。因为 ssl 证书在生成的时候会与 IP 或者域名有一个绑定关系,而权威证书生成时候是基于申请证书时使用的域名,所以当用其他 IP 访问时候则无法验证通过。默认自签名 ssl 证书或者自己生成的自签名证书,在创建的时候有传递相应的 IP,所以自签名可以正常认证。
要使用权威证书安装 rancher,需要使用申请 ssl 证书时用的域名来访问 rancher。
在线安装docker_data_dir=xxxx # 定义绝对路径mkdir -p ${docker_data_dir}/data # rancher 数据目录mkdir -p ${docker_data_dir}/auditlog # 审计日志目录mkdir -p ...
阅读全文单节点+权威证书+七层负载均衡安装 Rancher
本文永久链接: https://www.xtplayer.cn/rancher/install/single-node-install-authority-ssl-l7/
权威 ssl 证书与默认自签名 ssl 证书或者自己生成的自签名证书有所不同,在权威 ssl 证书模式下,agent 通过 IP 访问无法通过证书的校验。因为 ssl 证书在生成的时候会与 IP 或者域名有一个绑定关系,而权威证书生成时候是基于申请证书时使用的域名,所以当用其他 IP 访问时候则无法验证通过。默认自签名 ssl 证书或者自己生成的自签名证书,在创建的时候有传递相应的 IP,所以自签名可以正常认证。
要使用权威证书安装 rancher,需要使用申请 ssl 证书时用的域名来访问 rancher。
在线安装docker_data_dir=xxxx # 定义绝对路径mkdir -p ${docker_data_dir}/data # rancher 数据目录mkdir -p ${docker_data_dir}/auditlog # 审计日志目录mkdir -p ...
阅读全文单节点+权威证书安装 Rancher
本文永久链接: https://www.xtplayer.cn/rancher/install/single-node-install-authority-ssl/
权威 ssl 证书与默认自签名 ssl 证书或者自己生成的自签名证书有所不同,在权威 ssl 证书模式下,agent 通过 IP 访问无法通过证书的校验。因为 ssl 证书在生成的时候会与 IP 或者域名有一个绑定关系,而权威证书生成时候是基于申请证书时使用的域名,所以当用其他 IP 访问时候则无法验证通过。默认自签名 ssl 证书或者自己生成的自签名证书,在创建的时候有传递相应的 IP,所以自签名可以正常认证。
要使用权威证书安装 rancher,需要使用申请 ssl 证书时用的域名来访问 rancher。
在线安装docker_data_dir=xxxx # 定义绝对路径mkdir -p ${docker_data_dir}/data # rancher 数据目录mkdir -p ${docker_data_dir}/auditlog # 审计日志目录mkdir -p $& ...
阅读全文单节点+自定义自签证书+四层负载均衡安装 Rancher
本文永久链接: https://www.xtplayer.cn/rancher/install/single-node-install-custom-ssl-l4/
在线安装Rancher 安装可以使用自己生成的自签名证书,如果没有自签名证书,可通过脚本一键生成自签名 ssl 证书。
docker_data_dir=xxxx # 定义绝对路径mkdir -p ${docker_data_dir}/data # rancher 数据目录mkdir -p ${docker_data_dir}/auditlog # 审计日志目录mkdir -p ${docker_data_dir}/ssl # 自定义 CA 证书目录docker run -d --restart=unless-stopped \-p 10080:80 -p 10443:443 \ ①-v ${docker_data_dir}/data:/var/lib/rancher \ ②# 审计日志配置 ③-e AUDIT_LEVEL=3 \-v $ ...
阅读全文单节点+自定义自签证书安装 Rancher
本文永久链接: https://www.xtplayer.cn/rancher/install/single-node-install-custom-ssl/
在线安装Rancher 安装也可以使用自己生成的自签名证书,如果没有自签名证书,可通过脚本一键生成自签名 ssl 证书。
docker_data_dir=xxxx # 定义绝对路径mkdir -p ${docker_data_dir}/data # rancher 数据目录mkdir -p ${docker_data_dir}/auditlog # 审计日志目录mkdir -p ${docker_data_dir}/ssl # 自定义 CA 证书目录docker run -d --restart=unless-stopped \-p 80:80 -p 443:443 \ ①-v ${docker_data_dir}/data:/var/lib/rancher \ ②# 审计日志配置 ③-e AUDIT_LEVEL=3 \-v ${dock ...
阅读全文单节点+默认自签证书+四层负载均衡安装 Rancher
默认情况下,Rancher 会自动生成一个用于加密的自签名证书。可以直接通过运行 Docker 命令来安装 Rancher,而不需要任何其他参数。
在线安装docker_data_dir=xxxx # 定义绝对路径mkdir -p ${docker_data_dir}/data # rancher 数据目录mkdir -p ${docker_data_dir}/auditlog # 审计日志目录mkdir -p ${docker_data_dir}/ssl # 自定义 CA 证书目录docker run -d --restart=unless-stopped \-p 10080:80 -p 10443:443 \ ①-v ${docker_data_dir}/data:/var/lib/rancher \ ②# 审计日志配置 ③-e AUDIT_LEVEL=3 \-v ${docker_data_dir}/auditlog:/var/log/auditlog \# 以下两行配置自定义 C ...
阅读全文单节点+自定义自签证书+七层负载均衡安装 Rancher
本文永久链接: https://www.xtplayer.cn/rancher/install/single-node-install-custom-ssl-l7/
单节点在线安装Rancher 安装可以使用自己生成的自签名证书,如果没有自签名证书,可通过脚本一键生成自签名 ssl 证书。
docker_data_dir=xxxx # 定义绝对路径mkdir -p ${docker_data_dir}/data # rancher 数据目录mkdir -p ${docker_data_dir}/auditlog # 审计日志目录mkdir -p ${docker_data_dir}/ssl # 自定义 CA 证书目录docker run -d --restart=unless-stopped \-p 10080:80 \ ①-v ${docker_data_dir}/data:/var/lib/rancher \ ②# 审计日志配置 ③-e AUDIT_LEVEL=3 \-v ${docker_ ...
阅读全文单节点+默认自签证书安装 Rancher
本文永久链接: https://www.xtplayer.cn/rancher/install/single-node-install-default-ssl/
默认情况下,Rancher 会自动生成一个用于加密的自签名证书。直接通过运行 Docker 命令来安装 Rancher,而不需要任何其他参数。
单节点在线安装docker_data_dir=xxxx # 定义绝对路径mkdir -p ${docker_data_dir}/data # rancher 数据目录mkdir -p ${docker_data_dir}/auditlog # 审计日志目录mkdir -p ${docker_data_dir}/ssl # 自定义 CA 证书目录docker run -d --restart=unless-stopped \-p 80:80 -p 443:443 \ ①-v ${docker_data_dir}/data:/var/lib/rancher \ ②# 审计日志配置 ③-e AUDIT_LEVE ...
阅读全文图形化的方式了解 Kubernetes
本文永久链接: https://www.xtplayer.cn/kubernetes/learn-about-kubernetes-graphically/
容器 在我们尝试了解 Kubernetes 之前,让我们花一点时间来澄清容器是什么,以及它们为什么如此受欢迎。毕竟,在不知道容器是什么的情况下谈论容器编排器(Kubernetes)是没有意义的。
“容器” 是一个用来存放你放入的所有物品的容器。
像应用程序代码,依赖库以及它的依赖关系一直到内核。这里的关键概念是隔离。将所有内容与其余内容隔离开,以便你更好地控制它们。容器提供三种隔离类型:
工作区隔离(流程、网络)
资源隔离(CPU、内存)
文件系统隔离(联合文件系统)
考虑一下像 VM 一样的容器。它们精简,快速(启动)且体积小。而且,所有这些都没有构建起来。取而代之的是,他们使用 Linux 系统中存在的结构(例如:cgroups、namespaces)在其上构建了一个不错的抽象。
现在我们知道什么是容器了,很容易理解为什么它们很受欢迎。不仅可以分发应用程序的二进制/代码,还可以以实用的方式交付运行应用程序所 ...
阅读全文使用 kind 快速创建本地集群
本文永久链接: https://www.xtplayer.cn/kubernetes/use-kind/
简 介kind 是另一个 Kubernetes SIG 项目,但它与 minikube 有很大区别。它可以将集群迁移到 Docker 容器中,这与生成虚拟机相比,启动速度大大加快。简而言之,kind 是一个使用 Docker 容器节点运行本地 Kubernetes 集群的工具(CLI)。
前期准备想要顺利完成本教程,你需要在本地系统中准备好以下程序:
Go
需要运行的 Docker 服务
安 装
使用以下命令下载和安装 kind 二进制文件:
GO111MODULE=”on” go get sigs.k8s.io/kind@v0.8.1
确保 kind 二进制文件是存在
> kind versionkind v0.8.1 go1.14.2 darwin/amd64
现在,我们应该能够使用 kind CLI 来启动一个 Kubernetes 集群:
Usage: kind [command]Available Commands: build Bu ...
阅读全文