<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kubernetes on すてきな太陽になりたい</title><link>https://blog.sei-yo.jp/categories/kubernetes/</link><description>Recent content in Kubernetes on すてきな太陽になりたい</description><generator>Hugo</generator><language>ja-JP</language><lastBuildDate>Sun, 18 May 2025 21:32:31 +0900</lastBuildDate><atom:link href="https://blog.sei-yo.jp/categories/kubernetes/index.xml" rel="self" type="application/rss+xml"/><item><title>自宅のKubernetesサーバ用にメモリがたくさんほしい</title><link>https://blog.sei-yo.jp/engineer/2025/05/posts/home_kubernetes_requires_much_memories/</link><pubDate>Sun, 18 May 2025 21:32:31 +0900</pubDate><guid>https://blog.sei-yo.jp/engineer/2025/05/posts/home_kubernetes_requires_much_memories/</guid><description>&lt;p&gt;おうちでKubernetesクラスタを作って動かしているとメモリがたくさん欲しくなります。&lt;/p&gt;
&lt;p&gt;あるアプリケーションを動かしたいというような場合にKubernetes流にやろうとすると便利な管理機能も一緒に動かすのでリソース的にはオーバーヘッドがあります。冗長構成のためのオーバーヘッドや監視や管理のためのオーバーヘッドなどがあります。&lt;/p&gt;
&lt;p&gt;そういうものをなるべく使わないようにすることもできますが、それはそれで面倒ですし、それらを使うのは勉強の観点からも必要です。&lt;/p&gt;
&lt;p&gt;そういうわけで、あれもこれもやろうとするとどんどんメモリが欲しくなります。
足りないとOOM-Killerが発動してしまってこれも面倒なのでなんとかしたいものです。&lt;/p&gt;</description></item><item><title>Infrastructure as Code関連の書籍紹介（GWアドベントカレンダー 6日目）</title><link>https://blog.sei-yo.jp/engineer/2020/05/posts/infrastructure_as_codegw_6/</link><pubDate>Tue, 05 May 2020 03:23:11 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/05/posts/infrastructure_as_codegw_6/</guid><description>&lt;p&gt;この記事はGWアドベントカレンダーの6日目の記事です。&lt;/p&gt;
&lt;p&gt;IaCに関連する最近読んだ本の紹介です。 読んだ順に書いていますが、Ansible実践ガイドはまだ記事を書いていないのでここで簡単に紹介します。 Ansible を自由に利用できるようになるための基礎が幅広く記載されています。そのため、「インフラCI 実践ガイド」にもAnsibleが使われていますが、この内容を理解するのにも役立ちました。 また、これから新規にプレイブックを作るときの設計のポイントも記載されています。 Linuxサーバ向けだけでなく、Windowsやネットワーク機器向けの設定についても記載されており、これらを理解することでAnsibleのエコシステムや思想の理解が深まり様々な応用ができるようになります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2020/02/infrastructure-as-code.html"&gt;「Infrastructure as Code」&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2020/02/kubernetes.html"&gt;「しくみがわかるKubernetes」&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2020/03/infraci.html"&gt;「インフラCI 実践ガイド」&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ansible 実践ガイド 第3版&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>PC上でのIaC環境の概要（GWアドベントカレンダー 4日目）</title><link>https://blog.sei-yo.jp/engineer/2020/05/posts/pciacgw_4/</link><pubDate>Sun, 03 May 2020 01:56:15 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/05/posts/pciacgw_4/</guid><description>&lt;p&gt;この記事はGWアドベントカレンダーの4日目の記事です。&lt;/p&gt;
&lt;p&gt;自宅のPCにIaC環境を構築中ですが、その環境について少し説明します。&lt;/p&gt;
&lt;h1 id="使用するツール"&gt;使用するツール&lt;/h1&gt;
&lt;p&gt;1台の物理Linuxサーバ上にすべての環境を構築します。 仮想マシンはVagrant + Virtual Boxで構築します。 コンテナはDockerで構築します。 構築ツールとしてAnsibleを使います。 CI/CDを実現するためのツールとしてGitlab、Gitlab Runnerを使います。&lt;/p&gt;
&lt;h1 id="gitlabgitlab-runnerの構築"&gt;Gitlab、Gitlab Runnerの構築&lt;/h1&gt;
&lt;p&gt;GitlabとGitlab RunnerはAnsibleを使って、仮想マシンから作成します。 本番用とテスト用があり、テスト用の構築は本番用のGitlabのバックアップデータを使ってリストアすることで本番と同じデータを持つようにしています。&lt;/p&gt;
&lt;h1 id="物理linuxサーバの構築"&gt;物理Linuxサーバの構築&lt;/h1&gt;
&lt;p&gt;OSインストール後の各種設定類はAnsibleにまとめようと思っていますが、まだできていません。&lt;/p&gt;
&lt;h1 id="ansibleとvagrantの連携"&gt;AnsibleとVagrantの連携&lt;/h1&gt;
&lt;p&gt;Ansibleのプレイブック（Gitlabのパイプラインからの呼び出しや手動実行）によって、Vagrant経由で仮想マシンを作成することがあります。 しかし、AnsibleのInventory PluginとしてはVagrant用のものが正式にはありません。そのため、作成した仮想マシンに対してプレイブックを実行するためには何らかの方法を考える必要があります。 一つはInventory PluginもしくはScriptを作ること、もう一つは作成する仮想マシン情報をあらかじめインベントリファイルに記載しておくことが考えられます。 どちらの方法でも実現できそうですが、どのようにするか検討中です。&lt;/p&gt;
&lt;h1 id="今後の展望"&gt;今後の展望&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;物理Linuxサーバ構築用のパイプライン構築&lt;/li&gt;
&lt;li&gt;Kubernetesを動かす。 その上で、各種アプリケーションを動かす予定です。&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>「しくみがわかるKubernetes」を読んだ。</title><link>https://blog.sei-yo.jp/engineer/2020/02/posts/kubernetes/</link><pubDate>Fri, 07 Feb 2020 02:14:08 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/02/posts/kubernetes/</guid><description>&lt;p&gt;「しくみがわかるKubernetes」を読みました。&lt;/p&gt;
&lt;p&gt;ほんとに仕組みがわかった気になりました。 これまでminikubeでhello worldをやっただけの経験でしたが、kubernetesがどういう仕組みになっているかの全体像を掴むことができました。&lt;/p&gt;
&lt;p&gt;この本ではDockerなどのコンテナそのものについての説明はほとんどありません。&lt;br&gt;
コンテナそのものを知らないとそもそもkubernetesの良さもわからないかもしれませんが、&lt;br&gt;
この本で説明しているのはコンテナの管理をするkubernetesの仕組みです。 コンテナがどのような仕組みのものなのか、コンテナイメージはどのように作るのかというようなことは知らなくても読み進めることができると思います。&lt;/p&gt;
&lt;p&gt;しくみを説明する本ですので、kubernetsの全体像としてどのようなコンポーネントで構成されているのかや、それぞれのコンポーネントの役割が説明されています。&lt;br&gt;
また、Infrastructure as Codeの観点から、すべての定義をファイルに残すべきということも随所で述べてあります。&lt;br&gt;
本文中に登場する定義ファイルはダウンロードできるようになっており、実際に試すことも可能です。&lt;br&gt;
読者自身が実機で試す際も、細かな定義はすべてファイルに記載されているので、実際に打つコマンドはそれを適用するためのコマンドばかりです。&lt;/p&gt;
&lt;p&gt;Kubernetesの環境を自分で構築するのは大変ですが、Azureで提供されているAKS（Azure Kebernetes Service）を使うことで簡単に利用を開始できます。&lt;br&gt;
提供されているサンプルコードもAKS向けのものとなっているので、手軽に動作確認ができるようになっています。&lt;/p&gt;
&lt;p&gt;この本ではKubernetesの主要コンポーネントの紹介と構成検討のポイントなどが述べられています。&lt;br&gt;
含まれていないのは構築手順やオプションのコンポーネント等です。&lt;br&gt;
例えば、ネットワークやストレージのコンポーネントについてはあまり説明がありません。&lt;br&gt;
そのため、この本だけを見て自分でKubernetesを構築したいという方には向きませんが、クラウド上のマネージドサービスとしてKubernetesを使いたいという人には向いていると思います。&lt;br&gt;
自分で環境を構築したいという人でも、この本を読むことで全体像がイメージできるようになりますので、具体的な検討へのステップとしては有効と思います。&lt;/p&gt;</description></item><item><title>今年実現したいこと</title><link>https://blog.sei-yo.jp/engineer/2020/01/posts/post_4/</link><pubDate>Wed, 08 Jan 2020 00:44:14 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2020/01/posts/post_4/</guid><description>&lt;p&gt;今年実現したいことは以下の通り。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自宅サーバのコンテナ化&lt;/li&gt;
&lt;li&gt;Kubernetesによるコンテナ管理&lt;/li&gt;
&lt;li&gt;GoでWebサービス作成&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>kubenetes導入顛末記 その２</title><link>https://blog.sei-yo.jp/engineer/2018/08/posts/kubenetes_1/</link><pubDate>Thu, 23 Aug 2018 22:45:03 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2018/08/posts/kubenetes_1/</guid><description>&lt;p&gt;&lt;a href="https://www.sei-yo.jp/blog/engineer/2018/08/kubenetes.html" title="その１"&gt;その１&lt;/a&gt;でとりあえず動作するところまで確認できたので、ここからはチュートリアルに沿ってやってみる。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://kubernetes.io/docs/tutorials/hello-minikube/"&gt;https://kubernetes.io/docs/tutorials/hello-minikube/&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="nodeアプリケーション作成"&gt;nodeアプリケーション作成&lt;/h1&gt;
&lt;p&gt;server.jsというhello worldを作成。&lt;/p&gt;
&lt;p&gt;node server.jsで動作確認して問題ないことを確認。&lt;/p&gt;
&lt;h1 id="docker-containerイメージ作成"&gt;Docker Containerイメージ作成&lt;/h1&gt;
&lt;p&gt;Dockerfileを作成。&lt;/p&gt;
&lt;p&gt;以下のコマンドで環境変数を設定。そしてビルド。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;eval $(minikube docker-env) 
docker build -t hello-node:v1 . 
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id="heading"&gt;`&lt;/h1&gt;
&lt;p&gt;`Deployment作成&lt;/p&gt;
&lt;p&gt;以下のコマンドでPodも作成されて動いているらしい。&lt;/p&gt;
&lt;p&gt;でも、ローカルIPからしか接続できないらしい。試しにminikube sshでログインしてみたけども8080ポートで待ち受けているプロセスはなかった。。nodeコマンドは動作中だったので他のポートで待っているみたいだけど。どこで変換しているのか。。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl run hello-node --image=hello-node:v1 --port=8080 --image-pull-policy=Never 
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id="service作成"&gt;Service作成&lt;/h1&gt;
&lt;p&gt;外からもアクセスできるようにServiceを作成する。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl expose deployment hello-node --type=LoadBalancer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以下のコマンドで得られるURLにアクセスすると無事に表示される。どのポートで待っているのかの謎はこれで解ける。でも、ポートが8080ではないんだな。なんでだろ。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;minikube service --url hello-node
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;アクセスログは以下で参照できた。pod-nameも補完してくれて良い感じ。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl logs &amp;lt;POD-NAME&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id="アプリの更新"&gt;アプリの更新&lt;/h1&gt;
&lt;p&gt;Docker Containerイメージを作成してDeploymentを更新。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker build -t hello-node:v2 . 
kubectl set image deployment/hello-node hello-node=hello-node:v2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;これだけで新しいイメージが使われるようになった。Dashboardでも確認。&lt;/p&gt;
&lt;h1 id="heapster-addonの有効化"&gt;heapster addonの有効化&lt;/h1&gt;
&lt;p&gt;性能監視用のaddonらしい。以下で有効にするとdashboardのoverviewでCPUとメモリのグラフが表示されて、ほかのところにもそういった情報が追加される。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;minikube addons enable heapster 
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id="clean-up"&gt;Clean up&lt;/h1&gt;
&lt;p&gt;作成したものを削除する。&lt;/p&gt;</description></item><item><title>kubenetes導入顛末記 その１</title><link>https://blog.sei-yo.jp/engineer/2018/08/posts/kubenetes/</link><pubDate>Wed, 22 Aug 2018 20:25:04 +0000</pubDate><guid>https://blog.sei-yo.jp/engineer/2018/08/posts/kubenetes/</guid><description>&lt;h1 id="前置き"&gt;前置き&lt;/h1&gt;
&lt;p&gt;コンテナに触れようと思い、kubenetesを導入することにしたので、その記録。&lt;br&gt;
導入先はUbuntu 16.04の物理サーバ1台です。&lt;/p&gt;
&lt;h1 id="導入方法の決定"&gt;導入方法の決定&lt;/h1&gt;
&lt;p&gt;kubenetesの導入方法はいろいろあるようですが、とりあえず動かしたいならminikubeがおすすめと記載があるのでそれに従う。&lt;/p&gt;
&lt;p&gt;選び方は&lt;a href="https://kubernetes.io/docs/setup/pick-right-solution/" title="kubenetesの導入方法の選択"&gt;こちら&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;選んだのは、&lt;a href="https://kubernetes.io/docs/setup/minikube/" title="setup minikube"&gt;Running Kubernetes Locally via Minikube&lt;/a&gt;。&lt;/p&gt;
&lt;h1 id="kubenetes導入の前にhypervisor導入"&gt;Kubenetes導入の前にHypervisor導入&lt;/h1&gt;
&lt;p&gt;手順を見ていくと最初にHypervisorを入れろとある。ただ、VM上に構築しないという手もあるらしい。&lt;br&gt;
記載順などからVirtual Boxが良さそうなのでVirtualBoxを採用。&lt;/p&gt;
&lt;p&gt;ということで、まずはVirtualBoxの導入。以下のURLに従ってaptのsourceを指定してインストール。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.virtualbox.org/wiki/Linux_Downloads"&gt;https://www.virtualbox.org/wiki/Linux_Downloads&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="minikube導入の前にkubectl導入"&gt;minikube導入の前にkubectl導入&lt;/h1&gt;
&lt;p&gt;以下の通り、こちらもaptのsourceを設定してinstall。&lt;/p&gt;
&lt;p&gt;&lt;a href="https://kubernetes.io/docs/tasks/tools/install-kubectl/"&gt;https://kubernetes.io/docs/tasks/tools/install-kubectl/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ちなみにこの状態で kubectl cluster-infoを実行すると以下の通り。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ kubectl cluster-info 
Kubernetes master is running at http://localhost:8080 
 
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'. 
The connection to the server localhost:8080 was refused - did you specify the right host or port?
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id="kubectlのautocompletion設定"&gt;kubectlのautocompletion設定&lt;/h1&gt;
&lt;p&gt;ここも前述のガイドにならって設定する。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo &amp;quot;source &amp;lt;(kubectl completion bash)&amp;quot; &amp;gt;&amp;gt; ~/.bashrc 
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id="minikubeの導入"&gt;minikubeの導入&lt;/h1&gt;
&lt;p&gt;ここでようやくminikubeの導入。&lt;/p&gt;</description></item></channel></rss>