持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情
你可能已经在不同的来源中看到过 k8s 这个术语,并且想知道它的含义。嗯,这意味着 Kubernetes。缩写包括:
- “ k ”是Kubernetes的第一个字母,
- “ 8 ”是单词中第一个和最后一个之间的字母数,以及
- “ s ”是最后一个字母。
现在,让我们看看 Kubernetes 是用来做什么的,以了解它的核心优势和使用领域。
容器无处不在。使用Docker等容器技术,你可以通过单个命令在完全隔离的环境中启动应用程序。Kubernetes 用于容器编排,将多台机器组合成一个集群并分发有状态的容器。
在这篇博文中,你将了解到:
- 如何在本地设备上使用 Kubernetes,
- 如何在 Kubernetes 集群中启动应用程序,
- 最受欢迎的托管 Kubernetes 提供商,可大规模运行你的应用程序。
本教程将主要关注使用 shell 而不是 UI,因为它允许你使用本地和远程 Kubernetes 集群中的所有示例。
如何在本地设备上设置 Kubernetes
最简单的入门方法是安装 Docker。启动后,你可以打开 Docker,进入Settings -> Kubernetes,在本地启用 Kubernetes。确认后,你的 Kubernetes 集群将启动。
与 Kubernetes 集群通信的最简单方法是使用kubectl。因此,如果你还没有这样做,请安装 kubectl。
此外,我建议你设置 kubectx,它允许你在不同的集群之间切换。为了简化 Kubernetes 部署,你还应该安装 Helm,它使你能够使用单个命令部署更复杂的应用程序,这些应用程序由多个部分组成。
现在,Docker 在你的设置中显示 Kubernetes 集群已准备就绪,然后你可以启动一些应用程序。让我们看看所有可用的 Kubernetes 上下文:
# Show all available contexts
kubectx
> development
> docker-desktop
# Select local docker desktop context
kubectx docker-desktop
如何在 Kubernetes 集群中启动应用程序
让我们建立一个JupyterHub,允许团队使用 Jupyter Notebooks,这是机器学习和 Python 最流行的平台之一。
# add helm repository
helm repo add jupyterhub https://jupyterhub.github.io/helm-chart/
# start containers
helm install my-jupyterhub jupyterhub/jupyterhub --version 1.2.0
# after a few minutes, get information about the Kubernetes service
kubectl --namespace=default get svc proxy-public
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
proxy-public LoadBalancer 10.109.132.29 localhost 80:31480/TCP 31m
如打印的那样,外部 IP 是 localhost 并暴露在端口 80 上。一旦容器启动,你可以打开http://localhost并使用用户名“admin”登录,无需密码。
如你所见,使用几条命令行即可轻松运行更全面的应用程序。如果你想尝试更多示例,请查看我关于 Helm 的博客文章。
要清理资源,你应该删除正在运行的应用程序:
helm uninstall my-jupyterhub
release "my-jupyterhub" uninstalled
最受欢迎的托管 Kubernetes 集群
一旦你想运行一个应用程序并使其可供其他人使用,你必须运行一个公开可用的 Kubernetes 集群。如果你不是专家,则不应从头开始运行集群。
相反,你可以使用 Kubernetes 集群的托管版本,这意味着集群本身的大部分维护都由外部提供商完成。你可以简单地部署容器,并且一切都应该正常工作。
我的建议是使用Google 的托管集群 Google Kubernetes Cluster (GKE)。Google 是 Kubernetes 的原始设计者,以提供可靠的 Kubernetes 体验而闻名。他们还提供了一个更极端的托管版本,称为 GKE Autopilot,它允许你按容器小时数和内存付费。
尽管如此,实际上,团队使用标准 Kubernetes 集群,该集群带有更多其他托管服务的集成,如果你使用 Autopilot,这些服务尚不可用。例如,你可以使用Config Connector创建使用 Kubernetes 资源的服务帐户、DNS 记录或托管证书。
你可以按照简单的 Google 教程设置 GCP Kubernetes 集群并在几分钟内部署示例应用程序。
还有更多托管的 Kubernetes 集群,例如来自 Amazon 的Elastic Kubernetes Service (EKS) 和来自 Microsoft 的Azure Kubernetes Service (AKS)。无论你喜欢哪种云,最好使用当前云供应商提供的托管 Kubernetes 集群。
我使用 Google Trends 比较了三个流行供应商对 Kubernetes 的兴趣,结果表明 Azure 和 AWS(亚马逊)最受欢迎。
这些数字并未显示哪个供应商提供了最佳体验。但是,他们对在 Azure 上运行的 Kubernetes 表现出极大的兴趣。有趣的是,Azure 在过去几个月内处于领先地位。
概括
在这篇博文中,你了解了 k8s 的含义——它只是 Kubernetes 的缩写。它是一种流行的容器编排系统,用于自动化应用程序的部署、扩展和管理。你可以在本地运行 Kubernetes,也可以在不同的云中大规模运行。