有什么方法可以使用 kubernetes 进行 AWS 部署,其中我的应用程序有可变且可扩展数量的 pod,但虚拟机上的环境对于单个主机来说是不同的?
基本上,我希望我的一个 Pod 执行一项其他 Pod 不会一直执行的任务。我计划使用环境变量来控制它。
您可以进行多个部署,但是如果您需要uniqueness
在豆荚之间,你应该考虑statefulsets
过度部署。然而,在两者之间做出决定statefulset
and deployment
is 主要取决于应用程序的类型,这是一个重大决定。所以,使用statefulset
可能不适合作为部署的 100% 替代。
In statefulsets
每个 Pod 通过其主机名获得其唯一但非随机的身份。
例如,您可以创建一个mysql
有状态集使用以下内容:
apiVersion: apps/v1
kind: StatefulSet
metadata:
creationTimestamp: null
labels:
app: foo
name: foo
spec:
serviceName: mysql
replicas: 3
selector:
matchLabels:
app: foo
template:
metadata:
creationTimestamp: null
labels:
app: foo
spec:
containers:
- image: mysql
name: mysql
containers:
- env:
- name: MYSQL_ROOT_PASSWORD
value: root
image: mysql
name: mysql
这将创建 pod 的三个副本:
k get pod -l app=foo
NAME READY STATUS RESTARTS AGE
foo-0 1/1 Running 0 5m17s
foo-1 1/1 Running 0 5m14s
foo-2 1/1 Running 0 5m10s
现在您可以获取 pod 的主机名,第一个 pod 将始终带有后缀0
和第二个1
等等。
exec -it foo-0 -- hostname
foo-0
k exec -it foo-1 -- hostname
foo-1
k exec -it foo-2 -- hostname
foo-2
您可以使用hostname
因为选择器决定对哪个 pod 需要执行什么操作。Here https://stackoverflow.com/a/41733207/6309601这是一本很好的读物。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)