DevOps-Kubernetes
事象 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ではServiceにて type: LoadBalancerと記載して起動するも、External-IPの箇所がpendingのままでIPアドレスが割り当てられません。本記事では以下のベアメタルサーバで動作するKubernetesにロードバランサ機能…
はじめに KubernetesではRBAC(Role Based Access Control)という機構で権限を制御しています。本記事では、DockerDesktopでデフォルトで用意されるdocker-desktopの証明書情報を確認することでdocker-desktopユーザがなぜadmin権限を持っているのか?につ…
はじめに Kubernetesではクラスター全体もしくはネームスペースに対して行える操作を管理するためにRBAC(Role Based Access Control)という機構があり、具体的には権限を定義したロールとユーザを紐づけることで権限を制御します。本記事では、自分がどの…
はじめに Nodeのファイルシステムを利用するhostPathについて、指定したマウント先が存在するかしないかでの実機上の動きを確認しました。 環境情報 kubeadm 1.15 pathで指定したディレクトリが存在しない場合 例えばYAMLは以下で containers: volumeMounts:…
はじめに kubeadmでインストールした環境ではkube-proxyはPodとして各ノードに展開され、それはデーモンセットで管理されています。 本記事ではkube-proxyに関する情報を実機で確認しながら再起動する流れを整理しました。 環境情報 kubeadm 1.15 kube-proxy…
事象 Podを起動するもSTATUSがEvictedとなっておりdescribeで詳細を確認すると以下メッセージで起動に失敗している。 Status : Failed Reason : Evicted Message : Pod The node had condition: [DiskPressure].ただし展開しようとしているNodeのディスク領…
はじめに Kubernetesではetcdctlを利用してクラスター情報のバックアップ&リストアが可能ですが、実際に中に格納されているデータの値を表示させることができます。本記事では例として、etcdの中に格納されたnamespaceの情報を確認しました。 環境情報 kube…
事象 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が紐…
事象 事前に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…
はじめに kubeadmで用意したノードのkubeadm/kubelet/kubectlをaptでアップグレードした際のメモです。 環境情報 kubectl v1.17.0 kubeadm v1.17.0 kubelet v1.17.0 kubeadmのバージョンアップ バージョンアップ前にdrainコマンドでPodがスケジュールされな…
やりたいこと Nodeに付与されたラベルを外す。例えば以下のようなcolorラベルがついているとする。 # kubectl get node test01 --show-lables ... LABELS ... beta.kubernetes.io/arch=amd64.beta.kubernetes.io/os=linux,coloer=blue,.... 環境情報 kubectl…
事象 Kubeadmで構築した環境にてPod内の名前解決に失敗する。 具体的には/etc/resolv.confにcore-dnsのサービスであるkube-dnsのIPが記載されているにも関わらずPodからの通信に失敗する。 # nslookup testnode ;; connection timed out ; no servers could …
はじめに kubectlコマンドのオプションにて-o custom-columns=HOGE:...で任意の列を出力することが可能です。 本記事ではjqコマンドと比較しながらcustom-columnsを利用して特定の値を抜き出してみます。 環境情報 kubectl v1.15.5 想定環境 $ kubectl get p…
はじめに 以下記事にてKubernetesのサービスで利用するClusterIPとNodePortの違いについて説明しました。 その違いは K8sクラスタに所属していないマシンからポッド内に通信できるか否か です。本記事ではそこからさらに踏み込んで、「どのポートをどの環境…
はじめに 以下の記事にてMasterNodeとWorkerNodeを1台ずつ構築しました。 本記事ではtokenの有効期限が切れた際にWorkerNodeを追加する流れを記載します。 環境情報 kubeadm 1.15 Tokenを再作成する必要がある Masterノードを構築した際に出たtoken情報をWor…
事象 KubernetesにてYAMLファイルを用いてCSRを作成しようとした際に以下エラーで生成に失敗する。 Error from server (BadRequest): error when creating "test-csr.yaml": CertificateSigningRequest in version "v1beta1"cannot be handled as a Certific…
はじめに Kubernetesのバックアップツールであるetchctlを利用してバックアップ&リストアが可能です。 ドキュメントを見ると数多くのオプションを指定して実施していましたが、今回は最低限のオプションでどこまで動くかモ含めて確認ました。結論から言うと…
事象 kubelet.log上にて下記のようなエラーが出る。 ... kubelet.service[6728]: XX .. remote_runtime.go:392] ExecSync 'XX' from runtime service failed: rpc error: code = DeadlineExceeded desc = failed to exec in container: timeout 1s exceeded:…
事象 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の世界でPodを展開するには一般的にkubectl run podやkubectl apply -fを行います。 特殊な例としてcurlコマンドコマンドを押下することはあれ、基本的にはapiserverを介してPodをスケジュールしてもらいます。 一方、それとは別にPodを…
はじめに NodeにあるLabelを元にPodのスケジュールを行うのがNodeAffinityで、NodeにあるTaintを元にPodのスケジュールを行うのがTolerationsです。この似通った「Taints/TolerationとNodeAffinityの違い」について分かりやすく解説します。尚、大まかな方針…
はじめに Kubernetesにてマスター&ワーカー構成を用意した際に Podの展開はデフォルトではWorkerNodeに行われます。本記事では「なぜMasterにはPodがスケジュールされないのか?」という素朴な疑問の解説を行います。 環境情報 NAME STATUS ROLES AGE VERSI…
事象 Podを起動するもpodが以下エラーで起動しない。 kubectl get pod NAME READY STATUS ... nginx-xx 0/1 Pending 環境情報 kubectl v1.18 原因/対応策 Materにてschedulerが起動に失敗している $ kubectl get componentstatus NAME STATUS MESSAGE ERROR …
事象 複数ノードの環境でDeploymentを起動するもpodが以下エラーで起動しない。 kubectl get pod NAME READY STATUS ... nginx-xx 0/1 ErrImageNeverPull尚、ローカルのImageから取得するために以下を記載している。 imagePullPolicy: Never 環境情報 kubect…
はじめに 調査用のPodをKubernetesにて起動したい場合は以下のように起動でき $ kubectl run busybox --image=busybox --image-pull-policy=IfNotPresent --restart=Never --tty -i If you don't see a command prompt, try pressing enter. / # hostname bu…
事象 Kubernetesクラスターに対し、YAMLファイルを適用すると以下のエラーで失敗する。 $ kubectl apply -f busybox.yaml error: error parsing busybox.yaml: error conberting YAML to JSON: yaml: line 22; found a tab caharacter that violates indenta…
事象 デプロイメントを作成するも $ kubectl create deployment nginx-dep --image=nginx deployment.apps/nginx-dep created $ kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE nginx-dep 0/1 0 0 xs $ kubectl get pod No resources found in…
事象 PodのステータスがPending状態でkubectl describe podで確認すると以下のようになっている。 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 43s (x2 over 43s) default-scheduler 0/2 nodes are avail…
はじめに 下記の公式サイトを参考に2つのUbuntuサーバをMasterNodeとWorkerNodeとして構築しました。 環境情報 Ubuntu 20.04 LTS はじめに 環境情報 kubeadm以下必要ツールをインストールする kubeadmを実行してみる MasterNodeを構築する WorkerNodeを構築…