Openshift 提供更新方式,实时更新整个平台。而我(也许其他人也)只需要更新一些特定的组件。
可以通过管理 operator 并相应地设置镜像来更新控制台、openshift-apiserver 等组件与新的容器镜像。例如,要更新 openshift-apiservercomponent,以下步骤确实有效:
- 禁用对openshift apiserver operator 的管理
#oc patch openshiftapiservers.operator.openshift.io cluster --patch '{ "spec": { "managementState": "Unmanaged" } }' --type=merge
- 为 openshift apiserver 部署设置一个新的容器镜像
#oc set image deploy apiserver openshift-apiserver=registry.somecorp.com:5000/ocp4/openshift4:openshfit-apiserver-4.4.4-t1 -n openshift-apiserverb
- 检查并等待推出状态
#oc 推出状态 -w 部署/apiserver -n openshift-apiserver
而对于基本的 kube-apiserver 组件,情况有所不同。首先,禁用相关算子的方法不起作用,似乎 kubeapiserver 算子不支持“非托管”功能。
#oc patch kubeapiserver.operator.openshift.io cluster --patch '{ "spec": b { "managementState": "Unmanaged" } }' --type=merge KubeAPIServer "cluster" 无效:spec.managementState: Invalid值:“”:正文中的 spec.managementState 应匹配 '^(Managed|Force)$'
其次,似乎只是 pod 用于 kube-apiserver,而不是部署。虽然有办法为特定的 pod/容器设置图像,但我不知道如何应用设置。
#oc 设置镜像 pod kube-apiserver-master-0 kube-apiserver=registry.somecorp.com:5000/ocp4/openshift4:hyperkube-t1 -n openshift-kube-apiserver b pod/kube-apiserver-master-0 镜像已更新
有没有人可以帮助我找出在 openshift 系统中手动更新 kube-apiserver 的方法?感谢您提供任何信息。