在Dockerfile我提到的volume如下:
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
当您的容器规格说:
image: learningk8s_website
imagePullPolicy: Never
第二次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"
然后,您需要在部署规范中进行相应的更改kubectl apply。这将导致Kubernetes注意到pod规范有一些变化,使用新映像创建新pod,并销毁旧pod(按此顺序)。您可能会发现像Helm这样的模板引擎可以更容易地将此值注入YAML。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。