Kubernetes 规范中标签的重要性
本文永久链接: https://www.xtplayer.cn/kubernetes/autoscaling/ Kubernetes的核心是资源管理和编排工具。可以集中精力进行第一天的操作,以探索和试用其很酷的功能来部署,监视和控制 Pod。但是,您还需要考虑第二天的操作。您需要关注以下问题: 我将如何扩展 Pod 和应用程序? 如何保持容器健康运行并高效运行? 随着代码和用户工作量的不断变化,我该如何应对这些变化? 我在这篇文章中提供了 Kubernetes 内部不同可伸缩性机制的高级概述,以及使它们满足您的需求的最佳方法。请记住,要真正掌握 Kubernetes,您需要掌握不同的方法来管理集群资源的规模,这是 Kubernetes 承诺的核心。 配置 Kubernetes 集群以平衡资源和性能可能是一项挑战,并且需要具备 Kubernetes 内部运作的专业知识。仅仅因为您的应用程序或服务的工作负载不是恒定的,而是整天(甚至不是整小时)都会波动。将其视为一段旅程和一个持续的过程。 Kubernetes 自动扩展构建基块有效的kubernetes自动缩放需要两层可缩放性之间的协 ...
阅读全文Kubernetes 资源请求和限制
本文永久链接: https://www.xtplayer.cn/kubernetes/resource-requests-and-limits/ 资源调度是 Kubernetes 的核心功能之一。Kubernetes 调度程序确保容器获得足够的资源以正确执行。此过程由调度策略控制。在深入研究调度程序的工作原理之前,我们确保我们了解 Kubernetes 集群内部资源定义,分配和限制的基本结构。 资源类型Kubernetes 只有两个内置的可管理资源:CPU和内存。CPU 基本单元是核心,内存以字节为单位,这两种资源在调度器如何将 Pods 分配给节点方面起着关键作用。您将控制您的集群请求,分配和使用内存和 CPU,始终设置正确的 CPU 和内存值,这将确保运行异常的应用程序不会影响群集中其他 Pod 的可用资源容量。 资源请求和限制Kubernetes 使用请求(requests)和限制(limits)结构来控制 CPU 和内存等资源。 requests: 请求是保证容器预期需要分配的资源大小,可以理解为所需的最小资源。如果容器配置了 requests,Kubernetes 将仅在 ...
阅读全文Kubernetes 概念及其重要性
本文永久链接: https://www.xtplayer.cn/kubernetes/concepts-and-matters/ 要完全理解该技术,您需要知道为什么使用容器编排工具以及 Kubernetes 是如何出现的。Kubernetes 的故事始于容器,为了解容器的好处,让我们看看软件部署机制是如何随着时间演变的。 Docker 容器改变了部署软件的方式在过去,软件部署相对困难,耗时且容易出错。要安装应用程序,需要购买许多物理机并为 CPU 和内存支付超出实际需要的费用。几年后,虚拟化成为主流。一台功能强大的裸机服务器可以托管多台虚拟机,CPU 和内存可以共享,因此您节省了一些成本。如今,机器可以比虚拟服务器分割成更小的部分 — 容器。容器仅在几年之间变得如此流行。那么,Linux 容器到底是什么?Docker 适合用在什么场景? 容器就像虚拟机一样提供一种虚拟化的实现,主机管理程序提供了硬件级别的隔离,而容器提供了进程级别的隔离。 为了理解这种差异,让我们回到示例中。 您决定使用容器,而不是为 Apache 和 MySQL 创建虚拟机。现在,您的堆栈如下图所示。 容器 ...
阅读全文了解 Kubernetes 1.20
本文永久链接: https://www.xtplayer.cn/kubernetes/about-kubernetes-1.20/ Kubernetes 1.20 版本有 43 个增强(从 1.19 版本增加的 34 个),包括 15 个全新的,11 个升级到稳定的,以及 17 个对现有特性的改进。 这表明这些增强的作用范围较小。例如,对 kube-apiserver 进行了一些更改,以使其在 HA 集群中更加友好并具有更好的性能。它还可以在升级后更有效地重新启动。 为什么会这样?这些小的改进和新特性为未来的重大变化铺平了道路。然而,最新版本已经有了一个主要的变化(尽管人们期待已久)。 Kubernetes 弃用 Docker从 1.20 版本开始,Kubernetes 将不再支持 Docker 作为容器运行时,而是支持容器运行时接口Container Runtime Interface(CRI)。 但是不要惊慌! 这并不意味着 Docker 已经死了,你不必放弃 Docker 工具。对于 Kubernetes 用户来说,不会有太大的改变,因为你仍然可以使用 Docker 构建容器, ...
阅读全文影响 Kubernetes 调度的决策因素
本文永久链接: https://www.xtplayer.cn/kubernetes/scheduler/influencing-kubernetes-scheduler-decisions/ 为了提高节点资源的最大利用率,调度程序使用复杂的算法来确保最有效的 Pod 调度。在本文中,我们讨论调度程序如何选择最佳节点来运行 Pod,以及如何影响其决策。 哪个节点具有可用资源?选择适当的节点时,调度程序会检查每个节点是否有足够的资源满足 Pod 调度。如果您已经声明 Pod 所需的 CPU 和内存量(通过请求和限制),调度程序将使用以下公式来计算给定节点上的可用内存: 调度可用内存 = 节点总内存 - 已预留内存 保留内存是指: Kubernetes 守护进程使用的内存,例如:kubelet、containerd(一种容器运行时)。 节点操作系统使用的内存,例如:内核守护程序。 通过使用此方程式,调度程序可确保由于过多 Pod 竞争消耗节点所有可用资源,从而导致节点资源耗尽引起其他系统异常,比如系统触发 oom。 影响调度过程在不受用户影响的情况下,调度程序在将 Pod 调度到节点 ...
阅读全文初步了解 Kubernetes 基础功能
本文永久链接: https://www.xtplayer.cn/kubernetes/kubernetes-basics/ 什么是 Kubernetes?随着越来越多的组织开始采用容器,以容器为中心的管理软件 Kubernetes 已成为部署和操作容器化应用的通行标准。Google Cloud 是 Kubernetes 诞生的地方 - Kubernetes 最初在 Google 开发,然后在 2014 年开源发布。Kubernetes 的构建以 15 年来运行 Google 的容器化工作负载的经验以及开源社区的宝贵贡献为依托。Kubernetes 受 Google 内部集群管理系统 Borg 的启发,能够简化与部署和管理应用相关的所有工作。Kubernetes 可提供自动化容器编排,因此能够提高可靠性,同时节省日常运营所需的时间和资源。 Kubernetes 的定义 Kubernetes(有时简写为“K8s”,其中“8”代表“K”和“s”之间的 8 个字母)是一个开源系统,支持在任何地方部署、扩缩和管理容器化应用。 Kubernetes 可自动执行容器管理的操作任务,其内置了用于部 ...
阅读全文Windows 10X 初步了解
本文永久链接: https://www.xtplayer.cn/windows/windows-10x/ Windows 10X 是为新 PC 完全构建的 Windows 的新版本,将于 2021 年开始在硬件上交付。它基于新的称为 Windows Core OS 的现代 Windows 版本构建,该版本可破坏旧组件,以及支持现代用户体验和增强安全性的功能。 这意味着从 Windows Shell 到底层操作系统的所有功能都已使用现代技术进行了重建。因此,Windows 10X 在启动时不支持旧版 Win32 应用程序。2021 年的 Windows 10X PC 将能够运行 Microsoft Edge,UWP 和 Web 应用程序。 但是,旧版 Win32 应用程序支持将在以后提供。这样做时,默认情况下,Win32 应用程序将在安全容器中运行,这意味着这些传统应用程序在关闭时不会影响系统性能和电池寿命。因此,Windows 10X 是一个更加安全和稳定的操作系统,因为传统应用程序没有机会引起比特币腐烂。 新的用户体验 Windows 10X 具有使用现代技术构建的新外壳(即用户 ...
阅读全文运用 DevOps 之力实现基础设施自动化
本文永久链接: https://www.xtplayer.cn/devops/automation-of-infrastructure/ GitOps 提供一种自动化基础设施管理方法,已经在众多团队中得到应用的 DevOps 最佳实践——包括版本控制、代码审查以及 CI/CD 流水线——都将被囊括于其中。目前,许多公司都在采用 DevOps,看中的正是它在提高生产率和软件质量方面拥有的巨大潜力。在这一过程中,我们已经找到了自动化软件开发生命周期的方法。但是,当涉及到基础设施的设置和部署时,手动操作的比重仍然相当可观。有了 GitOps,团队就可以自动化基础设施配置过程。这是由于在 GitOps 方法中,我们能够使用声明将基础设施编写为代码(IaC),而后像存储应用程序开发代码一样将基础设施即代码存储在 Git repo 当中。 GitOps 如何发挥作用?GitOps 的概念最初是由 Kubernetes 管理公司 Weaveworks 所提出,因此关于 GitOps 的讨论主要是在 Kubernetes 的背景下进行的。随着整体设施转向运行在容器内的微服务架构,我们自然需 ...
阅读全文ETCD 常见问题集锦
本文永久链接: https://www.xtplayer.cn/etcd/etcd-problem-sets/ 客户端必须向 etcd leader 发送请求吗?Raft is leader-based, leader 处理所有需要一致性的客户机请求。但客户端不需要知道哪个节点是 leader,所有发送给跟随者的一致性请求都会自动转发给 leader。不需要协商一致的请求(例如,序列化读取)可以由任何集群成员处理。 系统要求由于 etcd 将数据写入磁盘,因此强烈建议使用 SSD 或者超高速磁盘来运行 etcd 服务。为防止性能下降或无意中存储空间耗尽,etcd 强制设置 2GB 默认存储大小配额,可以通过--quota-backend-bytes配置配额,最高可配置为 8GB。空间配额用来保障集群可靠运行,如果没有限制配额,当键空间变大之后,直到耗尽磁盘空间。当任意节点超出空间配额,那么当前 etcd 服务将进入维护状态,只接受读/删操作。只有释放了足够空间、去碎片化了后端数据库并且清理了空间配额之后,集群才能继续正常操作。 etcd 集群大小从理论上讲,没有硬性限制。但是,一个 ...
阅读全文kubernetes 常见问题集锦
本文永久链接: https://www.xtplayer.cn/kubernetes/kubernetes-problem-sets/ 为什么在节点出现故障时重新调度 Pod 需要 5 分钟以上?这是由于以下默认 Kubernetes 设置的组合: kubelet node-status-update-frequency:指定 kubelet 将节点状态发布到 master 的频率(默认为 10 秒) kube-controller-manager node-monitor-period:在 NodeController 中同步 NodeStatus 的时间段(默认 5 秒) node-monitor-grace-period:在标记运行节点不健康之前允许运行节点无响应的时间(默认为 40 秒) pod-eviction-timeout:删除失败节点上的 Pod 的宽限期(默认为 5m0) 有关这些设置的更多信息,请访问文档:节点不可用时快速迁移 Pods network: stat /var/lib/calico/nodename ...
阅读全文Rancher 常见问题集锦
本文永久链接: https://www.xtplayer.cn/rancher/rancher-problem-sets/ Rancher server 管理员密码重置请查参考链接:Rancher server 管理员密码重置 Rancher server 如何数据持久?Rancher server 不管是单节点单容器安装,或者是多节点 Local kubernetes HA 安装,Rancher server 都是通过 kubernetes API 去写入数据,最后数据都是保存在 kubernetes 后端的数据存储服务中(etcd)。 在 v2.3.x 之前的 Rancher server 版本中,Rancher server 容器中运行了一个定制化的微型 kubernetes 集群。在 v2.3.x 及之后的 Rancher server 版本中,定制化的微型 kubernetes 集群更换成了 K3S 集群。 Rancher server 单节点单容器安装 对于单节点单容器安装的 Rancher server,容器中的定制化微型 kubernetes 集群或者 K3S 集 ...
阅读全文RKE 常见问题集锦
本文永久链接: https://www.xtplayer.cn/rke/rke-problem-sets/ 如何添加额外的 arguments/binds/environment?无法为主机创建 SSH 隧道 Failed to set up SSH tunneling for host [xxx.xxx.xxx.xxx]: Can’t retrieve Docker Info ,Failed to dial to /var/run/docker.sock: ssh: rejected: administratively prohibited (open failed) 当使用 RedHat/CentOS 作为操作系统时, 不能使用root用户去登录主机,具体原因可以查看Bugzilla #1527565。需要添加一个非 root 用户并添加访问 docker.sock 的权限,配置方法请参考 通过非 root 用户管理 Docker。 如上的报错,指定连接的用户没有权限访问 docker.sock,可以通过登录主机并运行 dock ...
阅读全文Cgroup 常见问题集锦
本文永久链接: https://www.xtplayer.cn/linux/cgroup/cgroup-problem-sets/ applying cgroup configuration for process caused “No such device or address””: unknownError: failed to start container "default-http-backend": Error response from daemon: OCI runtime create failed: container_linux.go:265: starting container process caused "process_linux.go:264: applying cgroup configuration for process caused \"No such device or address\"": unknownError: failed to start container &qu ...
阅读全文Linux Netfilter 调优
本文永久链接: https://www.xtplayer.cn/linux/netfilter/linux-netfilter-optimization/ 如果您正在为高流量的 Web/DNS 服务器提供服务,并且最近使该服务器 PING 丢失并且并非所有 HTTP 请求都成功。您可以开始检查系统日志。并且如果您看到类似下面的内容,那么下面的指南将帮助您调整 Linux 服务器以正确处理流量负载。 Mar 22 21:25:55 localhost kernel: nf_conntrack: table full, dropping packet.Mar 22 21:26:00 localhost kernel: printk: 11 messages suppressed.Mar 22 21:26:00 localhost kernel: nf_conntrack: table full, dropping packet.Mar 22 21:26:05 localhost kernel: printk: 16 messages suppressed. 状态查看 buck ...
阅读全文将博客搬至 CSDN
本文永久链接: https://www.xtplayer.cn/csdn/blog-sync-to-csdn/ 我的博客即将同步至 CSDN 社区,这是我的 CSDN 主页:https://blog.csdn.net/hongxiaolu
阅读全文4 步将 Rancher2.5.x 迁移至任意 K8S 发行版
本文永久链接: https://www.xtplayer.cn/rancher/rancher2-x-migration/ Rancher v2.5 之前的版本是不支持将 Rancher 迁移到其他集群的,但可以利用一些“黑科技”实现将 Rancher 迁移到新的集群,在之前发布的文章「多场景解析如何迁移 Rancher Server」有过介绍。 从 Rancher v2.5 开始,可以使用 rancher-backup operator 来备份和恢复 Rancher,rancher-backup 工作时不需要暴露 etcd,因为 operator 通过调用 kube-apiserver 来收集资源。我们可以利用此特性将 Rancher 迁移到任何标准 Kubernetes 发行版的集群中。 迁移过程概要: 创建 Rancher 备份,并将备份上传到备份存储位置 创建 Rancher local 集群 使用 Restore 自定义资源从备份中还原到 local 集群 使用 Helm 安装 Rancher 迁移先决条件: Rancher 版本必须是 v2.5.0 及以上。 如果你 ...
阅读全文一通百通,一文实现灵活的 K8S 基础架构!
本文永久链接: https://www.xtplayer.cn/kubernetes/k8s-infrastructure/ Kubernetes 是当前最为流行的开源容器编排平台,成为众多企业构建基础架构的首选。在本文中,我们将探讨针对你的用例构建基础设施的最佳方式,以及你可能要根据各种限制条件做出的各种决定。 架构设计你的架构应该在很大程度上围绕你的用例来设计,因此在设计过程中你需要非常仔细以确保该基础架构能够支撑你的用例,在必要的时候也可以寻求外部专业团队的帮助。在架构设计的开始保证方向正确十分重要,但是这并不意味着不会发生错误,而且随着每天都有新的技术或研究横空出世,你可以看到变革已经成为常态,并且你的架构设计思维有可能过时。 这就是为什么我强烈建议你采用 Architect for Chang 的原则,让你的架构成为一个模块化的架构以便在未来有需要的时候你可以灵活地在内部进行改变。 让我们看看在考虑 client-server 模型的情况下如何实现系统架构的目标。 切入点:DNS在任何典型的基础架构中(无论是否是云原生架构),一个消息请求必须先由 DNS 服务器解析,并返回 ...
阅读全文Longhorn 1.1 ARM 支持
当 DevOps 团队同时使用 Rancher 和 Longhorn 1.1 时,他们可以轻松管理位于任意位置的持久化数据卷,无论这些持久化数据卷位于云端、数据中心抑或边缘。 2021 年 1 月 27 日,全球开源创新领导者及 Rancher 容器管理平台所有者 SUSE 正式宣布发布 Longhorn 1.1。2019 年 10 月,Longhorn 成为了云原生计算基金会(CNCF)的沙箱(Sandbox)项目。2020 年 6 月,Longhorn 正式 GA。自此,Longhorn 的采用率增长了 235%,并成为了 Kubernetes 存储领域的中流砥柱。随着 Longhorn 1.1 的发布,Rancher 用户现已可以在边缘的低功耗硬件中使用 Kubernetes 原生存储解决方案。 Longhorn 1.1 帮助 DevOps 团队在任何 Kubernetes 环境中轻松管理持久化数据卷,同时为云原生存储带来企业级的避免供应商锁定(Lock- in)的解决方案。通过扩展对 ARM64 的支持、自我修复功能以及增强的性能可见性,最新版本为 Rancher 用户在边 ...
阅读全文kubernetes secret device or resource busy
本文永久链接: https://www.xtplayer.cn/kubernetes/kubernetes-secret-device-or-resource-busy/ 如上图,有时候升级业务 Pod 时,旧业务 Pod 一直处于 removing 状态。在主机上执行 docker ps -a | grep <pod 名称> 也未能查询到残留容器。登录 Pod 所在的主机,执行 docker logs kubelet --tail 100 查看 kubelet 的运行日志,可以看到以下错误日志: Error: "UnmountVolume.TearDown failed for volume \"default-token-r9sxw\" (UniqueName: \"kubernetes.io/secret/bc895c3f-2fbf-11eb-a93a-4cd98f444b4d-default-token-r9sxw\") pod \"bc895c3f-2fbf-11eb-a93a-4cd98f444 ...
阅读全文Rancher2 OpenLDAP 认证
本文永久链接: https://www.xtplayer.cn/rancher/authentication/rancher2-openldap-authentication/ 版本支持: Rancher v2.0.5+ 注意 在开始之前,请熟悉 外部身份验证配置和主要用户 的概念。 如果您的组织使用 LDAP 进行用户身份验证,则可以将 Rancher 与 OpenLDAP 服务集成,以提供统一的用户身份验证。 OpenLDAP 身份验证流程 当用户尝试使用 LDAP 账号登录 Rancher 时,Rancher 使用具有 搜索目录和读取用户/组权限 的服务帐户创建对 LDAP 服务器的初始绑定(账号初始化)。 然后,Rancher 使用基于提供的用户名和配置的属性映射的搜索过滤器在目录中搜索用户。 找到用户后,使用用户的 DN 和提供的密码对另一个 LDAP 绑定请求进行身份验证。 验证成功后,Rancher 将从用户对象的成员资格属性中解析组成员资格,并根据配置的用户映射属性执行组搜索。 注意 在配置之前请先熟悉 外部身份验证配置和主要用户的概念。 先决条件必须使用 ...
阅读全文Rancher2 Azure AD 认证
本文永久链接: https://www.xtplayer.cn/rancher/authentication/rancher2-azure-ad-authentication/ 版本支持: Rancher v2.0.3+ 如果您在 Azure 中启用了 Active Directory(AD) 服务,则可以配置 Rancher 以允许您的用户使用 Azure AD 帐户登录。 注意 在开始之前,请熟悉 外部身份验证配置和主要用户 的概念。 在 Azure 中注册 Rancher在 Rancher 中启用 Azure AD 之前,必须向 Azure 注册 Rancher。 Azure 分 Global 区和中国区: 中国区 Portal 地址:https://portal.azure.cn Global 区 Portal 地址:https://portal.azure.com 本文配置以中国区为例,Global 区方法类似 步骤中的配置需要管理访问权限,所以需要以管理用户身份登录 Microsoft Azure portal。 搜索应用注册并打开 点击新应用程序注册, 并 ...
阅读全文