DockerなしでUbuntuサーバーにKubernetesをインストールする方法

画像



KubernetesはDockerのサポートを終了します。今、あなたが学習に費やしたすべてのハードワークは大きく変わります。最初から、Kubernetesの使用は同じではありません。



コンテナ管理ツール自体のインストールについて話しています。もちろん、Dockerがランタイムとしてインストールされている場合、以前と同じ方法でKubernetesをデプロイすることはできません。



一緒に、DockerなしでUbuntu Server20.04にKubernetesをインストールしようとします。



あなたは何が必要ですか



  • sudo権限を持つユーザー
  • Ubuntu Server 20.04インスタンス(これはコントローラーとして機能します-ノードとして実行するには他のインスタンスが必要ですが、セットアップはすべてのマシンで同じであるため、コントローラーでのみデモンストレーションします)


containerdランタイムをインストールする方法



最初に行うことは、Dockerの代わりとなるcontainerdランタイムをインストールすることです。Ubuntu Serverインスタンスにログインし、次のコマンドを使用してaptを更新してください。



sudo apt-get update
      
      





その後、次のコマンドで更新を開始する必要があります。



sudo apt-get upgrade -y
      
      





カーネルが更新されている場合は、サーバーを再起動する必要があります(Live Patchがインストールされて実行されている場合を除く)。

 

次のコマンドを使用してcontainerdをインストールします。



sudo apt-get install containerd -y
      
      





containerdを構成し、次のコマンドを使用してサービスを開始します。



sudo mkdir -p /etc/containerd
sudo su -
containerd config default  /etc/containerd/config.toml
      
      





Kubernetesのインストール方法



次に、Kubernetesをインストールします。まず、次のコマンドを使用してリポジトリのGPGキーを追加する必要があります。



curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
      
      





次のコマンドを使用して、Kubernetesリポジトリを追加します。

 

sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
      
      





これで、次のコマンドを使用して、必要なすべてのKubernetesコンポーネントをインストールできます。



sudo apt-get install kubeadm kubelet kubectl –y
      
      





複数のコンテナ問題を解決する方法



これは物事が少しトリッキーになるところです。Dockerは多くの内部的な問題を解決しました。containerdに移動するときは、手動で構成を変更する必要があります。 



最初の変更は、/ etc /sysctl.confに行を追加することです。次のコマンドでファイルを開きます。



sudo nano /etc/sysctl.conf
      
      





このファイルを開いた状態で、以下を追加します。



net.bridge.bridge-nf-call-iptables = 1
      
      





ファイルを保存して閉じます。 



次に、コマンドを入力します。



sudo -s
sudo echo '1' > /proc/sys/net/ipv4/ip_forward
exit
      
      





次のコマンドを使用して構成を再ロードします。



sudo sysctl --system
      
      





また、次のコマンドを使用して、必要なモジュールをいくつかロードする必要があります。



sudo modprobe overlay
sudo modprobe br_netfilter
      
      





これに対処したら、Kubernetesを初期化できます。



セットアップを完了する方法



/ etc / hostsにすべてのホストをリストする必要があります。表示が次の形式であることを確認してください。



IP Address hostname
      
      





次のステップは、次のコマンドを使用して、コントローラーのホスト名を設定することです(/ etc / hostsで使用したホスト名と一致することを確認してください)。



sudo hostnamectl set-hostname HOSTNAME
      
      





ここで、HOSTNAMEは使用するホスト名です。



次のコマンドで編集するためにfstabファイルを開いて、スワッピングを無効にします。



sudo nano /etc/fstab
      
      





このファイルで、次で始まるエントリをコメントアウトします(行の先頭に#を追加します)。



/swap.img
      
      





この行は次で始まります:



# / swap.img
      
      





ファイルを保存して閉じます。 



次のコマンドでスワップを無効にします。



sudo swapoff -a
      
      





次のコマンドを使用して、必要なコンテナを抽出します。



sudo kubeadm config images pull
      
      





コントローラで、次のコマンドを使用してKubernetesを初期化します。



sudo kubeadm init --pod-network-cidr=IPADDRESS/24
      
      





ここで、IPADDRESSはコントローラーのIPアドレスです。



最終的には、ノードがクラスターに接続できるように、ノードで実行する必要のあるコマンドに戻ります。このコマンドをコピーします。 



ノードをクラスターに参加させる前に、クラスター内のさらにいくつかのビットを処理する必要があります。



コントローラで、次のコマンドを使用してクラスタディレクトリを作成します。



mkdir -p $ HOME / .kube
      
      





次のコマンドを使用して、構成ファイルをこのディレクトリにコピーします。



sudo cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config
      
      





次のコマンドを使用して、構成ファイルに適切なアクセス許可を付与します。



sudo chown $(id -u):$(id -g) $HOME/.kube/config
      
      





次のコマンドを使用して、クラスターにコンテナーネットワーク(この場合はweave-netを使用します)をデプロイします。



kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
      
      





これで、各ノードでconnectコマンドを実行して、クラスターをシャットダウンできます。



プロセスは以前ほど単純ではありません。将来的には、KubernetesクラスターのデプロイがDockerを使用するのと同じくらい簡単になることを願っています。 



All Articles