通过 Helm 在 Kubernetes 集群中安装 IDOT
Instana 版 OpenTelemetry 收集器( IDOT )可自动完成 Kubernetes 中 OpenTelemetry 收集器的配置流程,并确保 Instana 默认接收遥测数据。 IDOT 可在 Kubernetes 环境中使用 Helm Charts 将其部署为集中式收集器。
使用 Helm 图表安装 IDOT
Helm 是适用于 Kubernetes 的软件包管理器。 借助 Helm ,您可以定义、安装和升级复杂的 Kubernetes 应用程序。
先决条件
- Kubernetes 1.24 后来
- Helm 3.9 后来
- Docker
- kubectl
过程
要在 Kubernetes 环境中安装 IDOT ,请执行以下步骤:
非必需但建议:通过运行以下命令为 IDOT 创建一个专用命名空间:
kubectl create namespace instana-otel-collector在 Kubernetes 中安装 IDOT ,请运行以下命令:
helm install instana-otel-collector \ --repo https://instana.github.io/instana-otel-collector instana-otel-collector-chart \ --namespace instana-otel-collector \ --create-namespace \ --set clusterName=<CLUSTER_NAME> \ --set instanaEndpoint=<INSTANA_ENDPOINT> \ --set instanaKey=<INSTANA_KEY>注意: CLUSTER_NAME、INSTANA_ENDPOINT 和 INSTANA_KEY 是必须设置的参数,在执行命令时需要指定。 --create-namespace 标志用于在命名空间尚未创建时创建该命名空间。 如果命名空间之前已手动创建,则可以省略。验证安装:安装完成后,请运行以下命令验证收集器是否安装成功:
kubectl get pods -n instana-otel-collector如果安装成功,将显示以下输出:
NAME READY STATUS RESTARTS AGE idot-daemonset-agent-szpth 1/1 Running 0 55s idot-statefulset-0 1/1 Running 0 55s部署的年龄和 Pod 的 ID 取决于您执行安装命令的时间,
szpth即在idot-daemonset-agent-szpth。要在 Instana 界面中查看已成功安装的收集器,请完成以下步骤:
- 在 Instana 用户界面的导航菜单中,点击 “平台” > Kubernetes “”。
- 点击显示为
CLUSTER_NAME. 的 OpenTelemetry 收集器。
要查看 Pod 的日志,请运行以下命令:
kubectl logs -n instana-otel-collector <NAME_OF_DEPLOYMENT>您还可以通过运行以下命令查看 Helm 版本:
helm list -n instana-otel-collector
检查收集器状态
要检查收集器的状态,请运行以下命令:
kubectl describe pod -n instana-otel-collector <NAME_OF_DEPLOYMENT>
升级 IDOT
若要使用新配置升级 IDOT ,请运行以下命令:
helm upgrade instana-otel-collector \
--repo https://instana.github.io/instana-otel-collector instana-otel-collector-chart \
--namespace instana-otel-collector \
从 Kubernetes 卸载 IDOT
要卸载 Helm 图表,请运行以下命令:
helm uninstall instana-otel-collector -n instana-otel-collector
要彻底删除所有资源(包括命名空间),请运行以下命令:
kubectl delete namespace instana-otel-collector
在 Red Hat OpenShift 中安装 IDOT
IDOT 也可以安装在 Red Hat OpenShift 中。
先决条件
在将 Helm 图表安装到 Red Hat OpenShift 4.x 集群之前,请确保已配置必要的权限。 若未获得适当权限,代理容器可能无法正确调度。
过程
登录到您的 Red Hat OpenShift 集群后,请按照以下步骤在 Red Hat OpenShift 中安装 IDOT :
非必需但建议:通过运行以下命令为 IDOT 创建一个专用命名空间:
oc new-project instana-otel-collector oc adm policy add-scc-to-user privileged -z instana-otel-collector -n instana-otel-collector在 Red Hat OpenShift 集群中安装 IDOT ,请运行以下命令:
helm install instana-otel-collector \ --repo https://instana.github.io/instana-otel-collector instana-otel-collector-chart \ --namespace instana-otel-collector \ --create-namespace \ --set clusterName=<CLUSTER_NAME> \ --set instanaEndpoint=<INSTANA_ENDPOINT> \ --set instanaKey=<INSTANA_KEY>验证 Red Hat OpenShift 安装:若您使用的是 Red Hat OpenShift ,可通过以下命令检查Pods:
oc get pods或者,你可以使用
kubectl以下命令:kubectl get pods -n instana-otel-collector检查容器的日志和状态与检查 Kubernetes 容器的方式相同。
要检查日志,请运行以下命令:
kubectl logs -n instana-otel-collector <NAME_OF_DEPLOYMENT>要检查 pod 的状态,请运行以下命令:
kubectl describe pod -n instana-otel-collector <NAME_OF_DEPLOYMENT>
Red Hat OpenShift 安全配置
对于 Red Hat OpenShift 集群,当 openshift.daemonset.usePrivilegedServiceAccount 设置为 true (默认值) 时,该图表会自动创建特权服务账户和安全上下文约束。 此配置授予对主机路径、网络和进程的访问权限,并允许以特权容器身份运行——这是从集群中收集全面指标所必需的权限。 因此,在执行安装命令时可能会出现关于 PodSecurity 的警告。
从 Red Hat OpenShift 卸载 IDOT
要卸载“ IDOT ”,请运行以下命令:uninstall Helm Chart:
helm uninstall instana-otel-collector -n instana-otel-collector
要从 Red Hat OpenShift 集群中删除项目:
oc delete project instana-otel-collector
在 Red Hat OpenShift 和 Kubernetes 环境间切换
若您同时处理 Red Hat OpenShift 和 Kubernetes 两个集群,当当前上下文设置为错误平台时 kubectl ,执行命令可能会遇到错误。
要在上下文之间切换,请运行以下命令:
列出所有可用上下文:
kubectl config get-contexts此命令列出每个上下文的名称、集群、命名空间和 authInfo。 使用名称来切换上下文。
切换到 Kubernetes 上下文:
kubectl config use-context <kubernetes-context-name>切换到 Red Hat OpenShift 上下文:
kubectl config use-context <openshift-context-name>
为 Kubernetes 配置 IDOT
用于部署 IDOT 的 Helm 图表包含一个 文件 values.yaml ,该文件位于 GitHub 存储库的 目录下 charts/instana-otel-collector-chart/values.yaml。 此文件已预设为适用于 Instana ,但可以像标准的 OpenTelemetryHelm 图表一样进行修改。
您可以通过以下任一方式设置配置参数:
- 直接在 Helm 命令中。
- 通过编辑该
values.yaml文件。
公共配置参数
| 参数 | 描述 | 缺省值 |
|---|---|---|
clusterName |
Kubernetes 集群名称 | 必需 |
instanaEndpoint |
Instana 后端端点主机 | 必需 |
instanaKey |
Instana 代理程序密钥 | 必需 |
resources.limits.cpu |
收集器的CPU限制 | 1.5 |
resources.limits.memory |
收集器的内存限制 | 768Mi |
resources.requests.cpu |
CPU对收集器的请求 | 0.5 |
resources.requests.memory |
收集器的内存请求 | 768Mi |
env |
附加环境变量 | {} |
查找配置值:
- 单击 “安装收集器” > Kubernetes Helm chart”。
- 在安装命令中:
INSTANA_KEY: 请查找标志-a后面的代理密钥。INSTANA_OTEL_ENDPOINT_GRPC: 请在标志-e(flag)之后查找 gRPC 端点。INSTANA_OTEL_ENDPOINT_HTTP: 请在标志-H(flag)之后查找 HTTP 端点。
有关完整系统要求的更多信息,请参阅 IDOT 系统要求。
容器安全要求
IDOT 的 DaemonSet 部署需要更高的权限才能收集主机级指标。
故障诊断
排查故障的最佳方法是通过运行以下命令检查收集器Pod的日志:
kubectl logs -n instana-otel-collector <NAME_OF_DEPLOYMENT>
另一种检查日志的方法是运行以下 describe 命令:
kubectl describe pod -n instana-otel-collector -l app=idot
修复命名空间删除卡顿问题
如果命名空间删除命令卡住或停留在终止状态,可使用以下命令强制移除终结器:
kubectl get namespace instana-otel-collector -o json | jq '.spec.finalizers = []' | kubectl replace --raw "/api/v1/namespaces/instana-otel-collector/finalize" -f -
请务必在删除命名空间前卸载 Helm 图表,以最大限度降低此类情况发生的概率。