(O+P)ut

アウトプット



(O+P)ut

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

DevOps

【OpenShift】cluster-adminロールを持つユーザを新規作成してログインする流れ

はじめに Openshiftではoc get userでユーザリソースが確認でき、事前に設定したパスワードを用いてoc loginすることが可能です。本記事ではadmin権限を持つユーザを新規作成する手順について記載しました。 環境情報 OpenShift Container Platform 4 方針 …

【OpenShift】oc debug nodeを利用してNode上で任意のコマンドを実行する

はじめに Openshiftではoc debug nodeを利用すること任意のノードでシェルプロンプトを開くことができます。 本記事は同コマンドの解説と実際にkubeletのステータスを確認する手順について記載しました。 環境情報 OpenShift Container Platform 4 oc debug …

【Kubernetes】ingress作成時にignoring add for ingress .. annotation .. with valueとして失敗する事象

事象 Ingressを作成するもIngressコントローラーにて以下のログが出力され ignoring add for ingress test-ingress based on annotation kubernetes.io/ingress.class with valueIngressにIPが割り振られない。 status: loadBalancer: {} 環境情報 nginx-ing…

【OpenShift入門】アプリケーションの公開のためにrouteを作成する流れ

はじめに Kubernetesには無いリソースに「route」があり、routeとserviceを紐付けることでクラスター外から同サービスにFQDNでアクセスできるようなります。本記事ではサービスをrouteにして外部公開する流れについて解説します。 環境情報 OpenShift Contai…

【OpenShift】error: you do not have rights to view projectと出る事象

事象 Openshiftにてstatusを見ようとするも以下コマンドでエラーとなる。 $ oc status error: you do not have rights to view project "default" specified in your config or the project doesn't exist 環境情報 OpenShift Container Platform 4 可能性の…

【Docker/RHEL】コンテナをsystemctlで自動起動化する方法

はじめに Podmanではpodman generate systemdでsystemdユニットファイルを生成ができますが、同じようにdockerでも手動でファイルを作成すればsystemctlでコンテナを操作できます。本記事ではRHELにて特定コンテナを自動起動するための手順をメモしました。…

【Git】プライベートGithubからSSH/HTTPSでcloneを行う方法

はじめに PublicなGithubからCloneする際はhttpsを利用しますが、PrivateなGithubからCloneする際はSSHによる鍵認証かHttpsによるユーザ認証にて権限があることを示す必要があります。本記事ではそれぞれのやり方について簡単に説明します。 環境情報 $ git …

【Kubernetes】Podがファイルシステムを逼迫させた際におきた事象

はじめに Podにログインしてdfコマンドを打つと以下のようなファイルシステムが確認できますが / # df Filesystem 1K-blocks Used Available Use% Mounted on overlay 101330012 53038048 48275580 52% / tmpfs 65536 0 65536 0% /dev tmpfs 2022504 0 20225…

【Kubernetes】Client.Timeout or context cancellation while reading bodyというエラーの解消方法

事象 kubectlコマンドでPodを展開しようとするも下記エラーでエラーとなる。 E0111 21:53:18.429065 5884 request.go:1001] Unexpected error when reading response body: net/http: request canceled (Client.Timeout or context cancellation while readi…

【Tekton/Kubernetes】kubectlを用いたPipelineRun失敗時のログの見方

はじめに Tektonを利用したCI/CDの中でPipelineが失敗した際に詳細メッセージを確認する流れを記載しました。 $ kubectl get pipelineruns NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME test-pipeline-run False Failed 100s 92s 環境情報 Windows 10 Cy…

【Kubernetes】storageClass経由でPVCを要求するStatefulsetの1回目と2回目の挙動の違い

はじめに PodのspecにvolumeClaimTemplatesとしてPersistentVolumeClaimを要求してデータを固定化する際、1回目と2回目でイベントに違いががあります。本記事はレプリカ数1のmongoイメージを例にステートフルセットの落とし上げをしました。 それによって、…

【Istio】istioctl kube-injectでYAMLファイルを変換する

はじめに istioctlコマンドが通るようになった環境にて istioctl kube-injectを通すと、各Podに自動的にサイドカーが付与される様子を実機で確認しました。 環境情報 IKS v1.18.13 Debian GNU/Linux 9 istio-1.8.1 サンプルファイル istioをインストール時の…

【Linux】istioctlでIstioの初期インストールを行う

はじめに IKSに用意したWorkerNodeにLinux環境から操作をしてIstioのセットアップを実施しました。 以下の冒頭部分となります。 環境情報 IKS v1.18.13 Debian GNU/Linux 9 istio-1.8.1 istioctlのインストール 下記にてインストールが完了してディレクトリ…

【Kubernetes】Secret作成時の failed to find any PEM data in key inputというError

事象 Ingress用に既存のTLS証明書を利用したSecretを作成しようと秘密鍵及びサーバ証明書を与えるも $ kubectl create secret tls tls-secret --cert=test.crt --key=test.key以下のエラーで失敗する。 error: failed to load key pair tls: failed to find …

【Kubernetes】MetalLBにてLoadBalancerを利用する

はじめに オンプレミス環境に構築したKubernetesではServiceにて type: LoadBalancerと記載して起動するも、External-IPの箇所がpendingのままでIPアドレスが割り当てられません。本記事では以下のベアメタルサーバで動作するKubernetesにロードバランサ機能…

【Kubernetes】docker-desktopが所属しているグループや証明書の期限を確認する

はじめに KubernetesではRBAC(Role Based Access Control)という機構で権限を制御しています。本記事では、DockerDesktopでデフォルトで用意されるdocker-desktopの証明書情報を確認することでdocker-desktopユーザがなぜadmin権限を持っているのか?につ…

【Kubernetes】ユーザが属しているClusterRole/Roleを確認する

はじめに Kubernetesではクラスター全体もしくはネームスペースに対して行える操作を管理するためにRBAC(Role Based Access Control)という機構があり、具体的には権限を定義したロールとユーザを紐づけることで権限を制御します。本記事では、自分がどの…

【OpenShift】vSphereへのインストール前提となるDNSの設定について

はじめに vSphereへのOpenshiftのデプロイではインストール前提にDNSによる名前解決が要件となっており、サーバや接続先端末にて api.$CLUSTERDOMAIN api-int.$CLUSTERDOMAIN etcd-0.$CLUSTERDOMAIN etcd-1.$CLUSTERDOMAIN etcd-2.$CLUSTERDOMAIN *.apps.$CL…

【Tekton/Kubernetes】コンテナからK8sに対してkubectlを打つTaskの例

はじめに Tektonを利用したCI/CDの中でDockerDesktopのKubernetesクラスターにkubectlコマンドを打つTaskを生成しました。 以下記事のkubectlバージョンとなりますが、動くことを優先して権限分離を考慮していないので参考程度に利用ください。 環境情報 Win…

【Tekton/Kubernetes】dockerbuildでimageを生成するTaskの例

はじめに Tektonを利用したCI/CDの中でコンテナイメージは/kaniko/executorを利用している例が多かったので、自学のためにあえてkanikoを利用せずにdocker buildしてみました。ちなみに、KanikoはDockerコンテナ内でDockerイメージをビルドできるツールなの…

【Docker】ファイルをコンテナにマウントする際の注意点

事象 コンテナに以下のようにファイルをマウントしようと起動するも # docker run -it -v test.txt:/tmp/test.txt ubuntu /bin/shコンテナ内ではディレクトリができている。 # ls -l /tmp total 4 drwxr-xr-x 18 root root xx test.txt 環境情報 Docker vers…

【Tekton/Kubernetes】Taskを初回実行する際の注意点

事象 オフライン環境で初めてTaskを起動するとPending状態となる。 $ kubectl get taskrun NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME taskrun-hello Unknown Pending 3m46s具体的にはPodの初期化で止まっている。 $ kubectl get pod NAME READY STATU…

DockerDesktopをUpgrade時にWSL2を求められる事象

事象 DockerDesktopのアップデート時に以下メッセージが出る。 WSL 2 installation is incomplete The WSL 2 Linux kernel is now installed using a separate MSI update package. Please click the link and follow the instructions to install the kerne…

【Kubernetes】hostPathで指定したディレクトリの有無による挙動の違い

はじめに Nodeのファイルシステムを利用するhostPathについて、指定したマウント先が存在するかしないかでの実機上の動きを確認しました。 環境情報 kubeadm 1.15 pathで指定したディレクトリが存在しない場合 例えばYAMLは以下で containers: volumeMounts:…

【Kubernetes】kubeadmで用意したkube-proxyを再起動する

はじめに kubeadmでインストールした環境ではkube-proxyはPodとして各ノードに展開され、それはデーモンセットで管理されています。 本記事ではkube-proxyに関する情報を実機で確認しながら再起動する流れを整理しました。 環境情報 kubeadm 1.15 kube-proxy…

【Kubernetes】PodTheNodeHadCondition: [DiskPressure] というメッセージの注意点

事象 Podを起動するもSTATUSがEvictedとなっておりdescribeで詳細を確認すると以下メッセージで起動に失敗している。 Status : Failed Reason : Evicted Message : Pod The node had condition: [DiskPressure].ただし展開しようとしているNodeのディスク領…

【Kubernetes】etcdに保管されているデータ群をetcdctlコマンドでgetする

はじめに Kubernetesではetcdctlを利用してクラスター情報のバックアップ&リストアが可能ですが、実際に中に格納されているデータの値を表示させることができます。本記事では例として、etcdの中に格納されたnamespaceの情報を確認しました。 環境情報 kube…

【fluetnd/tdagent】workersの変更によってマルチプロセスにする

やりたいこと 以下のようにシングルプロセスで動いているfluentdプロセスをMulti Process Workersに変更する。 # ps aux td-agent ... /opt/td-agent/embedded/bin/ruby /opt/td-agent/embedded/bin/fluentd --log /var/log/td-agent/td-agent.log --daemon …

【Kubernetes】PVを削除しても過去のPVCが残り続ける事象

事象 PVを落とし上げしているにもかかわらず $ kubectl delete apply -f pv.yaml persistentvolume "pv-1" deleted $ kubectl get pv No resources found in default namespace. $ kubectl apply -f pv.yaml persistentvolume/pv-1 created起動直後にPVCが紐…

【Kubernetes】定義済のstorageclassがあるにもかかわらずnot foundとなるエラー

事象 事前にPVを用意しているにもかかわらず $ kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE test-pv 1Gi RWO Retain Available slow XmそのPVに紐づけようとしたPVCがPendingになる。 $ kubectl get pv…