2

我在我的 pod 上运行了 reactjs 应用程序,并且我已经将源代码从主机安装到了 pod。它工作正常,但是当我在主机中更改我的代码时,pod 源代码也会更改,但是当我运行该站点时,它并没有影响应用程序。这是我的清单,我做错了什么?

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: webapp
spec:
  replicas: 1
  minReadySeconds: 15
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  template:
    metadata:
      labels:
        app: webapp
        tier: frontend
        phase: development
    spec:
      containers:
      - name: webapp
        image: xxxxxx            
        command:
        - npm
        args:
        - run
        - dev
        env:
        - name: environment
          value:  dev
        - name: AUTHOR
          value: webapp
        ports:
        - containerPort: 3000
        volumeMounts:
        - mountPath: /code
          name: code
      imagePullSecrets:
        - name: regcred
      volumes:
        - name: code
          hostPath:
            path: /hosthome/xxxx/development/react-app/src

而且我知道事实上 npm 没有监视我的更改,我如何在 pod 中解决它?

4

2 回答 2

2

基本上,每次更改代码时都需要重新加载应用程序,并且当您更改/code目录下的代码时,Pod 不会重新加载或重新启动。由于您使用的是部署,因此您必须重新创建您的 pod,您可以:

kubectl delete <pod-where-your-app-is-running>

或者

export PATCH='{"spec":{"template":{"metadata":{"annotations":{"timestamp":"'$(date)'"}}}}}'
kubectl patch deployment webapp -p "$PATCH"

之后您的 pod 应该会重新启动。

于 2018-10-19T06:52:26.767 回答
0

Rico 提到的是正确的,您需要对每次更改进行修补或重建,但是您可以通过在没有 vm-driver 的情况下运行 minikube 来避免这种情况,这是在没有 vm-driver 的情况下运行 minikube 的命令仅适用于 Linux,通过这样做您可以将主机路径挂载到 pod。希望这会有所帮助

sudo minikube start --bootstrapper=localkube --vm-driver=none --apiserver-ips 127.0.0.1 --apiserver-name localhost -v=1
于 2018-10-23T06:39:29.140 回答