当前位置: 首页 > 科技观察

如何修补正在运行的Kubernetespod?

时间:2023-03-21 01:12:25 科技观察

【.com速译】Kubernetes是市面上最强大、最灵活的容器集群管理器之一。使用此工具,您几乎可以做任何想做的事情。为已部署的pod打补丁是Kubernetes提供的此类功能之一。例如,假设您部署了一个带有Nginx容器的pod,但随后想要将Regis和MySQL容器添加到其中。无需拆除所有内容并重新调整配置文件,您只需运行patch命令即可添加新容器。以下是如何做到这一点。虽然简单,但此示例演示了patch选项如何与kubectl命令一起使用。你需要什么?要完成这项工作,您只需要一个正在运行的Kubernetes集群。要了解如何部署集群,请查看本教程:《如何在Ubuntu服务器上部署Kubernetes集群?》。一旦集群启动并运行,我们就可以继续下一步。如何部署Kubernetes服务?我们要做的第一件事是部署Kubernetes服务。使用命令创建一个新目录:mkdir~/patch-demo使用命令更改到新目录:cd~/patch-demo现在,使用基本模板和两个副本为使用Nginx的服务部署创建一个YAML文件。使用以下命令创建文件:nanodeployment-patch.yaml在文件中,粘贴以下内容:apiVersion:apps/v1#forversionsbefore1.9.0useapps/v1beta2kind:Deploymentmetadata:name:patch-demospec:replicas:2selector:matchLabels:app:nginxtemplate:metadata:labels:app:nginxspec:containers:-name:patch-demo-ctrimage:nginxtolerations:-effect:NoSchedulekey:dedicatedvalue:test-team保存并关闭文件。使用以下命令部署配置:kubectlapply-fdeployment-patch.yaml现在您可以通过执行以下命令看到pod正在运行:kubectlgetpods补丁演示补丁将被列为正在运行(图A)。图A.我们的Kubernetespatch-demopod已启动并正在运行我们如何为正在运行的服务打补丁?现在我们将创建一个战略性合并的补丁文件,将Redis容器添加到pod。使用以下命令创建补丁文件:nanopatch-file.yaml在此文件中,粘贴以下内容:spec:template:spec:containers:-name:patch-demo-ctr-2image:redis保存并关闭文件。要修补正在运行的服务,请执行以下命令:kubectlpatchdeploymentpatch-demo--patch"$(catpatch-file.yaml)"在这种情况下发生的是部署终止旧pod并创建新pod。您可以继续此步骤。例如,假设您要添加MySQL。使用以下命令创建另一个补丁文件:nanopatch-file-2.yaml在此文件中,粘贴以下内容:spec:template:spec:containers:-name:patch-demo-ctr-3image:mysql保存并关闭文件,像这样重新运行补丁命令:kubectlpatchdeploymentpatch-demo--patch"$(catpatch-file-2.yaml)"如果执行命令:kubectlgetdeploymentpatch-demo--outputyaml你会看到Nginx、Redis和MySQL都在吊舱中间(面板B)。图B.我们的Kubernetespod现在包含所有三个镜像您不能使用此补丁系统做的一件事是增加pod的副本数量。为此,您可以使用scale命令,如下所示:kubectlscale--replicas=4deploymentpatch-demo或者您可以将其缩小到0以删除pod,如下所示:kubectlscale--replicas=0deploymentpatch-demo这是用于运行EverythinginKubernetes服务已打补丁。尽管本教程非常基础,但您会发现使用patch命令几乎可以完成所有操作。原标题:HowtopatcharunningKubernetespod,作者:JackWallen