kubernetes - kubectl run vs create and apply

问题描述 投票:13回答:1

我刚开始使用kubermetes并使用kops在AWS上设置集群。在我阅读(和尝试)的许多例子中,会有如下命令:

kubectl run my-app --image=mycompany/myapp:latest --replicas=1 --port=8080

kubectl expose deployment my=app --port=80 --type=LoadBalancer

这似乎在幕后做了几件事,我可以查看使用kubectl edit deployment创建的清单文件,等等。但是,我看到很多例子,人们手动创建清单文件,并使用kubectl create -fkubectl apply -f等命令

假设两种方法都实现了相同的目标,我是否正确,但通过自己创建清单文件,您可以获得更好的控制权?

那么我是否必须自己创建Service,ReplicationController和Pod规范?

最后,如果您自己创建清单文件,那么人们通常如何构建项目以存储这些文件?它们只是在他们正在部署的项目旁边的目录中吗?

kubernetes
1个回答
16
投票

基本问题是如何将所有K8s对象应用到k8s群集中。有几种方法可以完成这项工作。

  • 使用生成器(运行,公开)
  • 使用势在必行的方式(创建)
  • 使用声明方式(Apply)

所有上述方式都有不同的目的和简单性。例如,如果要快速检查容器是否按预期工作,则可以使用生成器。

如果你想版本控制k8s对象,那么最好使用声明方式,这有助于我们确定k8s对象中数据的准确性。

部署,ReplicaSet和Pod是解决不同问题的不同层。所有这些概念都为k8s提供了灵活性。

  • Pods:它确保相关容器在一起并提供效率。
  • ReplicaSet:它确保k8s群集具有所需的pod副本
  • 部署:它确保您可以拥有不同版本的Pod,并提供回滚到以前版本的功能

最后,它取决于用例如何使用这些概念或方法。这不是关于哪个是好的,哪个是坏的。

© www.soinside.com 2019 - 2024. All rights reserved.