kubernetes - 延迟 Kubernetes pod 创建以实现零停机
问题描述
我正在尝试在 Kubernetes 中实现部署的滚动更新。我关注了很多文章,说停机时间为零,但是当我连续运行 curl 时。在得到回复之前,我的一些请求失败了。下面是部署文件。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: myapp-deployment
spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 1
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: my-image
imagePullPolicy: Always
ports:
- containerPort: 80
protocol: TCP
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 5
successThreshold: 1
我做的下一件事是添加
MinReadySeconds:120
这可以解决这个问题,但它不是最佳解决方案,因为我们希望在下一个 Pod 开始服务请求并终止旧 Pod 时立即切换到它。我有两个问题——
- 当两个 pod(新的和旧的)都在运行并且都开始为流量提供服务时,是否会出现这种情况?那也不理想。因为我们希望一次只有一个 pod 为请求提供服务。
- Kubernetes 是否提供了其他开箱即用的解决方案来进行滚动部署?
解决方案
尝试这个。这应该适合你。尝试更新您的图像。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: myapp-deployment
spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 1
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: nginx
imagePullPolicy: Always
ports:
- containerPort: 80
protocol: TCP
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 5
successThreshold: 1
为了您更好地理解,请查看此链接
推荐阅读
- javascript - AngularJS $http 不断在我的一个网址中添加斜杠
- reactjs - 在 React JS 中以状态将值数组附加到当前数组
- angular - 在 IE (Angular 5) 中打印 Blob 或 ArrayBuffer
- twilio - 如何在 twilio php 中执行拨号队列?
- c++ - 在 C++ 中读取 UTF-16 文件
- git - 错误的 .git 文件夹
- marklogic - marklogic 中的数据分析/分析工具
- javascript - 如何用字符串中的等效特殊字符替换空格?
- docker - gitlab-runner exec docker - 注入 gpg 密钥
- android - API来检测Wear watch和Android手机之间的距离?