DevOps-Kubernetes
やりたいこと kubectlコマンドのサブコマンドを[TAB]キーで補完できるようにしたい。 環境情報 $ kubectl version ... Client Version: version.Info{Major:"1", Minor:"17", ...bash --version GNU bash, version 4.4.20(1)-release (x86_64-pc-linux-gnu) …
はじめに Kubernetesではkubectl create deployment nginx-dep --image nginxとデプロイメントを作成すると自動的にReplicaSetやPodが作成され、同デプロイメントを削除すれば自動的にReplicaSetやPodも削除されます。これはOwnerReferencesによってオブジェ…
はじめに Kubernetesではkubectl create deployment nginx-dep --image nginxとデプロイメントを作成すると自動的にReplicaSetも作成され、不具合が発生した場合もPodをdeleteすれば自動的に新たなPodが復旧します。ただ、PD対応等で特定のPodを一時的に退避…
はじめに Kubernetesではkubectlコマンドを利用してマスターノードのAPIサーバと通信を行いますが、今回はkubectlコマンドではなくcurlコマンドで直接deploymentの削除であるkubectl delete deploymentに相当するリクエストを行ってみます。 コマンド実行環…
はじめに Kubernetesではデータベースの接続先やアプリケーションのパラメータをConfigMapとしてPodとは別に管理することができます。 今回はコンテナ内の環境変数をConfigMapオブジェクトから設定する流れについて分かりやすく解説しました。 コマンド実行…
はじめに Kubernetesではでデプロイ戦略はいくつかあり以下記事ではローリングアップデート(rollingUpdate)ということで順次新たなバージョンのPodが生成される動きを実践しました。 一方でこのようなデプロイ時の動きの詳細な制御を行うフィールドにmaxSu…
事象 Podを起動するもkubectl describe podにて以下メッセージが見られ Warning FailedScheduling 3s (x4 over 26s) default-scheduler 0/3 nodes are available: 3 node(s) had taints that the pod didn't tolerate.展開先候補のNodeをkubectl describe no…
はじめに Kubernetesではノードにラベルを付与することができ、例えばテスト環境や本番環境のノードを明示的に分離することでPodのデプロイ先を明示的にスケジューリングすることができます。本記事ではPodにtolerationsを設定することで明示的にノードに載…
はじめに Kubernetesではコンテナを管理するためにコンテナが使用できるリソースを制限することが可能です。 それに伴いノードがコンテナに割り当てるリソースを管理することができますが、万が一ノードが割り当てられる以上のリソース要求があった場合はPod…
はじめに Kubernetesでは同じNamespaceに属するPodやデフォルトのドメインの名前解決にDNSを利用しています。本記事ではDockerDesktop環境にて「kube-dns」サービスによる名前解決の動きをPod内でpingコマンドを打つことで確認してみます。 環境情報 Windows…
はじめに Kubernetesでは構成サーバはマスターノードとワーカーノードに分かれており、kubectl get nodesにてそれぞれの一覧が確認できます。 今回は以下のような構成のクラスターにて1台のWorkerを一時的に切り離すべくdrainした後にuncordonする手順を紹介…
はじめに DockerDesktopのようにオールインワンのKubernetesを利用する場合はkubectlさえ利用できれば問題ないですが、マスターノードを自前で用意する場合にはkubeadm等のコマンドが必要です。今回はDebian系サーバに対してkubeletとkubeadmをインストール…
はじめに Kubernetesのyamlファイルの中にある「template」の文言、初学者の方には何を指しているのか分かりづらいと思います。それこそ私も以下のようにコメントアウトされるべき情報と思っていました。 # template size = S or M or L size = M今回はKuber…
はじめに コンテナは基本的にステートレスで削除してしまえば再度作成しても中で作成したファイルは消えています。が、Dockerでは例えば以下のように一部ファイルを外出しすることで永続的に利用できます。 Kubernetesにも永続ストレージという概念にてPersi…
はじめに 以下記事にてKubernetesのサービスで利用するClusterIPとNodePortの違いについて説明しました。 その違いは K8sクラスタに所属していないマシンからポッド内に通信できるか否か です。一方で上記の特徴を持つNodePortと同じくLoadBalancerでも同様…
事象 Kubernetesにて立ち上げ済のnignxのPod&サービスを利用してcurlコマンドで接続を行うも以下エラーになる。 $ curl localhost curl: (52) Empty reply from server接続ポート(80)に誤りはなく > kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP…
事象 Podのリソース(CPU/Memory)を確認すべくHeapsterをデプロイするも以下エラーで正常に利用ができない。 > kubectl logs -n kube-system heapster-d75f6848c-xbtf7 ... E0505 XX 1 manager.go:101] Error in scraping containers from kubelet:192.168.…
はじめに Kubernetesではポッドの状況を確認するためのHeapsterやmetrics-serverが導入されていない場合にkubectl topコマンドが利用できません。 本記事ではDocker Desktop環境にてHeapsterを導入し、kubectl top podsを利用できるようにするまでの流れにつ…
はじめに カナリアリリース/カナリーリリース(Canary Release)とはサービスを一部ユーザーのみが利用できるようにリリースし、問題がないことを確認しながら段階的に全体に向けて展開していくデプロイ手法を指します。本記事では2種類のnginxのバージョン…
やりたいこと Kubernetesにおいて以下のようなロールアウト機能を用いたデプロイではなく 全てのポッドを一気に変更したい。 環境情報 Windows 10 Enterprise Docker Desktop 2.2.0 やり方 deploymentのyamlファイルに以下の文言を追記する。 strategy: type…
はじめに Kubernete(以降K8s)では「クラスター」と「名前空間(ネームスペース)」が似たような意味で利用されるケースがあり、初学者の人が困惑する場合があります。本記事ではそれらの違いを適宜コマンドを押下しながら分かりやすく説明しました。 コマ…
はじめに 以下記事でDockerDesktopをインストールした環境にて Kubernetesクラスタの設定を確認するkubectl config viewについて使い方を簡単に説明します。 環境情報 Windows 10 Enterprise Docker Desktop 2.2.0 Kubernetesのマスターノード 例えばDockerD…
事象 ローカルでbuildして作成した独自イメージをyamlファイルで起動しようとすると以下のようにポッドが起動しない。 > kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-84f8547f85-fc5cw 0/1 ImagePullBackOff 0 XX 原因 Kubernetesが…
事象 Db2と接続するJava アプリにてSQLCODE805/SQLSTATE51002エラーが発生する。 [err] java.sql.SQLException: DB2 SQL Error: SQLCODE=-805, SQLSTATE=51002, SQLERRMC=NULLID.SYSSN200 0X5359534C564C3031, DRIVER=4.26.14 DSRA0010E: SQL State = 51002,…
はじめに minikubeにログインする際はminikube sshを用いますが ログイン時はdockerユーザであるためコマンド実行時に権限不足となる場合があります。本記事はKubernetes関連の設定ファイルが格納される /etc/kubernetes配下を調査した結果をシェアします。 …
はじめに Kubernetesの世界ではServiceという概念があり、そのServiceの中のタイプとしてClusterIPやNodePortがあります。本記事では初学者の方に向けてClusterIPやNodePortとはなんぞや?という点について分かりやすく解説しました。 コマンド実行環境 Kube…
はじめに マニフェストに記載したレプリカ数を維持してサービスを継続提供しながら、機能修正をリリースするポッドコントロールとして、ロールアウトと呼ばれるものがあります。 今回は、nginxのバージョン1.7.9をnginxの提供は維持したまま1.7.8に落とす流…
はじめに minikube上の状況を確認したり、ローカルからファイルを配置する時に便利なのがSSH/SCPです。 本記事では「minikube ssh」で何故SSHができるのかというところから掘り下げて説明し、最後に手順を紹介します。 minikube sshでSSHができる仕組み mini…
事象 minikubeを起動しようとしたところ以下エラーで失敗する $ minikube start * minikube v1.6.2 on Microsoft Windows 10 Enterprise 10.0.18362 Build 18362 * Selecting 'virtualbox' driver from user configuration (alternates: [hyperv]) * X Unabl…
はじめに k8sではオブジェクトの理想状態をマニフェストとして宣言することで、各コンポーネントがその理想状態を実現すべく良しなに動いてくれます。本記事ではnginxのサンプルマニフェストにて、Deploymentコントローラー(Pod&Replica)をminikubeで動か…