(O+P)ut

アウトプット



(O+P)ut

Output Log

IT技術-DevOps

【Kubernetes】Deploymentを例にOwnerReferencesを理解する

はじめに Kubernetesではkubectl create deployment nginx-dep --image nginxとデプロイメントを作成すると自動的にReplicaSetやPodが作成され、同デプロイメントを削除すれば自動的にReplicaSetやPodも削除されます。これはOwnerReferencesによってオブジェ…

【Kubernetes】特定Podを停止させずにレプリカセットから切り離す手順

はじめに Kubernetesではkubectl create deployment nginx-dep --image nginxとデプロイメントを作成すると自動的にReplicaSetも作成され、不具合が発生した場合もPodをdeleteすれば自動的に新たなPodが復旧します。ただ、PD対応等で特定のPodを一時的に退避…

【Kubernetes】kubectlではなくcurlコマンドで直接APIサーバと通信する

はじめに Kubernetesではkubectlコマンドを利用してマスターノードのAPIサーバと通信を行いますが、今回はkubectlコマンドではなくcurlコマンドで直接deploymentの削除であるkubectl delete deploymentに相当するリクエストを行ってみます。 コマンド実行環…

【Kubernetes入門】ConfigMapでPodの環境変数を設定する

はじめに Kubernetesではデータベースの接続先やアプリケーションのパラメータをConfigMapとしてPodとは別に管理することができます。 今回はコンテナ内の環境変数をConfigMapオブジェクトから設定する流れについて分かりやすく解説しました。 コマンド実行…

【Kubernetes】maxSurgeとmaxUnavailableとは?

はじめに Kubernetesではでデプロイ戦略はいくつかあり以下記事ではローリングアップデート(rollingUpdate)ということで順次新たなバージョンのPodが生成される動きを実践しました。 一方でこのようなデプロイ時の動きの詳細な制御を行うフィールドにmaxSu…

【Docker】複数バージョンのイメージを取得する

やりたいこと docker pull IMAGE_NAMEでlatestのタグが付いたイメージが入手できるが、最新のイメージではなく古いイメージを入手したい。 環境情報 Docker Version:19.03.5 やり方 --all-tags=trueを付与する。 $ docker pull --all-tags=true IMAGE_NAME以…

【Docker】デバッグツールを持ったSideCarを別コンテナにつける方法

やりたいこと 例えば以下のようなnetstatコマンドが打てないコンテナにて > docker run -t -i ubuntu root@652f2bab700c:/# netstat bash: netstat: command not found同コマンドが打てるようにする。 環境情報 Docker Version:19.03.5 やり方 接続したいコ…

【Kubernetes】The node was low on resource: ephemeral-storageとなってPodが停止する事象

事象 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】kubectl taint nodeでlabelをoverwriteしてみた

はじめに Kubernetesではノードにラベルを付与することができ、例えばテスト環境や本番環境のノードを明示的に分離することでPodのデプロイ先を明示的にスケジューリングすることができます。本記事ではPodにtolerationsを設定することで明示的にノードに載…

【Kubernetes】PodのQoSクラス:Guaranteed/Burstable/BestEffortについて

はじめに Kubernetesではコンテナを管理するためにコンテナが使用できるリソースを制限することが可能です。 それに伴いノードがコンテナに割り当てるリソースを管理することができますが、万が一ノードが割り当てられる以上のリソース要求があった場合はPod…

【Kubernetes入門】CoreDNSによる名前解決とは?

はじめに Kubernetesでは同じNamespaceに属するPodやデフォルトのドメインの名前解決にDNSを利用しています。本記事ではDockerDesktop環境にて「kube-dns」サービスによる名前解決の動きをPod内でpingコマンドを打つことで確認してみます。 環境情報 Windows…

【Kubernetes】Workerノードのdrain/uncordonを行う

はじめに Kubernetesでは構成サーバはマスターノードとワーカーノードに分かれており、kubectl get nodesにてそれぞれの一覧が確認できます。今回は以下のような構成にて1台のWorkerノードを一時的に切り離すべくdrainした後にuncordonする手順を紹介します…

【Kubernetes】kubelet&kubeadmをapt-getでインストールする

はじめに DockerDesktopのようにオールインワンのKubernetesを利用する場合はkubectlさえ利用できれば問題ないですが、マスターノードを自前で用意する場合にはkubeadm等のコマンドが必要です。今回はDebian系サーバに対してkubeletとkubeadmをインストール…

【Kubernetes入門】YAMLファイルのtemplateの意味

はじめに Kubernetesのyamlファイルの中にある「template」の文言、初学者の方には何を指しているのか分かりづらいと思います。それこそ私も以下のようにコメントアウトされるべき情報と思っていました。 # template size = S or M or L size = M今回はKuber…

【Docker】execでコマンド実行するユーザを変更する

やりたいこと 例えば以下のようにdb2コンテナにログインするとrootコマンドとなるが > docker exec -it db2 /bin/bash [root@62959d1446c6 /]#db2inst1ユーザで接続したい。 環境情報 > docker --version Docker version 19.03.5, build 633a0ea やり方 --us…

【Docker】コンテナイメージをアイランド環境に持ち込み起動する

はじめに インターネットに接続していない環境、いわゆるアイランド環境にてコンテナイメージを展開する方法を説明します。流れとしてはインターネットに接続している環境にてイメージをpullし、そのイメージをtarに固めて持ち込んで利用します。 環境情報 D…

【Kubernetes】永続化ボリュームPersistentVolumeClaimを利用する

はじめに コンテナは基本的にステートレスで削除してしまえば再度作成しても中で作成したファイルは消えています。が、Dockerでは例えば以下のように一部ファイルを外出しすることで永続的に利用できます。 Kubernetesにも永続ストレージという概念にてPersi…

【Kubernetes】NodePortとLoadBalancerの違い

はじめに 以下記事にてKubernetesのサービスで利用するClusterIPとNodePortの違いについて説明しました。 その違いは K8sクラスタに所属していないマシンからポッド内に通信できるか否か です。一方で上記の特徴を持つNodePortと同じくLoadBalancerでも同様…

【Kubernetes】nginxのPodへのcurlがEmpty reply from serverとなる事象

事象 Kubernetesにて立ち上げ済のnignxのPod&サービスを利用してcurlコマンドで接続を行うも以下エラーになる。 $ curl localhost curl: (52) Empty reply from server接続ポート(80)に誤りはなく > kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP…

【Heapster】Error in scraping containers from kubelet failed to get all container stats from...というエラー

事象 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でkubectl top pods/nodeを利用する

はじめに Kubernetesではポッドの状況を確認するためのHeapsterやmetrics-serverが導入されていない場合にkubectl topコマンドが利用できません。 本記事ではDocker Desktop環境にてHeapsterを導入し、kubectl top podsを利用できるようにするまでの流れにつ…

【Kubernetes】Recreateを指定するデプロイ方法

やりたいこと Kubernetesにおいて以下のようなロールアウト機能を用いたデプロイではなく 全てのポッドを一気に変更したい。 環境情報 Windows 10 Enterprise Docker Desktop 2.2.0 やり方 deploymentのyamlファイルに以下の文言を追記する。 strategy: type…

【Kubernetes入門】クラスターと名前空間の違い

はじめに Kubernete(以降K8s)では「クラスター」「名前空間(ネームスペース)」が似たような意味で利用されるのでこんがらがります。本記事ではそれらの違いを適宜コマンドを押下しながら分かりやすく説明しました。 コマンド実行環境 Windows 10 Enterpr…

【Kubernetes入門】kubectl config viewで参照しているファイル

はじめに 以下記事でDockerDesktopをインストールした環境にて Kubernetesクラスタの設定を確認するkubectl config viewについて使い方を簡単に説明します。 環境情報 Windows 10 Enterprise Docker Desktop 2.2.0 Kubernetesのマスターノード 例えばDockerD…

【Git】初プッシュ時にsrc refspec master does not match anyとエラーになる

事象 初めてGithubにgit pushを行おうとすると以下のようなエラーとなる。 $ git push -u origin master error: src refspec master does not match any error: failed to push some refs to 'https://github.com/.../.git' コマンド実行環境 > git --versio…

【Git】GitHubCLIでターミナル上でIssueを投稿/確認する

はじめに PRとIssueをコマンドラインで管理できるGitHub製のCLIの紹介記事です。 ブラウザ不要でGithub周りの情報を取得でき、PRやIssueを作成する際もメモ帳から投稿できます。 コマンド実行環境 Windows 10 Enterprise gh_0.6.4_windows_amd64.msi インス…

【Docker】docker runコマンドのPオプションとpオプションの違い

はじめに dockerコマンドのハンズオンにてnginxはよく利用されますが、コンテナ起動時のオプションにてPオプションやpオプションの付与が求められることがあります。本記事では初学者の方に向けて簡単なハンズオンとp/Pオプションがないと何が困るのかについ…

【Git】マージ時のコンフリクトを解決する流れ

はじめに Gitではブランチを分けて独立しながら開発することが可能ですが、同一箇所を修正した場合はマージをする際に検知する機能が存在しています。本記事では同一箇所を修正してコンフリクトが発生する流れをローカルの個人環境であえて発生させ、どのよ…

【Git】showコマンドによる特定ファイルの過去バージョンの確認方法

はじめに Gitではファイルの修正を適宜コミットすることでバージョン管理を行え、過去のコミット時に戻すことが可能です。一方で、過去のバージョンに戻すのではなくて中身のみを表示したい場合があります。本記事ではそれらの手法をハンズオン形式で説明し…

【Kubernetes】ローカルでbuildしたimageのコンテナがrepository does not existで起動できない

事象 ローカルでbuildして作成した独自イメージをyamlファイルで起動しようとすると以下のようにポッドが起動しない。 > kubectl get pods NAME READY STATUS RESTARTS AGE nginx-deployment-84f8547f85-fc5cw 0/1 ImagePullBackOff 0 XX 原因 Kubernetesが…


他の記事を読む