首页 > 解决方案 > 使用 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 是否构建了一个新容器使用该图像并因此终止旧部署,但是如果这是正确的做法,我不知道该怎么做。

标签: dockerkubernetes

解决方案


使用新映像更新部署的最简单方法是运行:

kubectl set image deployment/my-app appcontainer=repository:1.1 --record

这样,它将首先使用更新版本的映像创建一个新的 pod,一旦成功部署,它将根据您在replicas字段中指定的副本数量终止旧的 pod 或 pod。

您可以通过运行检查更新状态

kubectl rollout status deployment.v1.apps/my-app

推荐阅读