如何更新正在运行的Kubernetes吊舱中的卷?

如何更新正在运行的Kubernetes吊舱中的卷?,kubernetes,minikube,coredns,Kubernetes,Minikube,Coredns,我有一个Kubernetes吊舱,它已经在Minikube(v0.23.0)节点上运行 一些上下文:它是通过启用插件创建的coredns pod。我正在浏览这篇博文,试图为我的Kubernetes群集设置自定义DNS条目: 我能够毫无问题地替换配置映射;我修改了博客文章中的模板规范以满足我的需要,并运行: kubectl create -f configmap.yml -o yaml --dry-run | kubectl replace -f - 这似乎奏效了;我用kubectl检查了配置图

我有一个Kubernetes吊舱,它已经在Minikube(v0.23.0)节点上运行

一些上下文:它是通过启用插件创建的coredns pod。我正在浏览这篇博文,试图为我的Kubernetes群集设置自定义DNS条目:

我能够毫无问题地替换配置映射;我修改了博客文章中的模板规范以满足我的需要,并运行:

kubectl create -f configmap.yml -o yaml --dry-run | kubectl replace -f -
这似乎奏效了;我用kubectl检查了配置图,一切看起来都很好

但是,我不确定如何更新卷。我试着把这样的东西放进一个文件:

apiVersion: v1
kind: Pod
metadata:
  labels:
    k8s-app: coredns
  namespace: kube-system
spec:
  containers:
  - name: coredns
  volumes:
  - configMap:
      items:
      - key: Corefile
        path: Corefile
      - key: cluster.db
        path: cluster.db
      name: coredns
    name: config-volume
然后,我尝试将其应用于:

kubectl create -f k8s_config/coredns/volumes.yml -o yaml --dry-run | kubectl apply -f -
但这给出了以下错误信息:

error: error when retrieving current configuration of:
&{0xc4218be840 0xc420213500 kube-system  STDIN 0xc421a9e5e0 0xc421a9e5e0  false}
from server for: "STDIN": resource name may not be empty
我还尝试将coredns pod的内容转储到一个文件中,相应地更改卷部分,然后替换pod,但收到以下消息:

The Pod "coredns-6b4fd7784-xhb5s" is invalid: spec: Forbidden: pod updates may not change fields other than `spec.containers[*].image`, `spec.initContainers[*].image`, `spec.activeDeadlineSeconds` or `spec.tolerations` (only additions to existing tolerations)
除了删除pod并将其恢复,我应该如何更新pod中的卷?有可能吗

我想另一个首要问题是:更新/配置
coredns
pod/插件的正确方法是什么?我好像到处都找不到导游。在博客文章中,它说:

要创建新区域,我们需要修改已有的
coredns.yaml
已用于在pod中创建其他文件


然而,这一定是因为coredns是在Kubernetes中手动设置的,现在它作为一个插件“只工作”,我不知道如何配置它

查看Pod名称
coredns-6b4fd7784-xhb5s
,您的coredns Pod看起来实际上是由一个管理员管理的

不要直接修改部署控制器管理的POD。要编辑部署管理的POD,请编辑部署对象本身(
kubectl-n kube system edit deployment coredns
)并修改
spec.template
属性。编辑部署后,控制器将删除旧pod,并使用更新的规范创建一个新pod

如果您只是更新了一个ConfigMap对象并希望CoreDNS Pod接收新内容,那么只需删除旧Pod就足够了;部署控制器将使用最新版本的ConfigMap创建一个新的部署控制器

如果您担心通过删除CORDENS POD而导致潜在的服务中断,请考虑将部署的<代码>规格副本> /COD>值增加到高于1的值。