Operator 是 Kubernetes 的扩展软件,它利用 定制资源 管理应用及其组件。
Operator相关常用缩写
ClusterServiceVersions -----> CSV
Operator Lifecycle Manager -----> OLM
CustomResourceDefinitions ---->CRD
Cluster Version Operator ----->CVO
CRD 由 OLM 定义和管理
每个 Operator 负责管理 CRD, 而 CRD 是 OLM 的框架基础
重要资源的描述
常用命令
命令查看OpenShift 4.7 集群自带的 operator
oc get clusteroperator
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE
authentication 4.7.6 True False False 57m
baremetal 4.7.6 True False False 2d16h
cloud-credential 4.7.6 True False False 2d16h
cluster-autoscaler 4.7.6 True False False 2d16h
config-operator 4.7.6 True False False 2d16h
console 4.7.6 True False False 15h
csi-snapshot-controller 4.7.6 True False False 51m
dns 4.7.6 True False False 13h
etcd 4.7.6 True False False 2d16h
image-registry 4.7.6 True False False 2d15h
ingress 4.7.6 True False False 2d15h
insights 4.7.6 True False False 2d16h
kube-apiserver 4.7.6 True False False 2d15h
kube-controller-manager 4.7.6 True False False 2d16h
kube-scheduler 4.7.6 True False False 2d16h
kube-storage-version-migrator 4.7.6 True False False 83m
machine-api 4.7.6 True False False 2d16h
machine-approver 4.7.6 True False False 2d16h
machine-config 4.7.6 True False False 160m
marketplace 4.7.6 True False False 5h17m
monitoring 4.7.6 True False False 51m
network 4.7.6 True False False 2d16h
node-tuning 4.7.6 True False False 2d16h
openshift-apiserver 4.7.6 True False False 59m
openshift-controller-manager 4.7.6 True False False 13h
openshift-samples 4.7.6 True False False 2d15h
operator-lifecycle-manager 4.7.6 True False False 2d16h
operator-lifecycle-manager-catalog 4.7.6 True False False 2d16h
operator-lifecycle-manager-packageserver 4.7.6 True False False 63m
service-ca 4.7.6 True False False 2d16h
storage 4.7.6 True False False 2d16h
Operator
可以这样理解,每个 operator都是一个镜像==
Operators 是由 OLM(Operator Lifecycle Manager)负责安装的.
该命令显示所有已经安装的 Operator
oc get operator
oc get operator 等于 oc get csv, 两个命令运行后结果一样
OpenShift 的 Operator Hub 里面提供很多可以安装的 Operator. 可以自行到里面下载, 但是自定义的Operator非 OpenShift 官方建议的, OpenShift不负责提供技术支持.
Operator Hub
Operator Hub 长这样, 可以从这里下载你需要的 Operator
查看所有 Operator Hub 里面所有的 Operator
oc get packagemanifests -n openshift-marketplace
这个命令会描述某个 Operator
oc describe packagemanifests <operator_name> -n openshift-marketplace
查询已经安装的 Operator
oc get installplan -A
Operator订阅状况
我们可以通过检查 subscription 去检查这个 Operator是否健康
当安装的时候,需要选择 namespace
我们可以通过命令行查看 Operator的订阅状态, 前提是以 cluster-admin 用户登录
- 先列出你选择 namespace 的订阅
oc get subs -n <operator_namespace>
我安装了 Ansible 的 operator 并放在 openshift-config 命名空间里
这里是 name 是 subscription name
- 检查 subscription 资源
oc describe sub <subscirption_name> -n <operator_namespace>
找到 Conditions查看 Operator的情况
注意!
- OpenShift Container Platform 集群的 默认Operator是由 CVO 管理的. CVO 负责内部 Operator的升级. 且内部 Operator没有 Subscription.
- 由 OLM 负责升级自己安装下载的 Operator, 且只有自己下载的 Operator具有 Subscription.
已安装的 Operator
已下载的自定义的 Operator 放在这里, 以 Redis 为例
在此提醒,不是每个 Operator 在创建时都能生成 CR. 取决于 Operator. 下图 Redis Operator 的 Tab 也不是都一个样子.
另外, Operator 分两种,一种是官方自动安装的. 一种是自己手动安装的. 建议要放到不同的 namespace命名空间, 不然容易互相干扰. 在有些情况下甚至会导致同命名空间下其他的 Operator
查询所有和 Operator相关的namespace 命名空间
oc get ns |grep operator
openshift-apiserver-operator Active 2d20h
openshift-authentication-operator Active 2d20h
openshift-cloud-credential-operator Active 2d20h
openshift-cluster-node-tuning-operator Active 2d20h
openshift-cluster-samples-operator Active 2d20h
openshift-cluster-storage-operator Active 2d20h
openshift-config-operator Active 2d20h
openshift-console-operator Active 2d19h
openshift-controller-manager-operator Active 2d20h
openshift-dns-operator Active 2d20h
openshift-etcd-operator Active 2d20h
openshift-ingress-operator Active 2d20h
openshift-kube-apiserver-operator Active 2d20h
openshift-kube-controller-manager-operator Active 2d20h
openshift-kube-scheduler-operator Active 2d20h
openshift-kube-storage-version-migrator-operator Active 2d20h
openshift-machine-config-operator Active 2d20h
openshift-network-operator Active 2d20h
openshift-operator-lifecycle-manager Active 2d20h
openshift-operators Active 2d20h
openshift-service-ca-operator Active 2d20h
查询 operator的 pod状态
查询Operator命名空间下的pod
oc get pods -n <operator-namespace>
详细描述某个 pod
oc describe pod <operator_podname> -n <operator_namespace>
查看 Operator的日志
Operator Lifecycle Manager
OLM 负责帮用户安装,更新,管理 k8s 原有的 Operator(即 OpenShift自动安装的 Operator)
下图为 OpenShift官方流程图
Cluster Version Operator
Cluster Version Operator = CVO
查看集群现在的版本
oc get clusterversion
CVO是一个比较特殊的 operator. 它负责升级内部所有的 operator.
当 Openshift 有更新的版本是,通常内部的 operator也会有更新版本. OpenShift的更新版本托管在 quay.io里面
红帽在 https://cloud.redhat.com 上托管服务, 并在 https://quay.io上托管集群镜像
OpenShift 升级频道有4 个
- candidate
- fast
- stable
- EUS
candidate 频道是候选的版本. 候选的版本包含该产品的所有功能但并不被正式支持.候选版本可以从来测试新版本是否使用于自己的系统.
fast 频道是在有更新版本时立即提供的. 适合预生产和 QA的环境. 可以考虑加入 OpenShift改进计划
stable 频道是相对最稳定最推荐的
eus 提供了延长的更新支持 给具有 premium 的用户, EUS 的版本将维护到 14 个月
以上命令皆在 OCP 4.7 上面运行
官方文档有更详细的内容