如何设置Kubernetes和管理集群

105 阅读4分钟

你可能已经在不同的资料中看到了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笔记本,这是机器学习和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集群的管理版本,这意味着集群本身的大部分维护是由外部供应商完成的。你可以简单地部署容器,而事情应该就是这样。

我的建议是使用谷歌Kubernetes集群(GKE),这是谷歌的管理集群。谷歌是Kubernetes的原始设计者,以提供坚实的Kubernetes体验而闻名。他们还提供了一个更极端的管理版本,叫做GKE自动驾驶,它允许你按容器小时和内存付费。

不过,在现实中,团队使用的是标准的Kubernetes集群,它带有更多的其他管理服务的集成,如果你使用Autopilot,这些服务还不能使用。例如,你可以通过使用配置连接器,利用Kubernetes资源创建服务账户、DNS记录或管理证书。

你可以按照谷歌的简单教程,在几分钟内建立一个GCP Kubernetes集群,并部署一个示例应用程序

还有很多管理型的Kubernetes集群,如亚马逊的Elastic Kubernetes Service(EKS)和微软的Azure Kubernetes Service(AKS)。无论你喜欢什么云,通常使用你目前的云供应商的管理型Kubernetes集群是个好主意。

通过使用谷歌趋势比较了三个流行供应商对Kubernetes的兴趣,结果显示Azure和AWS(亚马逊)是最受欢迎的。

Screenshot-2022-06-05-at-11.01.31

这些数字并没有显示哪个供应商提供了最好的体验。但是,它们显示了人们对在Azure上运行的Kubernetes的巨大兴趣。有趣的是,Azure在过去几个月里占据了领先地位。

总结

在这篇博文中,你了解了k8s的含义--它只是Kubernetes的一个缩写。它是一个流行的容器编排系统,用于自动化应用程序的部署、扩展和管理。你可以在本地运行Kubernetes,也可以在不同的云中大规模运行。

我希望你喜欢这篇文章。