kubernetes - 创建(手动)后,使 kubernetes 节点具有 `providerID` 规范的方法是什么?
问题描述
一旦为 kubelet 提供了附加标志,我希望它kubectl get nodes <node> -o yaml
会显示spec.providerID
(参见下面的参考)--provider-id=provider://nodeID
。当 kubelet 启动/重新启动时,我使用/etc/default/kubelet
文件向命令行添加更多标志。(在 k8s 1.16 集群上)我通过systemctl status kubelet --no-pager
调用看到了额外的标志,因此该文件受到尊重。
但是,我没有看到通过kubectl get node <node> -o yaml
调用返回的值。我认为它必须是节点已经注册,但我认为 kubectl 在它启动时会重新注册。我已经通过journalctl -u kubelet
建议它已经通过注册看到了日志行。
如何手动将提供者 ID 添加到节点?
https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#nodespec-v1-core
解决方案
akubelet
在节点本身上的配置方式与其在控制平面中的定义是分开的(AFAIK),master
控制平面负责更新中央etcd
存储中的状态;所以它们有可能不同步。即,您需要与控制地点通信以更新其记录。
除了 Subramanian 的建议之外,kubectl patch node
它也可以工作,并且与手动编辑 YAML 清单相比,具有易于复制/可编写脚本的额外好处;如果您需要返回,它还会在您的 shell 历史记录中留下“纸质痕迹”。随你挑:) 例如,
$ kubectl patch node my-node -p '{"spec":{"providerID":"foo"}}'
node/my-node patched
$ kubectl describe node my-node | grep ProviderID
ProviderID: foo
希望这可以帮助!
推荐阅读
- python - 使用单个元素或列表作为值构建字典
- arrays - 如何按值对打字稿中的数组进行排序
- postgresql - 使用 postgres 存储后端时,Vault 报告缺少客户端令牌
- python - 使用 python 请求获取网站登录的同意 cookie (CMP euconsent-v2)
- unit-testing - 单元测试 FastAPI CRUD 无法按预期工作
- python - 用户输入只能是字母字符并包含空格
- laravel - 如何更改 spatie 标签 slug 生成器方法
- c# - 从 dmcmnutils.dll 读取带参数的导出函数
- jquery - 添加 Click 处理程序,并使用 clearIntervals 取消间隔
- javascript - 如何根据状态选择对哪个数组执行操作?