管理Kubernetes的 5 件小事, 你都了解吗

简介: 管理Kubernetes的 5 件小事, 你都了解吗

目录

1. Kubernetes 命名约定

2. 如何让你的应用程序运行

3. 如何获取应用程序的信息

4. 如何及时发现问题

5. 何时排查问题

总结


 

对于没有专门系统了解编排技术的开发人员来说,Kubernetes 管理可能会令人生畏。学习 Kubernetes需要大量时间,而对于面临交付新应用程序压力的开发人员来说,时间经常是不够的。

因此, 本文提供了你需要了解的Kubernetes 管理内容。


1. Kubernetes 命名约定

作为开发人员,了解在 Kubernetes 中创建的对象必须遵循特定的命名约定,将有助于你更快地运用和管理Kubernetes 。了解这些是如何工作的以及为什么以特定方式命名某些东西,也将有助于对应用程序或底层基础架构建立关联关系,也有助于问题的排查。

每个 Kubernetes 对象都有一个对某种资源唯一的名称和一个在整个集群中唯一的唯一标识对象 (UID)。Kubernetes.io说,“在同一个Namespace中只能有一个名为 myapp-1234的 Pod,但你可以有一个名为 myapp-1234 的 Pod 和一个名为 myapp-1234 Deployment。”

此外,具有更高级别控制器(例如 ReplicaSets/Deployments)的 Pod 将继承他们的命名前缀。例如,如果你的Deployment名称是webapp,则对应的 ReplicaSet 可能是 webapp-12345678,其下的相应 pod 可能是 webapp-12345678-abcde。这样,这个Namespace中的每个 pod 都有一个唯一的名称,它也告诉了哪些 pod 共享相同的控制器。


2. 如何让你的应用程序运行

Kubernetes 用户应该对Service和Deployment有基本的了解。

Service只是在集群内路由网络流量的一般方式,有时也从外部路由。

例如,名为webapp的Service将流量路由到标签为app: web的 pod。同一Namespace中的任何 pod 都可以通过向 URL http://webapp 发出请求来调用 webapp pod。传统上,在设置网络时,有许多步骤可以确保将流量路由到正确的位置,但是使用 Kubernetes 中的Service可以让你在更高级别上提供指示,并且由此产生的操作是自动化的。

Deployment是最简单的高级控制器。在无状态应用程序中,开发人员了解Deployment可以进行滚动更新就足够了,例如你需要多少副本以及你使用的版本。这可确保你的应用程序连接到正确的端点;两者之间的一切都是自动发生的。对于更复杂的应用程序,可能需要探索一些其他高级控制器,例如 StatefulSets 和 Cron job。

理解容器的主要原理也很有帮助:如何获得一致的状态?如果更新或操作导致应用程序异常,只需重新启动容器即可重置它。容器也可能不在同一个节点上。


3. 如何获取应用程序的信息

不管你在什么基础设施上运行,这都是大多数开发人员关心的。哪里出了问题,问题有多严重,是我的问题吗?最后一个问题似乎有点愤世嫉俗,但了解哪个团队和开发人员最适合解决问题对于运维效率至关重要。你需要回答的主要问题是:如何判断我的应用程序是否正在运行,以及资源消耗情况如何?

需要注意的一点是,使用命令kubectl get events将为你提供所有应用程序事件。不幸的是,Kubernetes 不会以任何特定的方式对它们进行排序,但是随着你的知识积累的增加和理解的提高,你可以在这些查询中进行过滤和筛查。


4. 如何及时发现问题

Kubernetes 的好处之一是它能够自动回滚到一致状态,但这可能掩盖潜在问题的影响。因此,开发人员需要有权访问 Kubernetes 日志和遥测数据。

其中,CPU 或内存使用等指标,对于基于 Kubernetes 的应用程序很重要,因为它们可以揭示 Kubernetes 可能掩盖的应用程序问题。


5. 何时排查问题

Kubernetes 的核心是让应用程序在生产环境中运行,因此,一般没有直接的系统输出信息可以解释应用程序崩溃的原因。

大多数情况下,Kubernetes 只是重启容器,问题就解决了,这得益于 Kubernetes 和容器的自我修复和弹性性质,但这可能会掩盖或隐藏不良的应用程序行为,也会导致问题被更长时间地忽视。

有时候,我们需要对某个问题进行更深入的调查,例如它是否会影响客户体验,或对其他团队造成负面影响,所提供的Service类型以及性能的效果如何。


总结

尽管开发人员了解他们的应用程序如何在 Kubernetes 上运行很重要,但在大多数情况下,他们不需要深入了解 Kubernetes 的工作原理。作为开发人员,Kubernetes 在某种程度上可能看起来很混乱,但你可以通过提供特定的方向来控制混乱。例如,如果你没有指定pod 运行的位置,默认情况下它将在任何地方运行。或者,你可以使用 taints/tolerations 告诉 Kubernetes 不要在特定节点上运行应用程序。无论你配置(或不配置)它,你都可以使用基本的自动检查来显示应用程序是否健康。

开发人员开始使用 Kubernetes 时,不要让它过于复杂。将其视为一种管理你的应用程序的方式,这个系统可自动采取行动自我修复并在几乎没有干预的情况下恢复到健康状态。随着知识和经验的增长,可以根据需要扩展 Kubernetes 的实施,使其尽可能稳健。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
7月前
|
Kubernetes 监控 数据安全/隐私保护
K8s好看的管理页面Rancher管理K8S
K8s好看的管理页面Rancher管理K8S
104 4
|
7月前
|
存储 Kubernetes 监控
Kubecost | Kubernetes 开支监控和管理 🤑🤑🤑
Kubecost | Kubernetes 开支监控和管理 🤑🤑🤑
|
7月前
|
Kubernetes 开发工具 Docker
微服务实践k8s与dapr开发部署实验(2)状态管理
微服务实践k8s与dapr开发部署实验(2)状态管理
112 3
微服务实践k8s与dapr开发部署实验(2)状态管理
|
7月前
|
存储 Kubernetes API
使用Kubernetes管理容器化应用的深度解析
【5月更文挑战第20天】本文深度解析Kubernetes在管理容器化应用中的作用。Kubernetes是一个开源平台,用于自动化部署、扩展和管理容器,提供API对象描述应用资源并维持其期望状态。核心组件包括负责集群控制的Master节点(含API Server、Scheduler、Controller Manager和Etcd)和运行Pod的工作节点Node(含Kubelet、Kube-Proxy和容器运行时环境)。
|
5月前
|
存储 Kubernetes 容器
k8s卷管理-2
k8s卷管理-2
28 2
|
5月前
|
存储 Kubernetes 调度
k8s卷管理-1
k8s卷管理-1
24 2
|
5月前
|
Kubernetes 持续交付 Python
Kubernetes(通常简称为K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。
Kubernetes(通常简称为K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。
|
5月前
|
存储 弹性计算 运维
阿里云容器服务Kubernetes版(ACK)部署与管理体验评测
阿里云容器服务Kubernetes版(ACK)是一个功能全面的托管Kubernetes服务,它为企业提供了快速、灵活的云上应用管理能力。
189 2
|
6月前
|
Kubernetes 算法 API
K8S 集群认证管理
【6月更文挑战第22天】Kubernetes API Server通过REST API管理集群资源,关键在于客户端身份认证和授权。
|
7月前
|
弹性计算 Kubernetes 监控
【阿里云弹性计算】阿里云 ECS 与 Kubernetes 集成:轻松管理容器化应用
【5月更文挑战第28天】阿里云ECS与Kubernetes集成,打造强大容器管理平台,简化应用部署,实现弹性扩展和高效资源管理。通过Kubernetes声明式配置在ECS上快速部署,适用于微服务和大规模Web应用。结合监控服务确保安全与性能,未来将深化集成,满足更多业务需求,引领容器化应用管理新趋势。
272 2