我刚开始使用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 -f
或kubectl apply -f
等命令
假设两种方法都实现了相同的目标,我是否正确,但通过自己创建清单文件,您可以获得更好的控制权?
那么我是否必须自己创建Service,ReplicationController和Pod规范?
最后,如果您自己创建清单文件,那么人们通常如何构建项目以存储这些文件?它们只是在他们正在部署的项目旁边的目录中吗?
基本问题是如何将所有K8s对象应用到k8s群集中。有几种方法可以完成这项工作。
所有上述方式都有不同的目的和简单性。例如,如果要快速检查容器是否按预期工作,则可以使用生成器。
如果你想版本控制k8s对象,那么最好使用声明方式,这有助于我们确定k8s对象中数据的准确性。
部署,ReplicaSet和Pod是解决不同问题的不同层。所有这些概念都为k8s提供了灵活性。
最后,它取决于用例如何使用这些概念或方法。这不是关于哪个是好的,哪个是坏的。