Kubernetes配置的验证方法
我一直在努力学习库伯内特斯。我有一个相对简单的集群,它有两个服务,一个入口,现在正在添加一个Redis数据库。我在中托管这个集群,但使用在本地运行集群,并在提交任何更改并将其推送到GKE中的prod环境之前尝试所有操作 在这个项目中,我注意到GKE在想要配置的方式和在Minikube中工作的方式上似乎有一些细微的差异。我以前在ingresses中看到过这一点,现在在持久卷中看到了这一点 例如,要在GKE中使用持久卷运行Redis,我可以使用:Kubernetes配置的验证方法,kubernetes,google-kubernetes-engine,minikube,Kubernetes,Google Kubernetes Engine,Minikube,我一直在努力学习库伯内特斯。我有一个相对简单的集群,它有两个服务,一个入口,现在正在添加一个Redis数据库。我在中托管这个集群,但使用在本地运行集群,并在提交任何更改并将其推送到GKE中的prod环境之前尝试所有操作 在这个项目中,我注意到GKE在想要配置的方式和在Minikube中工作的方式上似乎有一些细微的差异。我以前在ingresses中看到过这一点,现在在持久卷中看到了这一点 例如,要在GKE中使用持久卷运行Redis,我可以使用: apiVersion: apps/v1 kind:
apiVersion: apps/v1
kind: Deployment
metadata:
name: chatter-db-deployment
labels:
app: chatter
spec:
replicas: 1
selector:
matchLabels:
app: chatter-db-service
template:
metadata:
labels:
app: chatter-db-service
spec:
containers:
- name: master
image: redis
args: [
"--save", "3600", "1", "300", "100", "60", "10000",
"--appendonly", "yes",
]
ports:
- containerPort: 6379
volumeMounts:
- name: chatter-db-storage
mountPath: /data/
volumes:
- name: chatter-db-storage
gcePersistentDisk:
pdName: chatter-db-disk
fsType: ext4
末尾的gcePersistentDisk
部分指的是我使用gcloud compute disks create
创建的磁盘。但是,这在Minikube中根本不起作用,因为我不能用这种方式创建磁盘
相反,我需要使用:
volumes:
- name: chatter-db-storage
persistentVolumeClaim:
claimName: chatter-db-claim
我还需要为PeristentVolume
和peristentvolumeclaim
提供单独的配置
我可以很容易地在Minikube或GKE中找到工作,但我不确定获得一个同时适用于两者的配置的最佳方法是什么。理想情况下,我希望有一个部署此应用程序的k8s.yaml
文件,并且kubectl apply-f k8s.yaml
应适用于这两种环境,允许我使用Minikube进行本地测试,然后在满意时推送到GKE
我知道这两个环境之间存在差异,可能会在某种程度上泄漏到配置中,但在推送配置之前必须有一种有效的方法来验证配置?测试配置的最佳实践是什么?我的问题主要是:
dev
集群并对其进行测试,而不是使用Minikube,这是最好的方法吗是的,您已经发现Kubernetes配置的某些部分从一开始就不是完美的。但有新的解决方案 存储抽象 在较新的Kubernetes版本中,您的应用程序配置是一个部署,其中的卷引用了StorageClass的PersistentVolumeClaim 而PersistentVolume则更多地属于基础架构配置 有关如何为Minikube配置持久卷的信息,请参见。对于GKE,您可以使用GCEPersistentDisk配置一个持久卷,或者如果您想将应用部署到AWS,您可以为AWSElasticBlockStore使用一个持久卷 入口和服务抽象
服务
与类型LoadBalancer和NodePort结合使用入口
在云提供商和应用程序之间的工作方式不同。此外,像Mesh这样的服务实现引入了VirtualService
。该计划旨在根据我的理解改善这种情况。是的,您发现Kubernetes配置的某些部分从一开始就不完美。但有新的解决方案
存储抽象
在较新的Kubernetes版本中,您的应用程序配置是一个部署,其中的卷引用了StorageClass的PersistentVolumeClaim
而PersistentVolume则更多地属于基础架构配置
有关如何为Minikube配置持久卷的信息,请参见。对于GKE,您可以使用GCEPersistentDisk配置一个持久卷,或者如果您想将应用部署到AWS,您可以为AWSElasticBlockStore使用一个持久卷
入口和服务抽象
服务
与类型LoadBalancer和NodePort结合使用入口
在云提供商和应用程序之间的工作方式不同。此外,像Mesh这样的服务实现引入了VirtualService
。我们的计划是以我的理解来改善这种情况。感谢这里提供的更多细节,使问题更加清晰,尽管我不确定这里是否有解决方案。应用程序配置和基础架构配置之间有什么区别?您是否建议我可以为我的通用应用程序配置一个配置,并为Minikube/GKE特定部分单独配置一个配置?或者这仅仅是Kubernetes中已知的设计缺陷,打算在某一点上“修复”@DouglasParker所有平台(如Minikube和GKE)的应用程序配置都是相同的。但基础设施配置取决于平台,例如Minikube和GKE的配置不同,希望这只是配置的一小部分。@DouglasParker是的,每个平台上的服务和入口可能略有不同。。。如果您可以在每个平台上使用相同的入口控制器,这是最简单的。。。但有时您希望使用云提供商设置。。。。所以这取决于什么对你最重要。但我关于持久卷的链接解释了如何为Minikube做持久卷。。。因此,最好在您的平台上配置一个通用的StorageClass。。。但是使用一个依赖于平台的PersistentVolume。我想我已经开始理解这个概念了,但是我正在努力实现它。为了现在特别关注PVs,我会为Minikube使用一个StorageClass
,为GKE使用另一个StorageClass
,然后从我的PersistentVolume
中引用StorageClass
?如果是,我如何获得使用正确的StorageClass
的配置?我看到的唯一方法是使用相同的app.yaml
、minikube.yaml
和gke.yaml