k3sとは
先人の方々がすでに色々とやられているので、割愛。
https://qiita.com/search?q=k3s
しかし、ネットにあるCentOSへのインストール手順だと動かないので、動くものを作ってみた。
構成
VirtualBoxにて以下のVMを構築
- MasterNode (CentOS7 Minimal Install)
ネットワーク1:NAT (10.0.2.0/24)
ネットワーク2:ホストオンリーアダプタ (192.168.56.0/24) - WorkerNode1 (CentOS7 Minimal Install)
ネットワーク1:NAT (10.0.2.0/24)
ネットワーク2:ホストオンリーアダプタ (192.168.56.0/24)
インストール手順
基本的には、以下をまるっとごそっとコピペしてもらえればよいはず。
MasterNode
sudo hostnamectl set-hostname master
sudo sed -i 's/.*127.0.0.1/#&/g' /etc/hosts
sudo sed -i '$a 127.0.0.1 master localhost' /etc/hosts
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo yum -y update
sudo yum -y install iptables-services
sudo systemctl start iptables
sudo systemctl enable iptables
sudo systemctl stop iptables
sudo yum -y install policycoreutils-python
sudo sed -i '/22/a -A INPUT -p tcp -m state --state NEW -m tcp --dport 6443 -j ACCEPT' /etc/sysconfig/iptables
sudo systemctl restart iptables
sudo sh -c "curl -sfL https://get.k3s.io | sh -"
sudo cat /var/lib/rancher/k3s/server/node-token
WorkerNode1
以下はMasterのインストールと並行で実施してよい。
sudo hostnamectl set-hostname worker1
sudo sed -i 's/.*127.0.0.1/#&/g' /etc/hosts
sudo sed -i '$a 127.0.0.1 worker1 localhost' /etc/hosts
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo yum -y update
sudo yum -y install iptables-services
sudo systemctl start iptables
sudo systemctl enable iptables
sudo yum -y install policycoreutils-python
sudo yum -y install wget
sudo wget https://github.com/rancher/k3s/releases/download/v0.4.0/k3s -O /usr/local/bin/k3s
sudo chmod +x /usr/local/bin/k3s
ノード追加(Worker側)
ノード追加は、Master側でk3sのインストールが完了してから実施する。
sudo /usr/local/bin/k3s agent --server https://192.168.56.101:6443 --token [★★★Masterのtoken★★★]
解説
ホスト名指定およびhostsファイル修正
ホスト名をmasterに変更し、hostsに"master"と"localhost"は"127.0.0.1"に設定。
これをしないと、k3sサーバ起動時にエラーが発生する。
https://tech-lab.sios.jp/archives/13564
sudo hostnamectl set-hostname master
sudo sed -i 's/.*127.0.0.1/#&/g' /etc/hosts
sudo sed -i '$a 127.0.0.1 master localhost' /etc/hosts
firewalld無効化、iptablesインストール
k3sはfirewalld配下では動作しないので、firewalldを無効化し、iptablesをインストールする。
また、k3sサーバに必要なポート6443を開放する。よくネットのインストール手順では、SELinuxを無効化するように記載されているが、無効化せずにインストールしてみたところ、インストール時に設定を変更しているように見える。
※製品側がSELinuxを無効にしろと記載していない限り、無効にしない方がよいと思う。
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo yum -y update
sudo yum -y install iptables-services
sudo systemctl start iptables
sudo systemctl enable iptables
sudo systemctl stop iptables
sudo yum -y install policycoreutils-python
sudo sed -i '/22/a -A INPUT -p tcp -m state --state NEW -m tcp --dport 6443 -j ACCEPT' /etc/sysconfig/iptables
sudo systemctl restart iptables
k3sインストール
k3sをインストールする。※今回はエージェント込み(master自体もエージェントとなる)
sudo sh -c "curl -sfL https://get.k3s.io | sh -"
k3sトークン表示
workerノードを追加する際に必要なトークンを表示する
sudo cat /var/lib/rancher/k3s/server/node-token
動作確認
Masterノードにて、以下のコマンドを実行する。
sudo /usr/local/bin/k3s kubectl get node -o wide
次のような内容が出力され、masterおよびworker1が稼働していることが分かる。
[user@master ~]$ sudo /usr/local/bin/k3s kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
master Ready <none> 70m v1.14.1-k3s.4 10.0.2.4 <none> CentOS Linux 7 (Core) 3.10.0-957.10.1.el7.x86_64 containerd://1.2.5+unknown
worker1 Ready <none> 69m v1.14.1-k3s.4 10.0.2.15 <none> CentOS Linux 7 (Core) 3.10.0-957.10.1.el7.x86_64 containerd://1.2.5+unknown
今回はここまで。次回はこの上に色々とコンテナを立ててみようと思う。
※k3sのポートフォワードがイマイチ分からない...。