kubernetes 如何在minikube映像加载后将k8s pod更新为较新版本的映像

fhity93d  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(2)|浏览(202)

我正在尝试使用minikube创建一个开发环境。
我正在使用minikube image load将本地映像上传到集群。
下面是一个部署示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sso
spec:
  selector:
    matchLabels:
      app: mm
  template:
    metadata:
      labels:
        app: mm
        name: sso
    spec:
      containers:
        - name: sso
          image: sso-service
          imagePullPolicy: Never
          resources:
            limits:
              memory: "128Mi"
              cpu: "500m"
          ports:
            - containerPort: 3000
      imagePullSecrets:
        - name: pull-secret

我第一次运行minikube image load "sso-service"时,部署会重新启动,但在那之后,加载新映像不会导致使用新映像进行部署。
我也试过运行kubectl rollout restart,没有帮助。
是否有任何方法可以强制部署使用新映像执行部署?

wwwo4jvm

wwwo4jvm1#

我自己设法解决了这个问题。我做了一个脚本,首先生成一个随机数,并将其用作图像的标签,然后使用kubectl set image来更新图像。

$tag = $(Get-Random)
echo "building image"
docker build --build-arg NPM_TOKEN=$(cat .token) -t "sso-service:$tag" .
echo "loading image"
minikube image load "sso-service:$tag" --daemon=true
kubectl set image deployment/sso sso="sso-service:$tag"
3zwjbxry

3zwjbxry2#

在部署信息清单中,将imagePullPolicyNever变更为Always
简而言之。
Never-永远不会从注册表中提取容器映像。
Always-每次启动(重新启动)容器时都会提取映像。
要获取更多信息,请运行以下命令:

kubectl explain pod.spec.containers.imagePullPolicy

相关问题