New Relic Kubernetes Operator是一个Kubernetes Operator,用于从Kubernetes配置中管理New Relic资源。通过https://github.com/newrelic/newrelic-kubernetes-operator/blob/master/examples/example.yaml#L2%E7%AE%A1%E7%90%86New Relic资源的方式,与管理内置Kubernetes对象的方式一致。
目前,该Operator支持管理以下资源:
适用于需要在Kubernetes环境中集中管理New Relic监控配置的用户,特别是希望通过Kubernetes原生工具(如kubectl)进行配置管理、版本控制和自动化部署的场景。
注意: 以下快速启动说明不需要克隆代码仓库。
使用kind在本地Docker容器中运行Kubernetes
安装docker、kubectl、kustomize和kind
bashbrew cask install docker brew install kubernetes-cli kustomize kind
使用kind创建测试集群
bashkind create cluster --name newrelic kubectl cluster-info
安装cert-manager
bashkubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.15.0/cert-manager.yaml
注意: 此步骤需要1-2分钟完成,请等待一分钟后再进行下一步。
可通过以下命令确认cert-manager是否运行:kubectl rollout status deployment -n cert-manager cert-manager-webhook
在测试集群中安装Operator
bashkustomize build github.com/newrelic/newrelic-kubernetes-operator/configs/default | kubectl apply -f -
注意: 这将在kubectl当前配置的Kubernetes集群上安装Operator。
使用自定义容器
如果需要使用自定义容器部署Operator,可以通过kustomize.yaml文件覆盖镜像名称。
创建新的kustomize.yaml文件
yamlapiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: newrelic-kubernetes-operator-system resources: - github.com/newrelic/newrelic-kubernetes-operator/configs/default images: - name: newrelic/k8s-operator:snapshot newName: <自定义镜像名称> newTag: <自定义标签>
应用该文件:
bashkustomize build . | kubectl apply -f -
完成快速启动后,即可通过New Relic Kubernetes对象配置New Relic资源。
创建包含NRQL告警条件的New Relic告警策略
使用以下示例策略配置文件。需要将api_key字段更新为New Relic个人API密钥。
examples/example_policy.yaml
yamlapiVersion: nr.k8s.newrelic.com/v1 kind: Policy metadata: name: my-policy spec: # 在此处添加API密钥 api_key: <你的New Relic个人API密钥> name: k8s创建的策略 incident_preference: "PER_POLICY" region: "us" conditions: - spec: nrql: query: "SELECT count(*) FROM Transactions" since_value: "10" enabled: true terms: - threshold: "75.0" time_function: "all" duration: "5" priority: "critical" operator: "above" name: "K8s生成的告警条件" - spec: type: "apm_app_metric" enabled: true metric: "apdex" condition_scope: application entities: - "5950260" terms: - threshold: "0.9" time_function: "all" duration: "30" priority: "critical" operator: "above" name: "K8s生成的APM告警条件2"
添加API密钥后,应用到本地集群:
bashkubectl apply -f examples/example_policy.yaml
注意: 也可以使用Kubernetes Secret提供API密钥。我们提供了示例Secret配置文件,使用时需将
api_key替换为api_key_secret。
使用以下命令查看配置的策略:
bashkubectl describe policies.nr.k8s.newrelic.com
注意: 你也应该能在New Relic账户中看到新创建的策略。
Operator将通过kubectl apply -f <文件名>应用配置文件,根据需要创建和更新告警策略及NRQL告警条件。
创建NRQL告警条件并添加到现有告警策略
使用以下示例NRQL告警条件配置文件。需要将api_key字段更新为New Relic个人API密钥。
examples/example_nrql_alert_condition.yaml
yamlapiVersion: nr.k8s.newrelic.com/v1 kind: NrqlAlertCondition metadata: name: my-alert-condition spec: # 在此处添加API密钥 api_key: <你的New Relic个人API密钥> name: "K8s生成的告警条件" nrql: # 注意:这只是示例。 # 你需要使用更具体的参数来匹配相关Kubernetes对象的查询。 query: "SELECT count(*) FROM Transactions" since_value: "10" enabled: true terms: - threshold: "75.0" time_function: "all" duration: "5" priority: "critical" operator: "above" existing_policy_id: 26458245 # 注意:必须匹配你账户中现有的策略ID region: "us"
卸载Operator的操作与安装相反,即通过kustomize构建Kubernetes资源文件并运行kubectl delete:
bashkustomize build github.com/newrelic/newrelic-kubernetes-operator/configs/default | kubectl delete -f -
本节将帮助你正确设置Operator的开发环境。
克隆代码仓库
bashgit clone git@github.com:newrelic/newrelic-kubernetes-operator.git
按照对应操作系统的说明安装kubebuilder。此安装还会包含测试所需的etcd和kube-apiserver。
注意: 不要使用
brew安装kubebuilder。Homebrew的kubebuilder包不会提供运行测试所需的所有依赖。
运行测试套件(使用http://onsi.github.io/ginkgo/%E6%B5%8B%E8%AF%95%E6%A1%86%E6%9E%B6%EF%BC%89%E3%80%82%E4%BD%BF%E7%94%A8%60make%60%E7%9B%AE%E6%A0%87%E6%98%AF%E5%BC%80%E5%A7%8B%E6%B5%8B%E8%AF%95%E7%9A%84%E6%9C%80%E5%BF%AB%E6%96%B9%E5%BC%8F%EF%BC%9A
make运行测试
bashmake test # 运行所有测试 make test-unit # 仅运行单元测试 make test-integration # 仅运行集成测试
bashmake lint
执行快速启动部分的步骤,完成初始必要设置,并通过kubectl apply应用Operator配置。
确认配置已部署到本地Kubernetes集群(使用kind创建的集群):
newrelic-kubernetes-operator-system
bashkubectl get namespaces
newrelic-kubernetes-operator-system命名空间中的节点
应看到类似以下输出:bashkubectl get nodes -n newrelic-kubernetes-operator-system
NAME STATUS ROLES AGE VERSION newrelic-control-plane Ready master 163m v1.18.2
后续步骤:
bash# 描述当前配置的策略 kubectl describe policies.nr.k8s.newrelic.com # 描述当前配置的告警条件 kubectl describe nrqlalertconditions.nr.k8s.newrelic.com # 获取New Relic Operator使用的节点 kubectl get nodes -n newrelic-kubernetes-operator-system # 描述New Relic Operator使用的节点 kubectl describe node <节点名称> # 跟踪Operator的manager容器日志(开发时有用) # 使用上述`describe node`命令定位manager控制器 kubectl logs -f -n newrelic-kubernetes-operator-system -c manager newrelic-kubernetes-operator-controller-manager-<哈希值>
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务