Kubernetes 何时使用“应用”何时使用“卷展栏”?

Kubernetes 何时使用“应用”何时使用“卷展栏”?,kubernetes,Kubernetes,我是库伯内特的新手,对apply和rollout命令有点困惑。如果我更新kubernete配置文件,我应该使用kubectl apply-f还是kubectl卷展栏 如果我更新kubernete配置并运行kubectl apply-f,它将终止正在运行的pod并创建一个新pod 但是卷展栏也有重启命令,用于重启pod。那么,我应该在什么时候使用卷展栏重新启动?用于应用配置文件kubernetes的kubectl apply-f(您部署所需应用程序的位置) 而kubectl卷展栏用于检查上述部署的

我是库伯内特的新手,对
apply
rollout
命令有点困惑。如果我更新kubernete配置文件,我应该使用
kubectl apply-f
还是
kubectl卷展栏

如果我更新kubernete配置并运行
kubectl apply-f
,它将终止正在运行的pod并创建一个新pod


但是
卷展栏
也有
重启
命令,用于重启pod。那么,我应该在什么时候使用
卷展栏重新启动

用于应用配置文件kubernetes的
kubectl apply-f
(您部署所需应用程序的位置)

kubectl卷展栏
用于检查上述部署的应用程序

范例

假设您的部署配置文件如下所示,并将其保存在nginx.yaml文件中。现在,您需要从下面的yaml文件部署nginx应用程序。因此,您应该使用
kubectl apply-f nginx.yaml
,现在您需要检查您的应用程序部署是否成功,是否使用
kubectl卷展状态nginx

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

如果您在本地更新了yaml,并且希望将其替换为现有的,那么请使用
kubectl replace-f nginx.yaml

用于应用配置文件kubernetes的
kubectl apply-f

kubectl卷展栏
用于检查上述部署的应用程序

范例

假设您的部署配置文件如下所示,并将其保存在nginx.yaml文件中。现在,您需要从下面的yaml文件部署nginx应用程序。因此,您应该使用
kubectl apply-f nginx.yaml
,现在您需要检查您的应用程序部署是否成功,是否使用
kubectl卷展状态nginx

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

如果您在本地更新了yaml,并且希望将其替换为现有的,那么使用
kubectl replace-f nginx.yaml

我能想到的一个主要区别是
kubectl apply
可以用于所有Kubernetes对象(
Pod
Deployment
ConfigMaps
Secrets
,等等)其中,
kubectl卷展栏
特别适用于处理某些计算的对象,如
部署
状态集
,等等

此外,
kubectl卷展栏restart
有助于重新启动POD,而无需对
spec
字段进行任何更改,这是
kubectl apply
无法实现的。如果我们运行
kubectl apply
,而
spec
字段中没有任何更改,POD将不会得到更新,因为没有要更新的更改

考虑这样一种情况,即某些配置(例如,外部证书)作为
ConfigMap
装载到POD上,并且
ConfigMap
中的任何更改都不会导致POD自动更新
kubectl卷展栏重新启动
在这种情况下非常有用,可以创建新的POD,然后从
ConfigMap
读取更新的配置

此外,还需要注意以下事项:

注意:当且仅当 部署的Pod模板(即,.spec.template)已更改,例如 更新模板的标签或容器图像时的示例。 其他更新(如扩展部署)不会触发 卷展


我能想到的一个主要区别是
kubectl apply
可以用于所有Kubernetes对象(
Pod
Deployment
ConfigMaps
Secrets
,等等),其中
kubectl卷展栏
特别适用于处理一些计算的对象,如
部署
状态集

此外,
kubectl卷展栏restart
有助于重新启动POD,而无需对
spec
字段进行任何更改,这是
kubectl apply
无法实现的。如果我们运行
kubectl apply
,而
spec
字段中没有任何更改,POD将不会得到更新,因为没有要更新的更改

考虑这样一种情况,即某些配置(例如,外部证书)作为
ConfigMap
装载到POD上,并且
ConfigMap
中的任何更改都不会导致POD自动更新
kubectl卷展栏重新启动
在这种情况下非常有用,可以创建新的POD,然后从
ConfigMap
读取更新的配置

此外,还需要注意以下事项:

注意:当且仅当 部署的Pod模板(即,.spec.template)已更改,例如 更新模板的标签或容器图像时的示例。 其他更新(如扩展部署)不会触发 卷展