首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当你启动Kubectl apply命令时,后台会发生什么?

当你启动Kubectl apply命令时,后台会发生以下步骤:

  1. 首先,Kubectl会解析并验证你提供的配置文件。配置文件通常是一个YAML或JSON格式的文件,其中包含了要应用的资源对象的定义。
  2. Kubectl会将配置文件中的资源对象转换为API请求。每个资源对象都对应着Kubernetes中的一个API对象,例如Pod、Deployment、Service等。
  3. Kubectl会将API请求发送到Kubernetes API服务器。API服务器是Kubernetes集群的控制平面组件之一,负责接收和处理API请求。
  4. API服务器会验证API请求的合法性,并将其存储到etcd中。etcd是Kubernetes集群的分布式键值存储系统,用于持久化存储集群的状态和配置信息。
  5. Kubernetes控制器会监视etcd中的变化,并根据配置文件中定义的期望状态与实际状态之间的差异,自动调整集群的状态以达到期望状态。例如,如果配置文件中定义了一个Deployment对象,并且当前集群中没有该Deployment的副本,则控制器会创建相应的副本。
  6. Kubernetes调度器会根据集群的资源情况和调度策略,将Pod调度到合适的节点上运行。调度器会考虑节点的资源利用率、亲和性和反亲和性规则等因素。
  7. 节点上的Kubelet组件会接收到调度器的指令,并在节点上创建和管理Pod。Kubelet会根据Pod的定义,拉取镜像、创建容器,并监控容器的运行状态。
  8. 如果Pod中定义了Service对象,Kubernetes会为该Service创建一个虚拟IP地址,并将流量转发到Pod的容器。

总结起来,当你启动Kubectl apply命令时,Kubernetes会根据配置文件中定义的资源对象,通过API服务器将这些对象存储到etcd中,并自动调整集群的状态以达到期望状态。最终,Pod会在合适的节点上运行,并通过Service对象提供服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

5分钟安装Kubernetes+带你轻松安装istio服务网格指南

我也理解,心想这跟我有什么关系,我本地又搭建不起来K8s。我一直坚持让大家亲自动手敲命令解决问题,因为只有这样才能真正理解命令的作用。...请按照以下图示进行设置:在创建时,你无需填写任何内容,因为系统会自动为你生成IP地址。你只需要记住这个NAT网络的名称即可。好的,现在你可以开始直接导入基于k8s的基础镜像。...当你完成操作之后,请务必进行虚拟机网络的设置。好的,现在让我们来启动你的虚拟机吧!k8s的大门已经为你打开了。然而,在建立istio服务网格的过程中,你可能会遇到各种报错。...然而,我知道当安装istio时,它会在k8s中启动一个pod。于是,我决定直接查看后台启动日志,这样或许能找到问题的所在。因此,现在我们可以开始学习一些关于k8s命令的知识了。...当你往你的虚拟机中传输完之后,可以直接使用命令启动kubectl apply -f kube-flannel.yaml然而,我执行完毕后,令人惊讶的是,Istio仍然无法正常工作。

54120

Argo CD 实践教程 01

kubectl客户端应用程序接收并解析它,然后能够显示适合人类阅读者的输出。为了了解具体发生了什么,我们可以使用kubectl(–v)的全局标志,我们为其设置的值越高,我们获得的详细信息就越多。...pods——并且需要计算操作(如果已经运行了三个pods,你可能会增加或减少pods,或者什么都不做)。...命令式命令很清楚它们的作用,当你将它们用于命名空间这样的小对象时,它是有意义的。...apply -f declarative-files/namespace.yaml 控制台输出应该如下所示: namespace/declarative-files configured ** **在上述两个案例中发生了什么...我们看到消息说创建了一个名称空间,但是API调用是同时在服务器上完成的,因此当部署启动其创建流时,名称空间不可用。

34220
  • Knative 入门系列5:Knative 安装

    为什么我们需要安装 Istio 迄今为止,我们还没讨论过 Istio,但是它作为安装的一部分出现了。Istio 是什么?Knative 为什么需要它? Istio 是一个服务网络。...第二个命令在 default 命名空间中启用 Istio 自动注入。这可以确保 Istio 在 default 命名空间中为每个 Pod 创建时自动注入边车(sidecar)。...---- Serving 和 Build 安装完成并运行后,按照类似的步骤启动 Eventing 模块: kubectl apply --filename https://storage.googleapis.com...安装方法选择 本章中的步骤展示了如何使用本地的 kubectl apply 命令分别安装 Knative 组件。然而,一些构建在 Knative 之上的无服务器框架也可能包含安装系统的快捷方式。...如果你的 Kubernetes 实例不支持 load balancer(比如:Minikube),命令会略有不同因为 EXTERNAL-IP 会显示为。

    3.9K31

    2024程序员容器化上云之旅-第7集大结局-Ubuntu-WSL2-Windows11版:获得重生

    故事梗概Java程序员马意浓在互联网公司维护老旧电商后台系统。渴望学习新技术的他在工作中无缘Docker和K8s。...「当你遇到问题无法解决时,尝试对着一只橡皮鸭子逐步讲解。通常在讲解问题的过程中,你会得到解决方案。」如图1。8.5 在k8s集群中的软件架构马意浓趁着现在思路清晰,赶紧记录了一些重要的笔记。...在命令中使用$NAMESPACE的好处,是将来清理现场时,能方便地用一行命令,来删除之前在k8s上创建的所有与购物清单web应用相关的资源。...$NAMESPACE# 验证pod是否正常启动kubectl get pods -o wide -n $NAMESPACE运行完这些命令后,马意浓又在浏览器地址栏输入localhost,按下回车。...kubectl命令,都带有-n $NAMESPACE参数,所以在清理现场时,马意浓就可以用一条命令删除所有相关资源。

    28853

    Liveness和Readiness两种Health Check手段在Kubernetes中的使用

    1 我们可以看到,命令正常执行,返回值为1。默认情况下,Linux命令执行之后返回值为0说明命令执行成功。因为执行成功后的返回值不为0,Kubernetes默认为容器发生故障,不断重启。...然而,也有不少情况是服务实际发生了故障,但是进程未退出。这种情况下,重启往往是简单而有效的手段。例如:访问web服务时显示500服务器内部错误,很多原因会造成这样的故障,重启可能就能迅速修复故障。...initialDelaySeconds:10指定容器启动10s之后执行探测。一般该值要大于容器的启动时间。...当第二列为0/1时,则说明容器不可用。...此类事件若发生在生产环境中,后果会非常严重。

    1.3K50

    优雅退出和零停机部署

    YAML定义提交到集群: kubectl apply -f pod.yaml 一旦您输入该命令,kubectl会将Pod定义提交给Kubernetes API。...当您使用kubectl apply -f命令提交一个Pod的时候,YAML文件会被发送到Kubernetes API。 API会将Pod保存在数据库(etcd)中。...kubectl apply 将 Service 提交到集群时,Kubernetes 会找到与选择器(name: app)相同标签的所有 Pod,并收集它们的 IP 地址 —— 但仅当它们通过了就绪探针...当您使用kubectl apply -f ingress.yaml命令时,Ingress控制器会从控制平面检索文件。...当您终止一个Pod时,「终端点的删除和向kubelet发出的信号同时发生」。 如果您使用kubectl delete pod命令删除一个Pod,该命令首先会到达Kubernetes API。

    38820

    【重识云原生】第六章容器6.4.3节——ReplicationController

    但请记住,当你更改pod的标签时,ReplicationController发现一个pod丢失了,并启动一个新的pod替换它。         让我们通过你的pod试试看。...下图说明了当你更改pod的标签,使得它们不再与ReplicationController的pod选择器匹配时,发生的事情。可以看到三个pod和ReplicationController。...如果 kubectl scale 命令看起来好像是你在告诉Kubernetes要做什么,现在就更清晰了,你是在声明对ReplicationController的目标状态的更改,而不是告诉Kubernetes...2.8 删除一个ReplicationController         当你通过 kubectl delete 删除ReplicationController时,pod也会被删除。...当你最初拥有一组由ReplicationController管理的pod,然后决定用ReplicaSet( 你接下来会知道)替换ReplicationController时,这就很有用。

    98320

    【重识云原生】第六章容器基础6.4.10.2节——StatefulSet常规操作实操

    kubectl apply -f web.yamlservice/nginx created statefulset.apps/web created        上面的命令创建了两个 Pod,每个都运行了一个...因为它们是稳定的,并且当你的 Pod 的状态变为 Running 和 Ready 时,你的应用就能够发现它们的地址。...请注意,虽然在顺序后继者变成 Running 和 Ready 之前 StatefulSet 控制器不会更新下一个 Pod,但它仍然会重建任何在更新过程中发生故障的 Pod,使用的是它们当前的版本。        ...当你选择这个更新策略并修改 StatefulSet 的 .spec.template 字段时,StatefulSet 控制器将不会自动更新 Pod。...当你重建这个 StatefulSet 并且重新启动了 web-0 时,它原本的 PersistentVolume 卷会被重新挂载。

    88640

    k8s实践(5)k8s的命名空间Namespace

    如果你通过命令kubectl apply 来创建pod,它会在当前的命名空间中创建pod。这个命名空间就是defaut,除非你更改过。...因此,当你在其他namespace创建了资源,那么每次使用kubectl命令都要带上namespace将会很痛苦。幸好,神器 kubens 能够解决这个问题。...当你运行kubens命令,它会高亮当前的namespace: 要更换到test空间,运行:kubens test 现在你会看到: 这是,你所有的命令会在这个namespace下执行: $ kubectl...当集群中总的容量小于各个 namespace 资源配额的总和时,可能会发生资源争夺,此时 Kubernetes 将按照先到先得的方式分配资源。...,否则将被系统拒绝;当namespace总的limit小于其中Pod、容器的limit之和时,将发生资源争夺,Pod或者容器将不能创建,但不影响已经创建的Pod或容器。

    5.2K41

    使用服务网格来实现Kubernetes可观察性

    黄金指标是什么和为什么很重要? 如果你已经知道黄金指标是什么,请跳过到下一节! 黄金指标(或“黄金信号”)是你需要了解应用程序是否按预期启动和运行的首要指标。...curl -sL https://run.linkerd.io/emojivoto.yml \ | linkerd inject - \ | kubectl apply -f - 嗯,就是这样。...当你通过Linkerd的仪表板和CLI查看黄金指标时,Linkerd会从这个内部的Prometheus实例中获取它们,在不修改应用程序代码的情况下为你提供所有这些指标。 Linkerd还能做什么?...最后,应用程序日志当然是开发人员在怀疑某个特定进程不正常时首先要做的事情之一。当运行一个服务网格时,有时候查看网格内部发生了什么是很有用的。...虽然Linkerd不能为你提供应用程序日志,但Linkerd logs命令[15]提供了一种简单的方法,至少可以查看Linkerd内部发生了什么。

    36810

    Kubernetes入门

    kubectl 还有如下四个常用命令,在我们排查问题时可以提供帮助: kubectl get - 显示资源列表 # kubectl get 资源类型 #获取类型为Deployment的资源列表 kubectl...执行命令 kubectl apply -f nginx-deployment.yaml 查看结果 watch kubectl get pods -o wide 5.执行滚动更新 更新应用程序 户期望应用程序始终可用...执行命令 kubectl apply -f nginx-deployment.yaml 查看过程及结果 执行命令,可观察到 pod 逐个被替换的过程。...如果Pod是短暂的,那么重启时IP地址可能会改变,那么怎么才能从前端容器正确可靠地指向后台容器呢?这时可以使用Service,下文会详细介绍。 Label 正如图所示,一些Pod有Label( ?...如果在运行中将副本总数改为5,Replication Controller会立刻启动2个新Pod,保证总数为5。还可以按照这样的方式缩小Pod,这个特性在执行滚动 升级 时很有用。

    1.1K20

    Kubernetes Pod详解

    QoS主要用来,当宿主机资源发生紧张时,Kubelet对Pod进行Eviction(资源回收)时需要使用。 什么情况会触发Eviction?...使用探针检测容器有四种不同的方式: exec:容器内执行指定命令,如果命令退出时返回码为0则认为诊断成功 grpc:使用grpc进行远程调用,如果响应的状态为SERVING,则认为检查成功 httpGet...对存活探测器来说,超过该次数会重启容器;对于就绪探测器来说,超过该次数Pod会被打上未就绪的标签 $ kubectl apply -f exec-liveness.yaml $ kubectl get...apply -f status-change-watch.yaml $ kubectl describe pod status-change-watch 我们通过上述命令,不断地观察Pod的状态,会发现...$ kubectl apply -f node-seletor.yaml $ kubectl describe pod node-seletor 可以看到,由于我们现在没有节点有node_env:

    79520

    使用 Argo Rollouts 实现应用渐进式发布

    安装 直接使用下面的命令安装 Argo Rollouts: $ kubectl create namespace argo-rollouts $ kubectl apply -n argo-rollouts...apply ,为了方便,rollouts 插件还单独提供了一个 set image 的命令,比如这里我们运行以下所示命令,用 yellow 版本的容器更新上面的 Rollout: $ kubectl...要启动这个 Dashboard,需要在包含 Rollouts 资源对象的命名空间中运行 kubectl argo rollouts dashboard 命令,然后访问localhost:3100 即可。...分析 后台分析 金丝雀正在执行其部署步骤时,分析可以在后台运行。 以下示例是每 10 分钟逐渐将 Canary 权重增加 20%,直到达到 100%。...此外当同时指定了成功和失败的条件,但测量值没有满足任何一个条件时,也可能发生不确定的分析运行。

    1.3K30
    领券