(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

IT-DevOps

【Kubernetes】Terminatingで固まっているPodを強制的に削除する

やりたいこと 以下のようにStatusがTerminateingのまま変化しないPodを $ oc describe pod mongodb-5bc87db5bf-h5kbz ... Status: Terminating (lasts 27d) Termination Grace Period: 30sdeleteコマンドで削除する。尚、直接打つと以下で処理がフリーズする…

【Kubernetes】SchedulingDisabledとなっているNodeにDaemonSetが存在し続ける理由

はじめに 以下記事のようにNodeに対してdrainを発行して NodeのステータスをSchedulingDisabledとしているにもかかわらずDaemonSetに紐づくPodはそのNode上で動作し続けます。本記事ではその理由について説明しました。 環境情報 $ kubectl version Client V…

【IBMCloud】Sysdig Monitorで確認できるOS上のファイルシステム上限を変更する

やりたいこと メトリック収集のためにMonitoringエージェントを構成済のLinuxにて、Sysdig Monitor上から確認できるファイルシステムの数を変更する。尚、デフォルトでは以下の形式にて15のファイルシステムが確認できる。 fs.device fs.mountDir fs.bytes.t…

【fluetnd/tdagent】failed to flush the bufferの原因を解消してもログ書き込みが行われない

事象 tdagentが受信したログがファイルとして生成されていない。 尚、/var/log/td-agent/td-agent.logにて以下メッセージが出力されているがその原因となる事象は解消している。 ... [warn]: #0 failed to flush the buffer. retry_time=8 next_retry_second…

【fluetnd/tdagent】flush_intervalでログ書き込みの遅延時間を変更する

はじめに Fluetndではblob(Binary Large OBject)を集めたchunkが一定程度溜まるか一定時間が経過するとデータを吐き出します。 そして実体はtd-agent.confの中の設定を変更することでそれらを管理し、前者はchunk_limit_size、後者はflush_intervalに該当…

【fluetnd】record_transformerで不要な項目をJSON構造で削除する

やりたいこと forward定義が入ったfluentdにて送付する対象から特定の項目を排除する。 環境情報 # fluentd --version fluentd 1.3.3 やり方 fillteの中にremove_keysで項目を指定する。尚、JSON形式におけるネスト構造は$.A.Bのように記載して抽出する。 <filter **> @</filter>…

【fluetnd】ログの送付先をSyslog経由からtdagent経由に変更する

やりたいこと fluentdでのログ送付先をSyslogではなくtd-agentに変更したい。 尚、Syslogには経由ではログは送付できており同部分の設定ファイルは以下とする。。 <label @test> <match **> @type copy <store> @type remote_syslog host x.x.x.x port 514 protocol tcp ... </store> </match> </label> 環境情報 # …

【IKS/fluentd】コンテナのログをSyslog経由で別サーバに転送する

はじめに IBM Cloud Kubernetes Service(IKS)では外部サーバーに対してSyslog経由でログ転送することができます。 本記事では実際にそれを設定した後にその動作確認をした結果について記載しました。尚、ログの送付先側ではSyslogを受け付ける設定は済んで…

【fluetnd】Syslog経由でログを送るDaemonSetのyamlを適用してみた

はじめに Fluentdの公式ページからKubernetesのログ取得をするためには以下のGithubのYAMLを利用せよとあったので fluent/fluentd-kubernetes-daemonset その中のfluentd-daemonset-syslog.yamlを実際に適用してみました。尚、Syslogの受け手にはLinuxサーバ…

【RHEL/fluetnd】TreasureDataAgent(tdagent)をインストールする流れ

はじめに コンテナのログ監視を行うために利用されるFluentdを導入すべく、受けて側の仮想マシンRHELで実際にTreasureDataAgent(td-agent)をインストールした結果について記載しました。尚、基本は以下コマンドで終わりですが、内部のスクリプトを見ながら…

【Prometheus/Openshift】node-exporterに対するスクレイピングの動きを確認する

はじめに Openshiftではopenshift-monitoringというnamespaceにデフォルトでnode-exporterが存在し $ oc get ds -n openshift-monitoring NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE node-exporter 3 3 3 3 3 kubernetes.io/os=lin…

【Prometheus】ExporterをIP指定でHTTP接続で監視先に追加する流れ

はじめに PrometheusではPull型のメトリクス監視としてPrometheus.yamlに以下形式でTargetを記載することで scrape_configs: - job_name: 'node_exporter' static_configs: - targets: targethost:9100メトリクス収集先を追加できますが、それらをOpenshift…

【Openshift/Prometheus】prometheus.yamlに設定を加えることでスクレイプ構成を変更する

やりたいこと Operator版のPrometheusにて利用されているスクレイプ構成をデフォルト状態から変更する。 尚、デフォルト構成ファイルの実体はPrometheusのPodが展開されているnamespaceのsecretで定義されている。 環境情報 quay.io/prometheus/prometheus u…

【Kubernetes】PodがEmptyDirで使用しているディスク領域を確認する

やりたいこと Podにて以下のようにemptyDirを利用している場合に volumeMounts: - mountPath: /data name: storage-volume volumes: - emptyDir: {} name: storage-volume 同領域のディスク利用サイズを確認する。 環境情報 $ kubectl version Client Versio…

【Kubernetes】base64で暗号化されているSecretをoc extractコマンドで取得する

やりたいこと base64で暗号化されているSecretをコマンド一発で表示させる。 環境情報 $ oc version Client Version: 4.6.X Server Version: 4.6.X Kubernetes Version: v1.19.X やり方 以下のようなSecretを対象とした時に $ kubectl describe secret grafa…

【Istio/ingressgateway】ClusterIPとVirtualServiceを紐付ける流れ

はじめに Istioをインストールするとロードバランサとして外部向けのServiceが展開され、そこを経由して各Serviceに割り振ることができます。 今回は自前のIngress経由ではなくistio-systemにできているingressgateway経由してClusterIPへのアクセスを通す流…

【Kubernetes/stern】Deploymentに紐づくPodのログを一気に確認するツール

はじめに Deploymentを単純にサービスに紐づけている場合はどのPodに通信が流れるかは判断できないため、ログ調査をする場合は各Podを選定しながら $ kubectl logs PODNAMEにてログを標準出力に出して確認しますがこれは時に面倒です。そんな時に重宝するツ…

【Istio】既存のnamespaceにistio-injection=enabledを付与する

確認したこと 既に存在する名前空間に対して自動的にサイドカーが付与される設定を行った瞬間に $ kubectl label namespace xx istio-injection=enabled全Podにそれらが反映させるかを確認する。 環境情報 IKS v1.18.13 Debian GNU/Linux 9 istio-1.8.1 尚、…

【LogDNA/API】curlで取得したタイムスタンプを時刻データに変換するワンライナー

はじめに LogDNAではAPIをcurlコマンドで叩くことでCUIで情報を扱えます。 しかしデフォルトでは時間情報がUNIXタイムスタンプなのでそれを日付情報に変換しながら情報を簡易的に出力するワンライナーを作成しました。 環境情報 GNU bash, version 4.4.12(3)…

【Kubernetes】externalNameでnamespaceを超えたServiceと接続する

やりたいこと ある名前空間にいるPodから別の名前空間にいるServiceに対して通信を発生させる。例として以下のサービスに対して $ oc get service -n openshift-monitoring NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE... node-exporter ClusterIP None <none> </none>…

【ICCR】sysdig/secure-inline-scanでThe login credentials are not valid, or your IBM Cloud account is not activeと出るエラー

事象 自前でアップロードしたICCRレジストリのイメージにSysdigSecureのスキャンを利用するも # docker run --rm quay.io/sysdig/secure-inline-scan:2 jp.icr.io/xx/xx:1.2 --sysdig-token xx --sysdig-url https://jp-tok.monitoring.cloud.ibm.com/以下の…

【IBMCloud】SysdigSecureのイメージスキャンをdocker経由で利用する

はじめに IBM CloudではIBM Cloud Monitoring with Sysdigの機能の中で「Sysdig Secure on IBM Cloud」が利用でき、コンテナイメージの脆弱性が確認できます。以下記事ではGUI上からそれらを実施しましたが 今回はCUIでそれらを実施してみました。 環境情報 …

【Istio/Kubernetes】Kialiでサービス メッシュの稼働状況を可視化する

はじめに サービスメッシュを担うOSSであるIstioですが、アドオンとしてKialiをクラスターにインストールできます。 本記事では実際にサンプルプログラムをKialiで可視化した流れについて記載しました。 環境情報 IKS v1.18.13 Debian GNU/Linux 9 istio-1.1…

【Gitlab】プライベートリポジトリを新規作成してローカルからpushする

はじめに 以下の手順で用意したGitlabに新規リポジトリを作成し、ローカルからファイルをpushして配置する流れについて記載しました。 環境情報 OpenShift Container Platform 4.5 GitLab 14.1.0-ee .. EE 初期設定 Gitlabはデフォルトだと"Git clone URL"が…

【Openshift】Gitlabのインストールから初回ログインまでの流れ

はじめに GitlabとはGitHubライクのGitリポジトリで自前でGit環境を用意する際に利用できるソフトウェアです。 公式サイトにはサーバやKubernetesに展開する手順が書かれていますが、Openshiftでは手順が存在しなかったので今回はOpenshift環境にデプロイし…

【Tekton/R言語】PipelineとTaskの関係をgrVizで可視化する

やりたいこと Pipeline内に記載されているTaskを抽出してGUI上に可視化する。 尚、可視化にはR言語のgrVizを利用。 環境情報 tektoncd:v0.14.2 R.version:4.1.0 やり方 以下のスクリプトを実行すると #!/bin/bash kubectl get pipeline -n xx | grep -v NAME…

【Openshift/Grafana】デフォルトのPrometheusをDatasourceとして利用する

はじめに OpenShiftをインストールした時点で監視を担うPrometheusがopenshift-monitoringネームスペースにデプロイされており、同Prometheusのデータを可視化するGrafanaもデフォルトでインストールされています。 $ oc get deployment -n openshift-monito…

【Tekton/Kubernetes】curlコマンドをEventListenersに送ってPipelineをキックする

はじめに TektonではEventlistener用のPodにリクエストを送ることでTriggerTemplatesをベースにしたPipelineを起動することが可能です。 CICDをキックする方法にGithubへのpushなどはありますが、今回は最もシンプルにEventListenersにcurlコマンドを直接送…

【Tekton/Kubernetes】TriggerTemplateとTriggerBindingをカスタマイズする際の考え方

はじめに Tektonのサンプルプログラムを動かせばTrigger経由でPipelineが起動できますが、TriggerTemplateの記載方法などが分かりにくいです。本記事では初学者の方向けに、PipelineをPilelineRunで起動できた後に、同PiplelineをEventListener経由で起動す…

【Kubernetes】Failed to watchとエラーが出た際のServiceAccountへの権限追加

事象 Pod(TektonTrigger)を起動した際に以下ログが出力して権限エラーのリスタートが起きている。 $ kubectl get pod NAME READY STATUS RESTARTS AGE tt-test-664dcbd49d-jd2wx 0/1 Running 3 Xs尚Podのログを確認するとServiceAccountに付与している権限…


他の記事を読む