Kubernetes オブジェクトレシーバー 🔗
The Kubernetes Objects receiver collects objects from the Kubernetes API server. The supported pipeline is logs
. See パイプラインでデータを処理する and Collect logs and events with the Collector for Kubernetes for more information.
注釈
This receiver supports authentication through service accounts only at the moment.
はじめに 🔗
To activate the Kubernetes Objects receiver, use this Helm configuration:
k8sObjects:
- name: pods
mode: pull
label_selector: environment in (production),tier in (frontend)
field_selector: status.phase=Running
interval: 15m
- name: events
mode: watch
group: events.k8s.io
namespaces: [default]
To complete the configuration, include the receiver in the logs
pipelines of the service
section of your configuration file. For example:
logs/objects:
receivers:
- k8sObjects
Activate the receiver manually 🔗
To activate the Kubernetes Objects receiver manually in the Collector configuration, add k8sobjects
to the receivers
section of your configuration file, as shown in the following example:
k8sobjects:
auth_type: serviceAccount
objects:
- name: pods
mode: pull
label_selector: environment in (production),tier in (frontend)
field_selector: status.phase=Running
interval: 15m
- name: events
mode: watch
group: events.k8s.io
namespaces: [default]
Main settings 🔗
These are the main configuration properties:
auth_type
.serviceAccount
by default. Determines how to authenticate to the Kubernetes API server. Values include none (for no authentication),serviceAccount
(to use the standard service account token provided to the agent pod), orkubeConfig
to use credentials from~/.kube/config
.name
. Name of the resource object to collect.mode
。オブジェクトの収集方法を定義します:pull
mode reads all objects of this type that use the list API at an interval.watch
mode sets up a long connection using the watch API to just get updates.
label_selector
. Select objects by label(s).field_selector
. Select objects by field(s).interval
.60m
(minutes) by default. Inpull
mode, the interval at which the object is pulled.exclude_watch_type
。watch
モードでは、特定のウォッチタイプを除外することができます。有効な値は、ADDED
、MODIFIED
、DELETED
、BOOKMARK
、ERROR
です。resource_version
。デフォルトでは1
。watch
モードでは、特定のバージョンから始まるリソースをウォッチできます。指定がない場合、レシーバーはウォッチ開始前にresourceVersion
を取得するための初期リストを行います。これが必要な理由については、Kubernetesの Efficient Detection of Change を参照してください。namespaces
。デフォルトではall
です。イベントを収集する名前空間の配列。group
。オプション。API グループ名。指定したリソースオブジェクトが複数のグループに存在する場合、このフィールドを使用して選択するグループを指定します。デフォルトでは、最初のグループが選択されます。例えば、
events
リソースがv1
とevents.k8s.io/v1
APIGroup の両方で利用可能な場合、デフォルトでv1
を選択します。
See more at 設定.
Configure the resources for the Kubernetes deployment 🔗
以下のセクションに従って、Collector をレシーバーでデプロイするために必要なさまざまなKubernetesリソースを設定します。
Manual deployment 🔗
OTLP_ENDPOINT
を有効な値に置き換えて、otelcontribcol
の設定でConfigMapを作成します。
apiVersion: v1
kind: ConfigMap
metadata:
name: otelcontribcol
labels:
app: otelcontribcol
data:
config.yaml: |
receivers:
k8sobjects:
objects:
- name: pods
mode: pull
- name: events
mode: watch
exporters:
otlp:
endpoint: <OTLP_ENDPOINT>
tls:
insecure: true
service:
pipelines:
logs:
receivers: [k8sobjects]
exporters: [otlp]
Chart deployment 🔗
または、手動デプロイの代わりに、次のHelmチャートデプロイを使用します:
clusterReceiver:
k8sObjects:
- name: pods
mode: pull
label_selector: environment in (production),tier in (frontend)
field_selector: status.phase=Running
interval: 15m
- name: events
mode: watch
group: events.k8s.io
namespaces: [default]
Service account 🔗
Create a service account for the Collector to use.
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: otelcontribcol
name: otelcontribcol
Role-based access control (RBAC) 🔗
このセクションのコマンドを使用して、必要なアクセス許可を持つ ClusterRole
と、前のセクションで作成したサービスアカウントにロールを付与する ClusterRoleBinding
を作成します。
注釈
この例では、ポッドとイベントのみを収集します。他のオブジェクトを収集するには、適切なルールを追加します。
watch
モードを使用する場合は、list
動詞も指定する必要があります。これにより、resource_version
が提供されなかった場合、レシーバーは初期リストを実行するアクセス許可を得たり、410 Gone シナリオから回復するためにリストを使用したりすることができます。詳しくはKubernetes の公式ドキュメント 「410 Gone」 レスポンス を参照してください。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: otelcontribcol
labels:
app: otelcontribcol
rules:
- apiGroups:
- ""
resources:
- events
- pods
verbs:
- get
- list
- watch
- apiGroups:
- "events.k8s.io"
resources:
- events
verbs:
- watch
- list
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: otelcontribcol
labels:
app: otelcontribcol
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: otelcontribcol
subjects:
- kind: ServiceAccount
name: otelcontribcol
namespace: default
Deployment 🔗
Collector と Kubernetes オブジェクトレシーバーを 1 つのレプリカとしてデプロイします。
apiVersion: apps/v1
kind: Deployment
metadata:
name: otelcontribcol
labels:
app: otelcontribcol
spec:
replicas: 1
selector:
matchLabels:
app: otelcontribcol
template:
metadata:
labels:
app: otelcontribcol
spec:
serviceAccountName: otelcontribcol
containers:
- name: otelcontribcol
image: otelcontribcol:latest # specify image
args: ["--config", "/etc/config/config.yaml"]
volumeMounts:
- name: config
mountPath: /etc/config
imagePullPolicy: IfNotPresent
volumes:
- name: config
configMap:
name: otelcontribcol
設定 🔗
The following table shows the configuration options for the receiver:
トラブルシューティング 🔗
Ensure resources are allocated 🔗
レシーバーが以下のようなエラーを返す場合は、ClusterRole
に resource
が追加されていることを確認してください。
{"kind": "receiver", "name": "k8sobjects", "pipeline": "logs", "resource": "events.k8s.io/v1, Resource=events", "error": "unknown"}
一般的なトラブルシューティング 🔗
Splunk Observability Cloudをご利用のお客様で、Splunk Observability Cloudでデータを確認できない場合は、以下の方法でサポートを受けることができます。
Splunk Observability Cloudをご利用のお客様
Submit a case in the Splunk Support Portal .
Contact Splunk Support .
見込み客および無料トライアルユーザー様
Splunk Answers のコミュニティサポートで質問し、回答を得る
Splunk #observability ユーザーグループの Slack チャンネルに参加して、世界中の顧客、パートナー、Splunk 社員とのコミュニケーションを図る。参加するには、Get Started with Splunk Community マニュアルの チャットグループ を参照してください。