docker - 使用 Kubernetes 部署/更新容器的最佳实践?
问题描述
我试图了解如何使用 Kubernetes 部署容器。我是这个主题的新手,所以此刻我正在虚拟机中测试所有这些想法。
我正在使用 Git、Jenkins、Docker、Docker Hub 和 Kubernetes。
另外,我有一个主节点,只有一个从节点。
我创建了一个 YAML 部署文件来启动 pod 并创建一个新容器。
kubectl apply -f deployment.yaml
然后我公开部署。
kubectl expose deployment my-app --type=LoadBalancer --name=my-app
用于部署的 YAML 文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
labels:
app: app
spec:
selector:
matchLabels:
app: app
role: master
tier: backend
replicas: 1
template:
metadata:
labels:
app: app
role: master
tier: backend
spec:
containers:
- name: appcontainer
image: repository:1.0
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 8085
imagePullSecrets:
- name: regcred
现在我已经完成了所有工作,例如,我对映像进行了新更新,并且我需要在部署完成时更新这个新映像,例如,从 1.0 到 1.1。我需要知道执行此操作的正确方法。
因为我认为我做错了,就像我试图破坏使用新图像创建的容器上的图像,我不知道是否正确的方法是使用新的 YAML 文件进行部署,以及 Kubernetes 是否构建了一个新容器使用该图像并因此终止旧部署,但是如果这是正确的做法,我不知道该怎么做。
解决方案
使用新映像更新部署的最简单方法是运行:
kubectl set image deployment/my-app appcontainer=repository:1.1 --record
这样,它将首先使用更新版本的映像创建一个新的 pod,一旦成功部署,它将根据您在replicas
字段中指定的副本数量终止旧的 pod 或 pod。
您可以通过运行检查更新状态
kubectl rollout status deployment.v1.apps/my-app
推荐阅读
- python - selenium python 无法获取 tbody 元素的文本
- javascript - TypeError: headers[key].trim 不是函数
- typescript - 如何使用 RootState 修复切片的循环依赖关系?
- python - json.decoder.JSONDecodeError:额外数据:第 1 行第 5 列(字符 4)并引发 JSONDecodeError(“额外数据”,s,end)
- java - VIPER 架构中的编辑文本验证在哪里进行(Android)
- c# - snmp 陷阱监听器 没有消息接收
- javascript - Javascript插入html代码而不关闭标签
- javascript - 如何在Angular中重用getter方法
- css - 如何为出现两次的嵌套属性编写 CSS 选择器?
- python - 如何在 Folium 标记中插入图像和文本