kubernetes

ローカルでkubernetes環境を構築する(kubeadm)

はじめに

 今回は自分のPCでkubernetes環境(以下k8s)と作成しようと思います。ネットで調べるとGoogle Kubernetes Engine (GKE)やAzure Kubernetes Service (AKS)などリモートの環境が多かったのですが、オンプレは記事が少なかったのでメモついでに書きます。

開発環境

Ubuntu 18.04

手順

まずroot権限に変更し、スワップ機能をオフにします。

sudo -s
swapoff -a

次にdocker をインストールします。

#Install Docker CE
## Set up the repository:
### Install packages to allow apt to use a repository over HTTPS
apt-get update && apt-get install apt-transport-https ca-certificates curl software-properties-common

### Add Docker’s official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

### Add Docker apt repository.
add-apt-repository \
  "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) \
  stable"

## Install Docker CE.
apt-get update && apt-get install docker-ce=5:18.09.5~3-0~ubuntu-bionic

mkdir -p /etc/systemd/system/docker.service.d

# Restart docker.
systemctl daemon-reload
systemctl restart docker

docker versionで18.09.5が表示されればOKです。

次にk8s環境を構築するためにkubeadm kubelet kubectlをインストールします。

# Install kubeadm kubelet kubectl
apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubeadm=1.15.4-00 - 
apt-get install -y kubelet=1.15.4-00 - 
apt-get install -y kubectl=1.15.4-00 - 
apt-mark hold kubelet kubeadm kubectl

kubeadm kubelet kubectlはv1.15.4-00 – をインストールします。

ポッドネットワークアドオンを指定し、k8s環境を作成します。ポッドネットワークアドオンとはポッド同士で通信を行うために必要なものです。
自分はflannelを使いますが、他にもAWS VPCやCalicoなどがあるので気になる人は参考文献から公式サイトに飛んて見て下さい。

kubeadm init --pod-network-cidr=10.244.0.0/16

これでk8s環境が作成されました。
非rootユーザも操作できるようにします。

mkdir -p $HOME/.kube
cp -f /etc/kubernetes/admin.conf $HOME/.kube/config
exit
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf 

これで再度ログインすればkubectl が非ルートで操作できるようになります。
flannelファイルをapplyして確認してみましょう。

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/62e44c867a2846fefb68bd5f178daf4da3095ccb/Documentation/kube-flannel.yml

これでk8s環境完成です。お疲れ様でした。

初期化と再起動

k8s環境の初期化

k8s環境を初期化するには以下のコマンドでOKです。

sudo kubeadm reset

iptableもリセットする場合は以下のコマンドです。

iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

PCを再起動

PCを再起動してもk8s環境は自動的に立ち上がります。しかしいくら待っても立ち上がらないときはスワップ機能を確認してみてください。スワップ機能がオフでないとk8s環境は機能しません。

参考文献

Creating a cluster with kubeadm
Using kubeadm, you can create a minimum viable Kubernetes cluster that conforms to best practices. In fact, you can use kubeadm to set up a cluster that will pa...
そーたの技術ブログ

コメント

タイトルとURLをコピーしました