(O+P)ut

アウトプット



(O+P)ut

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

IT技術-DevOps

【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…

【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…

【Docker】プライベートレジストリを最小限の設定で利用する

はじめに ローカル環境にコンテナ用のプライベートレジストリを立ててPush操作の検証を行った際の動作確認メモを記しておきます。 尚、環境としてはdockerインストール済のLinux仮想マシンの上でレジストリを起動しました。 環境情報 RedHat Enterprise Linu…

【Linux】Failed to start Docker Application Container Engineでdocker.serviceが起動しない

事象 DockerEngineの起動に失敗している。 # systemctl status docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: failed (Result: start-limit) …

【Kubernetes】ノードのkubeadm/kubelet/kubectlをUpgradeする

はじめに kubeadmで用意したノードのkubeadm/kubelet/kubectlをaptでアップグレードした際のメモです。 環境情報 kubectl v1.17.0 kubeadm v1.17.0 kubelet v1.17.0 kubeadmのバージョンアップ バージョンアップ前にdrainコマンドでPodがスケジュールされな…

【Kubernetes】kubectlコマンドでNodeに付与したlabelを外す方法

やりたいこと Nodeに付与されたラベルを外す。例えば以下のようなcolorラベルがついているとする。 # kubectl get node test01 --show-lables ... LABELS ... beta.kubernetes.io/arch=amd64.beta.kubernetes.io/os=linux,coloer=blue,.... 環境情報 kubectl…

【Kubernetes】CoreDNSへのnslookupがtimedoutする事象

事象 Kubeadmで構築した環境にてPod内の名前解決に失敗する。 具体的には/etc/resolv.confにcore-dnsのサービスであるkube-dnsのIPが記載されているにも関わらずPodからの通信に失敗する。 # nslookup testnode ;; connection timed out ; no servers could …

【Docker/Linux】CAP_NET_RAWを無効にしてコンテナを起動する

はじめに 「CAP_NET_RAW」というケーパビリティがありますが、セキュリティを考慮してコンテナ起動時に削除することができます。 このケーパビリティは「RAWソケットとPACKETソケットの使用を許可」を司っていいて、任意のパケットの送受信を行うために必要…

【Kubernetes】custom-columnsで自在に情報を出力する

はじめに kubectlコマンドのオプションにて-o custom-columns=HOGE:...で任意の列を出力することが可能です。 本記事ではjqコマンドと比較しながらcustom-columnsを利用して特定の値を抜き出してみます。 環境情報 kubectl v1.15.5 想定環境 $ kubectl get p…

【Kubernetes】マルチノード環境のNodePortに対する疎通確認

はじめに 以下記事にてKubernetesのサービスで利用するClusterIPとNodePortの違いについて説明しました。 その違いは K8sクラスタに所属していないマシンからポッド内に通信できるか否か です。本記事ではそこからさらに踏み込んで、「どのポートをどの環境…

【Kubernetes】kubeadmを利用してWorkerNodeを追加する手順

はじめに 以下の記事にてMasterNodeとWorkerNodeを1台ずつ構築しました。 本記事ではtokenの有効期限が切れた際にWorkerNodeを追加する流れを記載します。 環境情報 kubeadm 1.15 Tokenを再作成する必要がある Masterノードを構築した際に出たtoken情報をWor…

【Kubernetes】illegal base64 data at input byteというCSRオブジェクト生成エラー

事象 KubernetesにてYAMLファイルを用いてCSRを作成しようとした際に以下エラーで生成に失敗する。 Error from server (BadRequest): error when creating "test-csr.yaml": CertificateSigningRequest in version "v1beta1"cannot be handled as a Certific…

【Kubernetes】etcdctlによるバックアップとリストアの流れ

はじめに Kubernetesのバックアップツールであるetchctlを利用してバックアップ&リストアが可能です。 ドキュメントを見ると数多くのオプションを指定して実施していましたが、今回は最低限のオプションでどこまで動くかモ含めて確認ました。結論から言うと…

【Kubernetes】apply your changes to the latest version and try againというエラー

事象 yamlファイルをapplyすると以下エラーでapplyに失敗する。 Error from server (Conflict): error when applying patch: {"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"... ... for: "hoge.yaml": Operation cannot…

【Kubernetes】StaticPodのディレクトリの場所とその役割

はじめに Kubernetesの世界でPodを展開するには一般的にkubectl run podやkubectl apply -fを行います。 特殊な例としてcurlコマンドコマンドを押下することはあれ、基本的にはapiserverを介してPodをスケジュールしてもらいます。 一方、それとは別にPodを…

【Kubernetes】Taints/TolerationsとNodeAffinityの違い

はじめに NodeにあるLabelを元にPodのスケジュールを行うのがNodeAffinityで、NodeにあるTaintを元にPodのスケジュールを行うのがTolerationsです。この似通った「Taints/TolerationとNodeAffinityの違い」について分かりやすく解説します。尚、大まかな方針…


他の記事を読む