Introduction to k3d: Run K3s in Docker
本文永久链接: https://www.xtplayer.cn/k3d/introduction-k3d-run-k3s-docker-src/
In this blog post, we’re going to talk about k3d, a tool that allows you to run throwaway Kubernetes clusters anywhere you have Docker installed. I’ve anticipated your questions — so let’s go!
What is k3d?k3d is a small program made for running a K3s cluster in Docker. K3s is a lightweight, CNCF-certified Kubernetes distribution and Sandbox project. Designed for low-resource environments, K3s is distributed as a single bin ...
阅读全文Kubernetes 自动弹性伸缩
本文永久链接: https://www.xtplayer.cn/kubernetes/k8s-automatic-elastic-expansion/
Kubernetes 自动弹性伸缩可以根据业务流量,自动增加或减少服务。这一功能在实际的业务场景中十分重要。在本文中,我们将了解 Kubernetes 如何针对应用产生的自定义指标实现自动伸缩。
为什么需要自定义指标?应用程序的 CPU 或 RAM 的消耗并不一定能够正确表明是否需要进行扩展。例如,如果你有一个消息队列 consumer,它每秒可以处理 500 条消息而不会导致崩溃。一旦该 consumer 的单个实例每秒处理接近 500 条消息,你可能希望将应用程序扩展到两个实例,以便将负载分布在两个实例上。测量 CPU 或 RAM 对于扩展这样的应用程序来说有点矫枉过正了,你需要寻找一个与应用程序性质更为密切相关的指标。一个实例在特定时间点处理的消息数量能更贴切地反映该应用的实际负载。同样,可能有一些应用的其他指标更有意义。这些可以使用 Kubernetes 中的自定义指标进行定义。
Metrics 流水线Metrics Serv ...
阅读全文创建一个成熟的 GitOps 流水线需要做哪些决定?
本文永久链接: https://www.xtplayer.cn/cicd/create-a-full-fledged-gitops-pipeline/
在软件交付领域,GitOps 是近期的热门趋势,它沿袭并扩展了 DevOps、基础架构即代码和 CI/CD 等趋势。我们此前发布了许多关于 GitOps 的入门文章,您可以在公众号后台回复【Git 文章】获取 GitOps 文章合集。
GitOps 的优势可以简单地归纳如下:
自由地审计更改
持续集成和交付
更好地控制更改管理
然而,现实情况却是构建 GitOps 流水线并非易事,它涉及到许多大大小小的决定,而这些决定会给实施工作带来许多麻烦。我们将这些决定称为“GitOps 架构”,它可能会导致实施过程中面临许多挑战。
好的方面是只要有一定的规划和经验,就可以大大减少过渡到 GitOps 交付模式的痛苦。
在本文中,我将通过一家公司的故事来解释其中的一些挑战。这家公司从一个零散的小创业公司采用 GitOps,成长为一家规范的跨国企业。虽然这种加速成长的情况很少见,但它确实反映了大型组织中的许多团队从概念验证,到最小可行 ...
阅读全文Understanding the Kubernetes Node
本文永久链接: https://www.xtplayer.cn/kubernetes/understanding-the-kubernetes-node/
IntroductionWith over 48,000 stars on GitHub, more than 75,000 commits, and with major contributors like Google and Red Hat, Kubernetes has rapidly taken over the container ecosystem to become the true leader of container orchestration platforms. Kubernetes offers great features like rolling and rollback of deployments, container health checks, automatic container recovery, container auto-scaling based on metrics, ser ...
阅读全文Kubernetes: Tackling Resource Consumption
本文永久链接: https://www.xtplayer.cn/kubernetes/kubernetes-tackling-resource-consumption/
This is the third of a series of three articles focusing on Kubernetes security: the outside attack, the inside attack, and dealing with resource consumption or noisy neighbors.
A concern for many administrators setting up a multi-tenant Kubernetes cluster is how to prevent a co-tenant from becoming a “noisy neighbor,” one who monopolizes CPU, memory, storage and other resources. As a result, this noisy neighbo ...
阅读全文Announcing Harvester - Open Source Hyperconverged Infrastructure (HCI) Software
本文永久链接: https://www.xtplayer.cn/hci/announcing-harvester-open-source-hyperconverged-infrastructure-hci-software/
Today, I am excited to announce project Harvester, open source hyperconverged infrastructure (HCI) software built using Kubernetes. Harvester provides fully integrated virtualization and storage capabilities on bare-metal servers. No Kubernetes knowledge is required to use Harvester.
Why Harvester?In the past few years, we’ve seen many attempts to bring VM management into container ...
阅读全文Using Hybrid and Multi-Cloud Service Mesh Based Applications for Distributed Deployments
本文永久链接: https://www.xtplayer.cn/service-mesh/using-hybrid-and-multi-cloud-service-mesh-based-applications-for-distributed-deployments/
Service Mesh is an emerging architecture pattern gaining traction today. Along with Kubernetes, Service Mesh can form a powerful platform which addresses the technical requirements that arise in a highly distributed environment typically found on a microservices cluster and/or service infrastructure. A Service Mesh is a dedicated infrastructure layer for ...
阅读全文Set up K3s in High Availability using k3d
本文永久链接: https://www.xtplayer.cn/k3s/set-up-k3s-in-high-availability-using-k3d/
Have you ever wanted to try K3s high availability cluster “mode,” and you either did not have the minimum three “spare nodes” or the time required to set up the same amount of VMs? Then you are in for a good treat: meet k3d!
If you’re not familiar with k3d, its name gives you a hint to what it’s all about: K3s in Docker. k3d is a lightweight wrapper to run K3s (a lightweight, single <40MB binary, certified Kuber ...
阅读全文Compute Confidently at the Edge with Rancher and Longhorn
本文永久链接: https://www.xtplayer.cn/rancher/compute-confidently-at-the-edge-with-rancher-and-longhorn-1-1/
Today’s announcement of Longhorn 1.1, a Cloud Native Computing Foundation (CNCF) Sandbox project, is exciting news for users of Rancher, SUSE’s Kubernetes management platform, and the Kubernetes community. Longhorn is an enterprise-grade, cloud native container storage solution that went GA in June 2020. Since then, adoption has increased by 235 percent. Now Longhorn is the first cloud nativ ...
阅读全文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 ...
阅读全文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 ...
阅读全文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 集 ...
阅读全文