<?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 Alicey's blog</title><link>https://blog.alicey.dev/tags/kubernetes/</link><description>Recent content in Kubernetes on Alicey's blog</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Fri, 27 Sep 2024 07:59:11 +0900</lastBuildDate><atom:link href="https://blog.alicey.dev/tags/kubernetes/index.xml" rel="self" type="application/rss+xml"/><item><title>1つのKubernetesクラスタにingress-nginxを2個以上デプロイする</title><link>https://blog.alicey.dev/2024/09/1kubernetesingress-nginx2.html</link><pubDate>Fri, 27 Sep 2024 07:29:00 +0900</pubDate><guid>https://blog.alicey.dev/2024/09/1kubernetesingress-nginx2.html</guid><description>&lt;p> こんにちは。&lt;br>今回は、自宅K8sでingress-nginxを2つデプロイしたので備忘録として残しておきます。&lt;br>Service: LBが使える前提です。ない場合はMetalLBなどで作成しましょう。&lt;/p></description></item><item><title>【Kubernetes 勉強日記】CustomControllerでNginxのDeploymentを作る。</title><link>https://blog.alicey.dev/2022/03/kubernetes-customcontrollernginxdeploym.html</link><pubDate>Fri, 11 Mar 2022 21:05:00 +0900</pubDate><guid>https://blog.alicey.dev/2022/03/kubernetes-customcontrollernginxdeploym.html</guid><description>&lt;p>Kubernetes歴数ヶ月、CustomController歴2週間弱のよわよわアリシィです。&lt;div>今回はタイトルの通り、CustomControllerでNginxのDeploymentを作成する環境を作ったのですが、なかなかうまく行かなかったので、日記がてらハマった部分を残しておきます。&lt;/div>&lt;div>技術的な解説は、他の詳しい文献を当たってください。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>完成品は&lt;a href="https://github.com/Alicey0719/kubecon-prac/tree/20dcf20d1a86d7db698a21656ee9541864d54440" target="_blank">こちら&lt;/a>です。&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2022/03/kubernetes-customcontrollernginxdeploym/img/bcbfa95cfbb3bc9a_hu13861902147283763482.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2022/03/kubernetes-customcontrollernginxdeploym/img/bcbfa95cfbb3bc9a_hu13861902147283763482.webp"
 alt=""
 width="787"
 height="433"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>学習にあたり、以下文献を参考にしました。&lt;/div>&lt;div>&lt;ul>&lt;li>&lt;a href="https://amzn.to/3tRGg5t" rel="nofollow" target="_blank">&lt;b>実践入門 Kubernetesカスタムコントローラーへの道&lt;/b>&lt;/a>&lt;/li>&lt;li>&lt;a href="https://book.kubebuilder.io/introduction.html" rel="nofollow" target="_blank">&lt;b>The Kubebuilder Book&lt;/b>&lt;/a>&lt;/li>&lt;li>&lt;a href="https://zoetrope.github.io/kubebuilder-training/" rel="nofollow" target="_blank">つくって学ぶKubebuilder&lt;/a>&lt;/li>&lt;li>&lt;a href="https://hackmd.io/@h4wKR5OGRjquop_DpwjBcQ/Sk9oK03du" rel="nofollow" target="_blank">【wantedly】custom controllerを使ってk8sを学ぶハンズオン&lt;/a>&lt;/li>&lt;/ul>&lt;div>&lt;br>&lt;/div>&lt;/div>&lt;h2>ハマりポイント1&lt;/h2>&lt;div>ハマったポイント１は、GoのBuildが通らないといった現象です。&lt;/div>&lt;div>こちらは、エラーコードを読んでも内容をつかめず、どうしたら良いかわからなかったのですが、原因は開発環境(VM)のストレージ不足でした。&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2022/03/kubernetes-customcontrollernginxdeploym/img/1b2514085c5741a2_hu15058831152146419120.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2022/03/kubernetes-customcontrollernginxdeploym/img/1b2514085c5741a2_hu15058831152146419120.webp"
 alt=""
 width="721"
 height="186"
 loading="lazy" decoding="async">
 &lt;/a>&lt;div>&lt;br>&lt;/div>CustomController開発関係ないじゃん&amp;hellip;という部分で躓きました 苦笑&lt;/div>&lt;div>このあとは、手元のMacBookで作業しました。&lt;/div>&lt;div>余談ですが、CustomController開発において、手軽に潰せる&lt;a href="https://kind.sigs.k8s.io/" rel="nofollow" target="_blank">Kind&lt;/a>が便利だと改めて実感しました。CNIの検証等には使いづらいですが..&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;h2>ハマりポイント2&lt;/h2>&lt;div>同じくBuildが通らない現象ですが、&lt;/div>&lt;div>サンプルコードを真似ているにも関わらず、&lt;b>SetupWithManager&lt;/b>の&lt;b>&lt;a href="https://github.com/Alicey0719/kubecon-prac/blob/20dcf20d1a86d7db698a21656ee9541864d54440/controllers/nginx_controller.go#L196-L197" target="_blank">mgr.GetFieldIndexer().IndexField&lt;/a>&lt;/b>で引数に渡している値が違うと怒られるパターンになります。&lt;/div>&lt;div>こちらはどうやら、KuberbuilderのVersion起因のようで、私はKuberbuilder3を使っていたのですが、サンプルコードはKuberbuilder2系のものだったようです。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;ul>&lt;li>&lt;b>&lt;a href="https://book.kubebuilder.io/migration/migration_guide_v2tov3.html#migrate-the-controllers" rel="nofollow" target="_blank">Migration from v2 to v3&lt;/a>&lt;/b>&lt;/li>&lt;/ul>&lt;div>を参考にV3相当の呼び出し方に&lt;a href="https://github.com/Alicey0719/kubecon-prac/commit/4c8073b6148ef8a7d8c723225a8b3c8dfc4cfd9e?diff=unified" target="_blank">変更&lt;/a>したところ、問題なく動作しました。&lt;/div>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>以上、KubernetesCustomController学習Part1的な日記でした。&lt;/div>&lt;/div>&lt;div>次は、このControllerにServiceやConfigMapを内包していければと思います。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>ばいち。&lt;/div>&lt;/p></description></item><item><title>流行りの「おうちKubernetesクラスタ」やってみた</title><link>https://blog.alicey.dev/2022/02/kubernetes.html</link><pubDate>Sat, 19 Feb 2022 16:22:00 +0900</pubDate><guid>https://blog.alicey.dev/2022/02/kubernetes.html</guid><description>&lt;p> こんにちは。&lt;br>今回は、RaspberryPi4が2台手に入ったので、「おうちKubernetesクラスタ」を構築してみたいと思います。「おうちKubernetes」といえば、株式会社サイバーエージェントの「&lt;a href="https://developers.cyberagent.co.jp/blog/archives/27443/" target="_blank">おうちKubernetesインターン&lt;/a>」が有名かと思いますので、気になる方は覗いてみてください。&lt;/p></description></item><item><title>【Kubernetes】[pod cidr not assigned] flannelインストール時にハマったこと。</title><link>https://blog.alicey.dev/2022/02/k8s-flannel.html</link><pubDate>Tue, 01 Feb 2022 01:39:00 +0900</pubDate><guid>https://blog.alicey.dev/2022/02/k8s-flannel.html</guid><description>&lt;p>&lt;a href="https://github.com/kelseyhightower/kubernetes-the-hard-way" rel="nofollow" target="_blank">Kubernetes The Hard Way&lt;/a>を参考にしたオンプレKubernetsクラスタに&lt;a href="https://github.com/flannel-io/flannel" rel="nofollow" target="_blank">flannel&lt;/a>を構築しようとしたところ、ハマった点があるので、ご紹介します。&lt;/p>&lt;p>&lt;a href="https://blog.alicey.dev/2021/12/kubernetescalico.html" target="_blank">前回の記事(【Kubernetes】Calicoインストール時にハマったこと。)&lt;/a>も似た内容を取り扱っているため、参考にしていただけると嬉しいです。&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;h2>エラー内容&lt;/h2>&lt;div>各ノードで&lt;/div>&lt;div>&lt;b>sudo sysctl net.ipv4.conf.all.forwarding=1&lt;/b>&lt;/div>&lt;div>&lt;b>sudo sysctl net.ipv6.conf.all.forwarding=1&lt;/b>&lt;br>を実行し、&lt;/div>&lt;div>&lt;b>kube-flannel.yml&lt;/b>を&lt;b>apply&lt;/b>したところ、下記画像のようにクラッシュし、再起動を繰り返します。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2022/02/k8s-flannel/img/58e828436cf2904a_hu4394775999323284024.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2022/02/k8s-flannel/img/58e828436cf2904a_hu4394775999323284024.webp"
 alt=""
 width="636"
 height="93"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;div>エラー内容は、&lt;br>[&lt;b>Error registering network: failed to acquire lease: node "*NodeName*" pod cidr not assigned&lt;/b>]&lt;br>となっており、&lt;b>PodCIDR&lt;/b>が設定されていないといった旨を示しています。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2022/02/k8s-flannel/img/90cad8878654e914_hu7716610413010456336.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2022/02/k8s-flannel/img/90cad8878654e914_hu7716610413010456336.webp"
 alt=""
 width="1420"
 height="339"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>改善方法&lt;/h2>&lt;div>&lt;a href="https://blog.alicey.dev/2022/02/k8s-flannel/img/dd4582bbf27a3474_hu4942060307044828549.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2022/02/k8s-flannel/img/dd4582bbf27a3474_hu4942060307044828549.webp"
 alt=""
 width="1025"
 height="749"
 loading="lazy" decoding="async">
 &lt;/a>&lt;div class="separator">&lt;a href="https://github.com/kelseyhightower/kubernetes-the-hard-way/blob/master/docs/08-bootstrapping-kubernetes-controllers.md#configure-the-kubernetes-controller-manager" rel="nofollow" target="_blank">Configure the Kubernetes Controller Manager&lt;/a>&lt;br>&lt;/div>&lt;br>&lt;a href="https://blog.alicey.dev/2022/02/k8s-flannel/img/6f9162f841680d8b_hu3486704972641404885.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2022/02/k8s-flannel/img/6f9162f841680d8b_hu3486704972641404885.webp"
 alt=""
 width="576"
 height="196"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>上記のファイルに変更を加えることで改善します。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h3>手順&lt;/h3>&lt;div>&lt;ol>&lt;li>&lt;b>sudo vi /etc/systemd/system/kube-controller-manager.service&lt;/b> &lt;br>でエディタを開く&lt;/li>&lt;li>&lt;b>--allocate-node-cidrs=true \&lt;/b> &lt;br>を追記する&lt;/li>&lt;li>保存する&lt;/li>&lt;li>&lt;b>sudo systemctl daemon-reload&lt;br>sudo systemctl restart kube-controller-manager&lt;/b> &lt;br>で再読み込みする&lt;/li>&lt;/ol>&lt;/div>&lt;div>(すべてのノードで行います。)&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>結果&lt;/h2>&lt;div>&lt;a href="https://blog.alicey.dev/2022/02/k8s-flannel/img/fc5128365fa11d30_hu2117142756630235382.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2022/02/k8s-flannel/img/fc5128365fa11d30_hu2117142756630235382.webp"
 alt=""
 width="1413"
 height="588"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;div>正常に動作するようになりました。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>初心者殺しだ...ばいち。&lt;/div></description></item><item><title>【Kubernetes】Calicoインストール時にハマったこと。</title><link>https://blog.alicey.dev/2021/12/kubernetescalico.html</link><pubDate>Mon, 06 Dec 2021 11:12:00 +0900</pubDate><guid>https://blog.alicey.dev/2021/12/kubernetescalico.html</guid><description>&lt;p>&lt;/p>&lt;a href="https://blog.alicey.dev/2021/12/kubernetescalico/img/56d6665b2ffb5e81_hu879352853489370369.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/12/kubernetescalico/img/56d6665b2ffb5e81_hu879352853489370369.webp"
 alt=""
 width="703"
 height="650"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br> 先日、&lt;a href="https://github.com/kelseyhightower/kubernetes-the-hard-way" rel="nofollow" target="_blank">Kubetenetes-The-Hard-Way&lt;/a>&lt;span>(オンプレ3台構成にアレンジしてます)&lt;/span>を行い、初めてKubernetes触れました。その後、ネットワーク周りで遊ぶために&lt;a href="https://www.tigera.io/project-calico/" rel="nofollow" target="_blank">Calico&lt;/a>をインストールしようとしたところ、若干ハマった部分があるので、簡単にご紹介します。&lt;p>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;h2>症状&lt;/h2>&lt;div>&lt;a href="https://projectcalico.docs.tigera.io/archive/v3.20/getting-started/kubernetes/self-managed-onprem/onpremises" rel="nofollow" target="_blank">Install Calico networking and network policy for on-premises deployments&lt;/a>を参考にCalicoとcalicoctlを &lt;b>kubectl apply -f calico.yaml&lt;/b> , &lt;b>kubectl apply -f calicoctl.yaml&lt;/b> でデプロイしました。&lt;/div>&lt;div>yamlファイルにはPod CIDRの項目のみ、変更を行っています。&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/12/kubernetescalico/img/1769ba3abc3c8125_hu629328151621056061.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/12/kubernetescalico/img/1769ba3abc3c8125_hu629328151621056061.webp"
 alt=""
 width="1252"
 height="122"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;div>しかし、Podに割り振られるIPアドレスはデプロイ以前と同様のもので、&lt;a href="https://docs.projectcalico.org/security/tutorials/kubernetes-policy-basic" rel="nofollow" target="_blank">Kubernetes policy, basic tutorial&lt;/a>を参考にネットワークポリシーのテストをしても、中途半端に反映されているような挙動をし、アクセス拒否の設定をしても、アクセスできてしまう(未設定時より時間かかったりする印象)といった状態でした。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>原因と改善策&lt;/h2>&lt;div>そこで、改めてCalicoのインストール手順やKubernetes-The-Hard-Wayの手順を確認した所、初歩的なミスを見つけました。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>Calicoをインストールする際は&lt;/div>&lt;div>&lt;ul>&lt;li>&lt;a href="https://github.com/kelseyhightower/kubernetes-the-hard-way/blob/master/docs/09-bootstrapping-kubernetes-workers.md#configure-cni-networking" rel="nofollow" target="_blank">Configure CNI Networking&lt;/a>&lt;/li>&lt;/ul>&lt;/div>&lt;div>が不要になります。また、オンプレ用にカスタマイズして行っていたルーティングの設定も不要になりました。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>ここでは、&lt;b>10-bridge.conf, &lt;/b>&lt;b>99-loopback.conf&lt;/b>を作成していますが、Calicoをインストールすると以下のようなコンフィグファイルが自動で生成されます。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/12/kubernetescalico/img/e95c50582b2ae29f_hu5486732378438558030.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/12/kubernetescalico/img/e95c50582b2ae29f_hu5486732378438558030.webp"
 alt=""
 width="338"
 height="47"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;div>というわけで、&lt;b>rm 10-bridge.conf 99-loopback.conf&lt;/b>で設定ファイルを削除し、再度確認すると、&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/12/kubernetescalico/img/2b14d5dd53d2db7b_hu5307384877804852910.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/12/kubernetescalico/img/2b14d5dd53d2db7b_hu5307384877804852910.webp"
 alt=""
 width="1326"
 height="512"
 loading="lazy" decoding="async">
 &lt;/a>&lt;div>&lt;br>&lt;/div>Calicoが生成したIPアドレスに置き換わり、ネットワークポリシーも適応できるようになりました。&lt;br>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>まとめ&lt;/h2>&lt;div>初Kubernetes、仕組みを理解しない状態で触るとハマりポイントが非常に多く、苦戦していますが、わかると楽しく、非常に面白いシステムです。&lt;/div>&lt;div>是非皆さんも遊んでみてください。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;p>&lt;br>&lt;/p></description></item></channel></rss>