実行する内容としては、Kubernetesをインストールする際に使うkubeadmのyumリポジトリを追加、kubeadmのインストール、kubeadm int でコントロールプレーンの作成、kubectlコマンド実行のためのkubeconfig用設定となります。
用意するプレイブックは以下の内容となります。
- name: setup Containerd hosts: kubernetes remote_user: root tasks: - name: kubernetes.repo create file: path: /etc/yum.repos.d/kubernetes.repo state: touch - name: add kubernetes.repo lineinfile: dest: /etc/yum.repos.d/kubernetes.repo line: "{{ item }}" with_items: - "[kubernetes]" - "name=Kubernetes" - "baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64" - "enabled=1" - "gpgcheck=1" - "repo_gpgcheck=1" - "gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg" - name: Install kubeadm yum: name: kubeadm - name: Kubernetes Setup shell : kubeadm init --apiserver-advertise-address=172.20.73.91 --pod-network-cidr=10.244.0.0/16 - name: $HOME/.kube create shell : mkdir -p $HOME/.kube - name: copy admin.conf shell : sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config - name: chown $HOME/.kube/config shell : sudo chown $(id -u):$(id -g) $HOME/.kube/config
task: 以降について解説します。
『kubernetes.repo create』これは、次のタスクで内容を記述していくためのファイル作成部分になります。
『add kubernetes.repo』これは、yum で kubeadm をインストールする際に必要なリポジトリの内容を追加しています。
『Install kubeadm』これは、yum で kubeadm をインストールしています。
『Kubernetes Setup』これは、kubeadm を使用して Kubernetes を構築しています。CNI は flannel を使用しています。
『$HOME/.kube create』『copy admin.conf』『chown $HOME/.kube/config』この3つは、Kubernetes へ対して操作を行う kubectl を使うための処理となっています。
kubectl は $HOME/.kube/config に書いてある接続に必要な情報を読み取って Kubernetes とやり取りをするため、ディレクトリを作って情報が記入されているファイルをコピーして権限を整えているという処理になります。
Kubernetes をよくご存じの方は --pod-network-cidr から flannel って… と思われる方もいるかもしれませんが、私が初めて Kubernetes を構築して Pod の通信についてあれやこれやと頭を悩ませ、VXLAN やカプセル化といった仕組みを理解するまで一緒に付き合ってくれた思い入れのある機能なので使いたくなってちゃうんですよねw
どうかご容赦ください。
この後は、コントロールプレーンに追加する用のワーカーの作成になります。
こちらについては、今まで作成した OS の設定、Containerd の構築、Kubernetes の構築、これらの処理を roles を利用して呼び出す形で作成したいともいます。
今年もブログを読んでいただきありがとうございました。
来年もよろしくお願いします。
よいおとしを~