【译】A Kubernetes quick start for people who know just enough about Docker to get by

如果你住在我们太阳系的这一侧,你可以保证以前听说过Kubernetes。 你可能不知道究竟是什么。 但那没关系。 即使你以前没有听说过,也要坚持下去并找出答案。 它会达到你的期望。

我保证Kubernetes不是一个疯狂的仓鼠掌舵双体船。 对于所有你知道和关心它的人也可能,但不,它不是,真的。 但是,那将是非常棒的。

TL; DR

如果您想跳到本指南中涉及的相关主题,可以通过按下面的任何链接自由选择。

  1. Kubernetes是......?
  2. 集群...?
  3. 创建自己的本地群集
  4. 在云中设置生产群集
  5. 部署到Kubernetes
  6. 创建Node.js和MongoDB部署

Kubernetes是......?

有谁知道“kubernetes”甚至意味着什么? 显然,如果有希腊读者,你会知道的。 这意味着舵手或飞行员。 这有什么关系?

Kubernetes是一个可移植,可扩展的开源平台,用于管理容器化工作负载和服务,有助于声明性配置和自动化。

哇...好吧,让我们打破它。 Kubernetes,也称为K8s,是一个用于自动化容器化应用程序的部署,扩展和管理的系统。

它由谷歌开发,并于2014年年中宣布。 许多关键开发人员之前都在使用Google的内部编排系统“Borg” 。 在2015年夏天发布Kubernetes v1.0之后,Google开源并与Linux基金会合作推进该技术。

让我们进一步分解Kubernetes。 想象一下这样。 您已经创建了一个Docker容器来包装您的应用程序。 但您仍需要管理各种DevOps任务以部署和管理容器。 这是Kubernetes介入的地方。它将处理所有重要的部署,扩展和管理步骤,因此您不必这样做。

它本质上是一个管理容器的工具。 各种各样的平台,一路牵着你的手。 由您来创建一个交织在一起的容器网络,告诉Kubernetes该做什么,以及如何为您的容器提供服务。

为什么我需要Kubernetes ......?

简单! 安心,期间。

您不必担心您拥有的每个实例。 也不需要担心容器是否在运行。 如果实例失败,Kubernetes将在正在运行的实例上重新创建失败实例的容器。 极好!

集群...?

在Kubernetes的意义上,集群将是一个耦合的容器网络,它们可以以这样的方式相互连接。

不要深入研究Kubernetes的内部工作,这是我们需要知道的。

节点

运行集群的计算机可以是Masters或Nodes。 命名是有道理的。 Master是整个集群的控制面板。 我们将运行的所有命令都将在Master实例上运行。 然后,它将决定群集中的哪个节点或工作计算机将承担工作负载。

网络

为了实现集群中各种容器之间的通信,我们需要一个网络来为它们提供IP地址。 幸运的是,Kubernetes有各种各样的选择,幸运的是他们像魔术一样工作。 这是一个更详细的解释。 从本质上讲,这样的网络使群集中的pod能够相互通信。

相互作用

我相信你现在想知道节点如何相互通信。 好吧,每个Node都有一个Kubelet,它是一个管理Node并与Kubernetes Master通信的代理。 所有这些都与Master公开的Kubernetes API粘在一起。 然后,我们使用Kubernetes API使用名为kubectl的CLI工具直接与集群交互。 更多关于这一点进一步下降。

除了API之外,Kubernetes能够正常工作的是一个名为etcd的全局可用配置存储。 它是一个分布式键值存储,可以分布在多个节点上。 为什么etcd如此重要? 它存储集群中所有节点的配置数据,因此它的每个部分都知道如何配置自身。

Kubernetes对象

Kubernetes对象是群集中存在的单个单元。 对象包括部署,副本集,服务,pod等等。 我们将专注于本教程范围内的这些主要对象。 当你创建一个对象时,你告诉Kubernetes集群你希望它拥有所需的状态 。

Kubernetes Objects是Kubernetes系统中的持久实体。Kubernetes使用这些实体来表示集群的状态。

期望状态意味着群集将按照您指定的方式保持其状态,即使群集中的节点发生故障也是如此。 Kubernetes将检测到这一点,并通过旋转其余节点上的对象进行补偿,以恢复所需的状态。 有了这个,让我们定义我们将要使用的对象。

  • Pod - 一组一个或多个容器(如Docker容器),具有共享存储/网络,以及如何运行容器的规范。 即使pod有多个容器,它们也可以通过单个IP地址在网络中访问。
  • 服务 - 定义Pod的逻辑集合以及访问它们的策略的抽象。 豆荚有一个生命周期。 他们被创造并死亡。 我们需要一种方法来定期访问它们,即使它们被重新创建。 通过为Pods提供特定标签,我们使用服务将流量路由到具有该特定标签的所有Pod。 瞧! 即使重新创建Pod,也可以可靠地访问它们。
  • ReplicaSet - 为Pods提供标签并控制其复制。 现在它们只用于部署。
  • 部署 - 描述所需的状态,并确保在需要时将实际状态更改为所需的状态。部署管理Pod和ReplicaSet,因此您不必这样做。 就像魔术一样!
部署指示Kubernetes如何创建和更新应用程序的实例。 创建部署后,Kubernetes主计划将应用程序实例提到集群中的各个节点上。

你需要Kubernetes集群吗?

我似乎无法找到一个原因。 即使我在那里的任何一个云提供商上运行了一个实例,我也会去集群设置。 部署支持滚动更新,意味着零停机时间。 我可以同时运行几个应用程序实例,并行!

但是,总有一个但是 。 理解卷和持久性有点繁琐。 容器毕竟是无国籍的。您需要创建某种持久存储,或使用第三方DBaaS。 但是,无论如何,使用AWS RDSMongoDB Atlas等服务都是如此。

我很喜欢安心。 在一天结束时没有头疼是浮在我的船上。

创建自己的本地群集

我们将使用Minikube进行开发,这是一种轻量级的Kubernetes设置。 它在本地计算机上创建一个小VM,并使用单个节点部署Kubernetes集群。 我们需要通过几个步骤来安装Minikube。 我们跳吧。

1.安装虚拟化软件 。

VirtualBox或KVM2都可以。 我发现使用VirtualBox是最简单的方法。 这是您可以轻松入门的下载页面。

2.安装kubectl

Kubectl是用于与Kubernetes集群交互的CLI工具。 跳转到官方页面 ,选择您的操作系统并运行提供的命令。 这很简单,这就是你在Ubuntu上的表现。你可以在我上面添加的链接上找到其他样本。

$ curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl 
 $ chmod +x ./kubectl 
  $ sudo mv ./kubectl /usr/local/bin/kubectl 

3.安装Docker

Docker的任务是创建和管理容器。 如果你在Ubuntu上,还有两个命令。

  $ sudo apt-get update 
  $ sudo apt-get install -y docker.io 

否则,跳转到此处进行Windows设置 ,或者如果您有Mac ,请跳转到此处

4.最后,安装Minikube。

Ubuntu只有一个命令。

  $ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64&& chmod + x minikube && sudo mv minikube / usr / local / bin / 

跳转到官方Minikube文档 ,找到适用于Mac和Windows的命令。

5.运行Minikube

就是这样,你可以使用Minikube CLI。 继续运行minikube ,你将获得可用的命令。 要直观地启动Minikube运行:

  $ minikube start 

您的开发群集已启动并正在运行。 要确保它正常工作,请运行一个简单的get nodes命令。

  $ kubectl获取节点 

输出应该显示基本的群集信息,如下所示。

 名称状态改变年龄版本 
  minikube Ready <无> Xd v1.9.0 

有了这样轻而易举的运行,让我们看看如何在服务器上安装Kubernetes。

在云中设置生产群集

感觉很勇敢? 我确定。 让我们快速完成在云中的真实服务器上安装Kubernetes的步骤。 为此,您可以选择所需的任何云提供商。

我在DigitalOcean上使用了这些步骤,安装只需不到5分钟。 您唯一需要记住的是将您配置的所有VM添加到同一个虚拟专用网络。 他们需要拥有私人IP,通过这些IP他们可以相互通信。

根据我们上面的知识,一个实例将是Master,而其他实例将是worker Nodes。 让我们首先在Master上安装Kubernetes。

在Master上安装Kubernetes

每个云提供商都会为您提供一系列步骤,以便连接到您的VM。 它们涉及ssh命令和实际服务器的公共IP地址。

继续并连接到您希望充当主服务器的服务器。 要开始在基于Debian的Linux计算机上安装Kubernetes,请按照以下步骤操作。

这是一个到云服务器的ssh连接示例。

  ssh user @ ip -p port 

注意 :像DigitalOcean或AWS这样的云提供商的默认ssh连接是这样的: ssh root@129.212.34.91 -p 22

1.安装Docker

与我们的Minikube安装一样,服务器需要安装容器化软件。 因此,安装Docker。

  $ apt-get update 
  $ apt-get install -y docker.io 

2.安装Kubernetes

安装Docker后,继续运行命令以安装Kubernetes。

  $ apt-get update && apt-get install -y apt-transport-https 
  $ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg |  apt-key add  -  
  $ cat << EOF> /etc/apt/sources.list.d/kubernetes.list 
  deb http://apt.kubernetes.io/ kubernetes-xenial main 
  EOF 
  $ apt-get update 
  $ apt-get install -y kubelet kubeadm kubectl 
  $ export MASTER_IP = <master_ip> 

你可以看到,除了kubectl,我们还安装了kubeletkubeadm 。 您之前在本演练中了解了kubelet,但不是关于kubeadm。

Kubeadm的任务是引导群集,它为群集创建所有必要的附加组件以使其正常运行,并且它支持用于向群集添加新节点的令牌。

这组命令的最后一行将导出Master的IP作为环境变量,因此您可以在以后轻松访问它。 只需将<master_ip>替换为VM的公共IP地址即可。

3.初始化Kubeadm

初始化kubeadm就像运行一个命令一样简单。

  $ kubeadm init --apiserver-advertise-address $ MASTER_IP 

重要提示 :您将在终端中看到一堆输出返回给您。 有一件事你需要留意。用于将节点添加到群集的命令。 它会在这里显示给你。 确保将其保存在安全的地方 。

将节点添加到Kubernetes集群的命令将如下所示。

  kubeadm join --token <token> 138.197.186.42:6443 --discovery-token-ca-cert-hash sha256:<hashed_token> 

4.配置Kubectl

要管理Kubernetes集群,需要客户端配置和证书。 当kubeadm初始化集群时,将创建此配置。 此命令将配置复制到用户的主目录,并设置环境变量以供CLI使用。

  $ cp /etc/kubernetes/admin.conf $ HOME / 
  $ chown $(id -u):$(id -g)$ HOME / admin.conf 
  $ export KUBECONFIG = $ HOME / admin.conf 

如果您使用服务器创建新的ssh会话,则可能会重置环境变量。 然后你会看到一些时髦的东西开始发生。 只需再次运行最后一个命令,就可以按照应有的方式恢复Kubernetes配置。 或者,您可以使用--kubeconfig标志运行kubectl命令。 在您放置admin.conf文件的$HOME目录中,像这样运行kubectl。

  kubectl --kubeconfig /path/to/admin.conf <command> <second_command> 
  //例子 
  kubectl --kubeconfig ./admin.conf获取节点 

5.安装pod网络

实现节点之间通信的关键步骤是安装pod网络。 我保证这些是我们需要在Master上运行的最后几个命令。

  $ sysctl net.bridge.bridge-nf-call-iptables = 1 
  $ export kubever = $(kubectl version | base64 | tr -d'\ n') 
  $ kubectl apply -f“https://cloud.weave.works/k8s/net?k8s-version=$kubever” 

真棒! 给自己轻拍一下。 现在要检查您的群集是否正常运行,请继续运行命令以检查节点。

  $ kubectl获取节点 

此命令的输出将如下所示。

 名称状态改变年龄版本 
  master Ready master Xd v1.9.0 

而已。 与Master完成后,让我们连接到专用网络中的Worker Node。

在节点上安装Kubernetes

设置节点甚至比主节点更简单。 许多命令完全相同,首先安装Docker和Kubernetes。 继续ssh进入工作节点并以超级用户身份运行这些命令。

1.安装Docker

就像Master一样,我们运行Docker install命令。

  $ apt-get update 
  $ apt-get install -y docker.io 

2.安装Kubernetes

看模式? 我们也安装Kubernetes。

  $ apt-get update && apt-get install -y apt-transport-https 
  $ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg |  apt-key add  -  
  $ cat << EOF> /etc/apt/sources.list.d/kubernetes.list 
  deb http://apt.kubernetes.io/ kubernetes-xenial main 
  EOF 
  $ apt-get update 
  $ apt-get install -y kubelet kubeadm kubectl 
  $ export WORKER_IP = <worker_ip> 

确保将<worker_ip>更改为VM的实际公共IP地址。

3.加入群集

最后,我们到达了有趣的部分。 还记得我们初始化kubeadm时发送回输出的集群连接命令吗? 我们现在需要它。 继续运行从kubeadm init --apiserver-advertise-address $MASTER_IP命令返回给您的整个命令。

  $ kubeadm join --token <token> <master_ip>:6443 --discovery-token-ca-cert-hash sha256:<hashed_token> 

注意 :Kubernetes API服务器的默认安全端口为 6443 

运行上面的命令后,您将看到一些输出,告诉您Node已成功连接到群集。

4.检查主服务器上的群集状态

现在,一旦再次进入Master,请继续检查群集中节点的状态。

  $ kubectl获取节点 

您应该看到它们处于Ready状态。 如果您看到NotReady ,请给它几分钟。

 名称状态改变年龄版本 
  master Ready master xmin v1.9.0 
 节点就绪节点xmin v1.9.0 

注意 :请记住,您只能与Master中的Kubernetes集群进行交互。

5.从本地开发机器与Master交互

如果您每次想要与群集交互时需要ssh进入Master,那将会有点不方便。Kubernetes有一个很棒的功能。 通过将主服务器上Kubernetes初始化期间创建的配置文件复制到安装了kubectl的本地计算机,您将能够远程访问您的集群。 那太棒了!?

要将文件从主服务器复制到开发计算机,请运行以下命令。

  $ scp <user> @ <master ip>:/ etc / kubernetes / admin.conf $ HOME / 
  $ kubectl --kubeconfig ./admin.conf获取节点 

这会将配置文件复制到主目录。 从那里你将使用--kubeconfig选项运行kubectl命令。

或者,如果您是一个整洁的开发人员,与我不同,这里是如何处理多个配置的指南。

配置对多个群集的访问
编辑本页此页面显示如何使用配置文件配置对多个集群的访问。在你...kubernetes.io之后

使用Google Cloud Kubernetes Engine

那些不喜欢管理服务器的人呢? 好吧,谷歌让我们受到了保护。 使用他们的Kubernetes Engine,您只需要完成几个简单的步骤,就可以从本地计算机上与现场Kubernetes集群进行交互了!

快速入门| Kubernetes发动机文档| Google云端平台
Google Cloud Shell是一个用于管理托管在Google Cloud Platform(GCP)上的资源的shell环境。Cloud Shell ...cloud.google.com

非常方便。 如果你不相信我,请看看上面。

注意 :为了保持其运行而运行的各种Kubernetes对象都有自己的专用端口。如果您启用防火墙,请确保允许他们访问,否则群集将无法正常工作。

这个令人敬畏的StackOverflow答案 。

部署到Kubernetes

哇...这是配置的公平份额。 最后时间创建一个真正的Kubernetes部署! 挂在那里,这将变得坎坷。

创建Nginx部署

让我们保持简单,但仍然使用您在生产环境中通常会使用的所有铃声和口哨声。 我们将创建一个简单的Nginx部署,通过服务公开它,最后将其扩展。

1.创建部署

创建部署时,Kubernetes会自动为您创建一个pod和副本集。 一探究竟。

连接到本地或云中运行的Kubernetes实例后,继续运行命令以创建部署。

  $ kubectl运行nginx --image = nginx 

run命令将从官方nginx Docker镜像创建一个名为nginx的部署。

要确保部署正在运行,请使用get命令检查其状态。

  $ kubectl获得部署nginx 

您将看到的输出看起来像这样。

  NAME希望获得当前最新的可用年龄 
  nginx 1 1 1 1 1m 

您在部署中运行了一个pod。 但是,它在私人网络之外是不可见的。 要公开它,您需要创建一个服务。 猜猜我们接下来要做什么?

2.公开部署

如果我告诉你暴露部署的命令实际上被称为expose怎么办? 真的是! 这非常方便。 事情才有意义,我很享受。 无论如何,回到服务。

  $ kubectl公开部署nginx --external-ip = $ MASTER_IP --port = 80 --target-port = 80 

expose命令将采用部署参数,您可以在其中指定要将服务挂接到的部署。 --external-ip选项将获取您的Master的公共IP地址,或者如果您按照本教程运行minikube的实例,请添加minikube-vm IP地址。 第一个--port选项指定将要公开的端口,而 
--target-port指定正在运行pod中容器的端口。

要确保您的服务正在运行,请运行此命令。

  $ kubectl获得服务 

输出将如下所示,其中<master_ip>是主服务器的公共IP地址。

 名称类型集群-IP外部-IP端口(S)年龄 
  kubernetes ClusterIP 10.96.0.1 <无> 443 / TCP 23m 
  nginx ClusterIP 10.111.213.194 <master_ip> 80 / TCP 2m 

3.扩大规模

可爱! 您有一个正在运行的部署和一个服务,可以显示您选择的端口。 现在怎么办? 我们,你还需要一种扩展方式。 值得庆幸的是,Kubernetes有一个漂亮的小命令。

  $ kubectl scale deployment nginx --replicas = 6 

再次检查部署状态,您将看到部署有6个pod。

  $ kubectl获得部署nginx 
  NAME希望获得当前最新的可用年龄 
  nginx 6 6 6 6 1h 

您可以使用get pods命令检查各个pod。

  $ kubectl获取pods 
  NAME READY STATUS RESTARTS AGE 
  nginx-8586cf59-4qdgc 1/1运行0 1h 
  nginx-8586cf59-fdq8r 1/1运行0 1h 
  nginx-8586cf59-j5mdh 1/1运行0 1h 
  nginx-8586cf59-ppqcd 1/1运行0 1h 
  nginx-8586cf59-sn4hd 1/1运行0 1h 
  nginx-8586cf59-w2z55 1/1运行0 1h 

看起来很棒。 Nginx部署已成功扩展。 但是,这只是一个简单的Nginx容器。 对于需要持久存储的多个容器的严重应用程序呢? 这是一个适当的挑战。 让我们开始吧。

创建Node.js和MongoDB部署

伟大的工作坚持到最后。 直到现在我们才能拿出大枪。 通过命令行创建大规模Kubernetes集群不是一个合理的选择,既不是概述,也不是心理健康。这就是我将在演练的最后一部分中专注于使用配置文件来部署Kubernetes对象的原因。

注意 :对于大型系统,我鼓励您使用 Helm  但这有点超出了本指南的范围。 让我们留下另一个教程。

另一个重要的事情是为我们的集群启用某种持久性。 众所周知,Pods是无国籍的。 如果我们删除一个,数据将永远丢失。 为了解决这个问题,Kubernetes实现了的概念。 不要深入挖掘,重要的是要注意一个卷是主机存储中的资源,它可以处理集群中的所有对象。 持久卷由管理员配置。

我们将讨论使用Kubernetes Persistent Volumes和Persistent Volume Claims 。与持久卷本身不同,用户请求持久卷声明来使用来自持久卷的资源。

这是一个例子。 您已创建大小为10 GB的持久卷。 但是,您希望群集中的部署每个仅声称 3 GB。

希望现在有意义。 如果它仍然没有,让我们直接跳到一些例子供你看。

1.创建持久卷

就像我上面提到的,我们将在本演练中使用yml配置文件来创建对象。 开始时它们是可以理解的,所以不要害怕。

让我们从创建一个工作目录开始,我们将保留所有yml文件。 创建一个名为cluster的目录,并在终端中打开它。 让我们开始慢一点,看看持久性卷声明是什么样的。

注意 :我将所有 yml 文件 添加 为gists,以保持格式良好和干净。 否则他们将无法正常工作。

 

我们将使用Filesystem卷模式为其提供10 GB的容量和/mnt/data/mongo的主机路径。 这将在主机上创建持久卷 。

确保在群集文件夹中创建名为mongo-persistent-volume.yml的文件。 连接到Kubernetes集群后,继续使用kubectl运行create命令。

  $ kubectl create -f ./ mongo-persistent-volume.yml 

我们去了,一个新的持久卷正在运行。 要列出持久卷,请运行以下命令。

  $ kubectl get persistentvolume 

现在我们需要添加持久卷声明 ,供我们的部署使用。 这是yml文件的样子。

 

再次运行create命令以创建对象。

  $ kubectl create -f ./ mongo-persistent-volume-claim.yml 

我们去! 我们坚持不懈。 准备添加一些计算?

2.创建MongoDB部署

这个创建过程就像我们上面所做的一样简单。 我们将再创建两个文件并运行另外两个命令。 而已!

 

将上面的mongo-deployment.yml文件添加到您的群集文件夹,然后运行另一个create命令。

  $ kubectl create -f ./ mongo-deployment.yml 

仔细看看上面的yml文件。 我们正在使用mongo映像并绑定默认端口。 除此之外,我们还添加了一个指向我们在上一步中创建的持久卷声明卷装入 。

您还可以看到我们添加了一个tier: backendapp: mongo 。 这将为集群提供集群中的别名,一旦我们添加服务,它就可以被发现。

说到服务,我们加一个。 将其命名为mongo-service.yml 。

 

检查标签! 此服务将查找将应用程序设置为mongo和层的所有部署设置为后端并将其公开给群集网络。 端口设置将确保允许流量通过默认的MongoDB端口27017 。 最后,运行命令以创建对象。

  $ kubectl create -f ./ mongo-service.yml 

3.创建Node.js部署

Node.js部署与我们之前创建的以前没有显着差异。 它还将有一个部署文件和一个服务文件。

 

添加node-deployment.yml文件并运行:

  $ kubectl create -f ./ node-deployment.yml 

您可以看到我们也将此部署添加到后端层 。 但是,我们将添加9副本并设置滚动更新策略,以确保即使在更新期间也能获得最大的正常运行时间。

我们将在部署窗格中构建容器的图像是我之前写的一个小型样板API 。 它具有基本身份验证,非常适合测试我们的新群集和持久卷。 我还将数据库连接字符串配置为指向我们在mongo-deployment.yml文件中指定的MongoDB应用程序标签。

剩下的就是添加服务,就是这样!

 

看一下这个。 node-service.yml将是负载均衡器 ! 它将所有流量通过端口80以循环方式路由到部署中的所有复制pod。 多么酷啊!?

注意 :将 externalIPs: 字段 替换 为主服务器的公共IP地址。 (如果您使用Minikube进行测试,请将其替换为Minikube提供的外部IP)

你能相信我这就是你所需要的吗? 我甚至不开玩笑。 但是,让我们成为负责任的开发人员并对其进行全面测试,以确保其有效。

测试Node.js和MongoDB集群

首先,检查资源是否正常运行。

  $ kubectl得到所有 

此命令将返回所有部署,复制副本,窗格和服务的列表。

验证它是否全部运行。 完成后,启动REST API测试客户端,例如InsomniaPostman ,并测试几个端点。

点击我在路由/api上设置为外部的IP地址,将返回一个简单的字符串,告诉我Node.js API正常运行。

让我们尝试注册一个新用户。 点击/api/auth/register端点,并以电子邮件,名称和密码字段的格式发送一些JSON数据。

那很有效! 我们收到了一个令牌返回。 让我们抓住令牌并将其添加到对/api/auth/me端点的GET请求中的x-access-token标头中。 这应该返回我们刚刚注册和验证的John Doe的信息。

可爱! 这就像我们预期的那样奏效。 现在,只是为了确保,点击/api/users端点以验证用户是否确实已添加到持久卷。 随意重新启动部署以确保自己。 因为我们在persistentVolumeReclaimPolicy添加了Retain设置,所以一旦重新启动,任何部署都将重新使用现有数据。 这有多方便啊!

随着一切的结束,我们已经走到了一个令人难以置信的旅程的尽头。 给自己轻拍一下。 您现在已经了解了Kuberentes的基础知识。

包起来

哇,这需要很多...... 
Kubernetes减轻了在大规模生产环境中使用Docker容器的压力。 除了Kubernetes之外我永远不会想要使用任何东西,因为我肩膀上的巨大负担。

Kubernetes是一个用于自动化容器化应用程序的部署,扩展和管理的系统。

使用Kubernetes,您不必忍受部署难题和愤怒的客户对您大吼大叫,因为他们的网站已关闭。 这就是你需要它的原因! 让您高枕无忧。

如果实例失败,Kubernetes将在正在运行的实例上重新创建失败实例的资源。

您不必担心您拥有的每个实例,也不必担心容器是否正在运行。 我会让它自己说话。 直到下一次。 快乐的慌乱!

 

https://blog.sourcerer.io/a-kubernetes-quick-start-for-people-who-know-just-enough-about-docker-to-get-by-71c5933b4633

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值