kubernetes - kubernetes 如何为副本编写部署 yaml
问题描述
我有一个 pod yaml 文件(见下文)。它具有我想要的所有属性,除了副本属性。所以我必须编写部署 yaml。
apiVersion: v1
kind: Pod
metadata:
name: app-ykt
labels:
app: app-ykt
purpose: ykt_production
spec:
containers:
- name: app-ykt
image: app
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
- name: volume-app-ykt
mountPath: /usr/application
env:
- name: spring.config.location
value: application.properties
volumes:
- name: volume-app-ykt
hostPath:
path: /opt/docker/datalook-pre-core
type: Directory
在编写部署文件时,我不得不提到我不想要的图像和其他属性。更重要的是,它创建了另一个 pod,并且缺少了一些我必须具备的属性,例如 volume。我的目标就是这个副本,这样我就可以获得 pod 的高可用性。有什么解决办法吗?
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-ykt
labels:
app: app-ykt
spec:
replicas: 1
selector:
matchLabels:
app: app-ykt
template:
metadata:
labels:
app: app-ykt
spec:
containers:
- name: app-ykt
image: app
ports:
- containerPort: 80
解决方案
首先,我认为 hostPath 卷不是 HA 解决方案,因此您应该关注跨 kubernetes 集群共享一个卷作为 ReadWriteMany Persistent Volume。然后你还需要在复制的 pod 之间使用内部负载均衡器,比如 Services[0]。
我希望它对你有帮助。
[0][ https://kubernetes.io/docs/concepts/services-networking/service/]
推荐阅读
- python - 在 python 中解析 AndroidManifest.xml 时出现 ParseError
- node.js - Node js中的同步函数
- c# - Marshall struct 通过 sendmessage 将其传递给 delphi 记录
- c++ - 是什么导致我的 2D Perlin 噪声中出现这些伪影?
- java - 对 Spark scala 代码库所做的更改不会在运行时反映出来
- .htaccess - 使用 .htaccess 强制将文本附加到文件名的末尾
- postgresql - 在 BEFORE UPDATE 触发器中返回单个 SELECT 行
- android - 为注册创建了一个动态表单并将所有数据保存到 firebase。如何将所有视图检索回给用户
- angular - 在模板中访问 Observable 而无需每次都使用 Safe Navigation Operator 和 Async Pipe
- angularjs - AngularJS Route:为同一路由设置多个参数值