apply我是 kubernete 的新手,对命令有点困惑rollout。如果我更新 kubernete 配置文件,我应该使用kubectl apply -f还是kubectl rollout?
如果我更新 kubernete 配置并运行kubectl apply -f,它将终止正在运行的 pod 并创建一个新的 pod。
而且rollout还有restart用于重新启动 pod 的命令。那么我应该什么时候使用rollout restart?
Kri*_*sia 10
我能想到的一个主要区别是kubectl apply可以用于所有 Kubernetes 对象(Pod、Deployment、ConfigMaps、Secrets等),其中kubectl rollout专门适用于处理某些计算的对象Deployments,例如Statefulsets、 等。
此外,kubectl rollout restart无需对字段进行任何更改即可重新启动 Pod,spec这是kubectl apply. 如果我们kubectl apply在字段中没有更改的情况下运行spec,则 Pod 将不会更新,因为没有要更新的更改。
考虑这样的场景:某些配置(例如,外部证书)安装到 Pod ConfigMap,并且任何更改都ConfigMap不会导致 Pod 自动更新。kubectl rollout restart在这种情况下创建新的 pod 非常有用,然后这些 pod 可以从ConfigMap.
另外,文档中的一个重要说明:
注意:当且仅当 Deployment 的 Pod 模板(即 .spec.template)发生更改(例如,模板的标签或容器映像更新)时,才会触发 Deployment 的推出。其他更新(例如扩展部署)不会触发部署。
用于kubectl apply -f应用配置文件 kubernetes(您部署所需应用程序的位置)。
并kubectl rollout用于检查上面部署的应用程序
例子
假设您的部署配置文件如下所示,并且您将其保存在 nginx.yaml 文件中。现在您想要从下面的 yaml 文件部署 nginx 应用程序。所以你应该使用kubectl apply -f nginx.yaml,现在你想检查你的应用程序是否部署成功kubectl rollout status 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
Run Code Online (Sandbox Code Playgroud)
如果您在本地更新了 yaml 并且想要将其替换为现有的,则使用kubectl replace -f nginx.yaml
| 归档时间: |
|
| 查看次数: |
2340 次 |
| 最近记录: |