这个报错在国内的文章搜不到,所以我这里就写一下。

详细的报错内容类似如下:

Error from server (Forbidden): error when creating "nginx.yml": pods "nginx" is forbidden: pod does not have "kubernetes.io/config.mirror" annotation, node "worker1" can only create mirror pods

这个报错,主要由于是Kubernetes的准入控制器的NodeRestriction机制。
默认情况下Kubernetes禁用了外部直接对pod有写权限的操作。

打开这个文件:

/etc/kubernetes/manifests/kube-apiserver.yaml
这个文件中有一行 - --enable-admission-plugins=NodeRestriction

这个就是准入控制器,默认为NodeRestriction。

如果你就是要强制在外部创建pod,可以把/etc/kubernetes/manifests/kube-apiserver.yaml中的

- --enable-admission-plugins=NodeRestriction
改成
- --enable-admission-plugins=ServiceAccount

改完保存后会自动生效。再创建就不会报错。

生产环境就不建议这么改,建议保留NodeRestriction。

Logo

开源、云原生的融合云平台

更多推荐