Kubernetes:代码更改没有出现,有没有办法同步?

Vol*_*il3 1 docker kubernetes devops minikube

Dockerfile我提到的音量如下:

COPY src/ /var/www/html/但不知何故,我的代码更改似乎不像以前只使用Docker.除非我删除Pods,否则它不会出现.如何同步?

我正在使用minikube.

webserver.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: webserver
  labels:
    app: apache
spec:
  replicas: 3
  selector:
    matchLabels:
      app: apache
  template:
    metadata:
      labels:
        app: apache
    spec:
      containers:
      - name: php-apache
        image: learningk8s_website
        imagePullPolicy: Never
        ports:
        - containerPort: 80
Run Code Online (Sandbox Code Playgroud)

Dav*_*aze 5

当您的容器规格说:

image: learningk8s_website
imagePullPolicy: Never
Run Code Online (Sandbox Code Playgroud)

第二次kubectl apply,Kubernetes确定它与您已经拥有的部署规范完全相同,并且什么都不做.即使它确实生成了新的Pod,服务器很可能会注意到它已经有了一个图像learningk8s_website:latest并且不会拉出新的图像; 事实上,你明确告诉Kubernetes不要.

这里通常的做法是在图像名称中包含一些唯一标识符,例如日期戳或提交哈希.

IMAGE=$REGISTRY/name/learningk8s_website:$(git rev-parse --short HEAD)
docker build -t "$IMAGE" .
docker push "$IMAGE"
Run Code Online (Sandbox Code Playgroud)

然后,您需要在部署规范中进行相应的更改kubectl apply.这将导致Kubernetes注意到pod规范有一些变化,使用新映像创建新pod,并销毁旧pod(按此顺序).您可能会发现像Helm这样的模板引擎可以更容易地将此​​值注入YAML.