Kubeadm で Kubernetes をインストールする方法 : クイックガイド

Kubernetes クラスターが必要な場合がありますが、面倒なことは避けたいものです。小規模なアプリケーションをテストしたり、開発環境を自分自身のために作成したいような場合です。あなたの目標が何であれ、あなたはそれを素早く簡単にしたいと思うでしょう。このガイドはそのためのものです。この記事は、導入プロセスを簡素化するためにk8sコミュニティが作成した新しいツールである Kubeadm を使用して、単一ノードの Kubernetes クラスタを作成するためのクイックガイドです。 (マルチノード展開を作成するのは簡単ですが、それについては別の記事で説明します)

VM の作成

このガイドは、Virtualbox VMを使用してテストされましたが、理論的にはベアメタル導入でも同じです。(こちらで VM を作成するための手順を知ることができます) VM についての注意点:

  • リソースを過剰に割り当てるような場合でも、少なくとも2つの vCPU を割り当てます。例の中には1つではスタートしない場合があります。
  • 少なくとも4096 MBの RAM と20 GBのドライブスペースを割り当ててください。
  • Ubuntu 16.04をインストールしてください。
  • VM とホストマシン間のトラフィックを有効にするために、デフォルトのネットワーク アダプタを「ブリッジ アダプタ」に接続するように設定します。

VM の準備

VM を準備するために必要な作業がいくつかあります。具体的には、スワップをオフにし、いくつかの設定を調整し、必要なものがインストールされていることを確認する必要があります。これを行うには、次の手順を実行します。

  1. root に変更する:
    sudo su
  2. スワップをオフにする:これを行うには、まず直接オフにする必要があります…
    swapoff -a

    … / etc / fstabにあるスワップの参照をコメントアウトしてください。まずファイルを編集します。

    vi /etc/fstab

    次に、該当する行をコメントアウトします。

    # /etc/fstab: static file system information.
    #
    # Use 'blkid' to print the universally unique identifier for a
    # device; this may be used with UUID= as a more robust way to name devices
    # that works even if disks are added and removed. See fstab(5).
    #
    # <file system> <mount point>   <type>  <options>    <dump>  <pass>
    # / was on /dev/sda1 during installation
    UUID=1d343a19-bd75-47a6-899d-7c8bc93e28ff /            ext4 errors=remount-ro 0    1
    # swap was on /dev/sda5 during installation
    #UUID=d0200036-b211-4e6e-a194-ac2e51dfb27d none         swap sw           0    0
  3. iptables を設定して、ブリッジ ネットワーク トラフィックを受信します。最初に sysctl.conf ファイルを編集します。
    vi /etc/ufw/sysctl.conf

    次の行を最後に追加します。

    net/bridge/bridge-nf-call-ip6tables = 1
    net/bridge/bridge-nf-call-iptables = 1
    net/bridge/bridge-nf-call-arptables = 1
    
  4. リブートして変更を有効にします。
  5. ebtables と ethtool をインストールします:
    sudo su
    apt-get install ebtables ethtool
  6. もう一度リブートしてください。

Kubeadm をインストールする

これで、次に進む準備が整いました。このプロセスの詳細については、ドキュメントを参照することができますが、ここではクイック バージョンを紹介します:

  1. Docker をインストールする:
    sudo su
    
    apt-get update
    apt-get install -y docker.io
  2. HTTPS サポートをインストールする (必要な場合):
    apt-get update 
    apt-get install -y apt-transport-https
  3. Curl をインストールする (必要な場合):
    apt-get install curl
  4. Kubernetes レポジトリのためのキーを取得し、キーマネージャに追加します。
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
  5. kubernetes レポジトリをシステムに追加します。
    cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
    deb http://apt.kubernetes.io/ kubernetes-xenial main
    EOF
  6. 実際に必要な kubeadm、kubelet、kubectl の3つをインストールします。
    apt-get update
    apt-get install -y kubelet kubeadm kubectl

この時点で、必要なすべてのツールが用意されているので、実際に k8s クラスタを導入する準備ができているはずです。

クラスタの作成

Kubeadm をインストールしたので、新しいクラスタを作成します。このプロセスの一部は、ネットワークプロバイダを選択することです。いくつかの選択肢があります。この例ではCalico を使用します。

  1. 実際のクラスタを作成します。Calico の場合、次のように -pod-network-cidr スイッチを追加する必要があります。
    kubeadm init --pod-network-cidr=192.168.0.0/16

    しばらくすると、最終的に次のような出力が得られます:

    To start using your cluster, you need to run (as a regular user):
    
      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    You should now deploy a pod network to the cluster.
    Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
      http://kubernetes.io/docs/admin/addons/
    
    You can now join any number of machines by running the following on each node
    as root:
    
      kubeadm join --token 354502.d6a9a425d5fa8f2e 192.168.0.9:6443 --discovery-token-ca-cert-hash sha256:ad7c5e8a0c909ed36a87452e65fa44b1c2a9729cef7285eb551e2f126a1d6a54

    最後の行は他のマシンをクラスタに参加させるためのものです。このガイドでは使用しません。

  2. ネットワーク・プラグインを含む、ワークロードを追加するためのシステムを準備します。新しい端末ウィンドウを開き、kubeadm のコマンドを実行してください:
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
  3. Calico ネットワークプラグインをインストールします。
    kubectl apply -f https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml
  4. ポッドが実行されているかどうかを確認します。
    kubectl get pods --all-namespaces

    ポッドは短時間で起動します。

  5. ワークロードのスケジューリングに使用できるようにマスターを設定します。
    kubectl taint nodes --all node-role.kubernetes.io/master-

この時点で、ワークロードを実行できるフル機能の kubernetes クラスタが用意できました。

クラスタのテスト

ここで、Sock Shop サンプルアプリケーションをインストールすることで、すべてが正しく動作することを確認しましょう。次の手順を実行します:

  1. Sock Shop が稼働する名前空間を作成します。
    kubectl create namespace sock-shop
  2. 実際の Sock Shop アプリケーションを作成する:
    kubectl apply -n sock-shop -f "https://github.com/microservices-demo/microservices-demo/blob/master/deploy/kubernetes/complete-demo.yaml?raw=true"

    kubectl get pods -all-namespaces コマンドを使用して、ポッドがすべて実行されていることを確認します。

  3. フロントエンド サービスを介してそのサービスとやりとりしますので、そのサービスのIPアドレスを見つけてください:
    kubectl -n sock-shop get svc front-end
    
    NAME        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
    front-end   10.110.250.153   <nodes>       80:30001/TCP   59s

    ブラウザでhttp://<cluster-ip> (この場合はhttp://10.110.250.153) にアクセスしてください。WeaveSocks インターフェイスが表示されます。
    Kubeadm makes it easy to get a cluster on which to install the Sock Shop app.

    (注:Windows で VirtalBox を実行している場合は、ポート30001でアプリケーションを表示する場合のバグが発生する可能性があります)

  4. また、ホストマシンからインタフェースにアクセスできることを確認することもできます。まず、適切な IP アドレスを見つける必要があります。あなたの VM にはいくつかありますが:
    ifconfig

    ホストマシンと同じ範囲の IP アドレスを探します。おそらくイーサネットアダプタです。たとえば、私の例では、このセクションでした:

    enp0s3 Link encap:Ethernet  HWaddr 08:00:27:7c:14:fd  
           inet addr:192.168.2.50  Bcast:192.168.2.255  Mask:255.255.255.0
           inet6 addr: fe80::7638:2441:3326:b242/64 Scope:Link
           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
           RX packets:415485 errors:0 dropped:0 overruns:0 frame:0
           TX packets:166889 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:1000
           RX bytes:621031284 (621.0 MB)  TX bytes:12020009 (12.0 MB)
  5. その IP アドレスを選択し、ホストマシンのブラウザでポート30001上で IP アドレスに指定します:
    http://:30001

    (この例では http://192.168.2.50:30001 になります。)

    すべてがうまくいけば、あなたが VM でやったのと同じように、Sock Shop を見ることができます:

    Kubeadm makes it easy to get a cluster on which to install the Sock Shop app.

  6. 後始末

    最初からやり直したい場合は、次のようにできます:

    Sock Shop を削除するには:

    kubectl delete namespace sock-shop

    クラスタ全体を削除するには:

    sudo kubeadm reset

    これで、終了です。

    次のステップ

    この時点で以下のことが理解できました:

    1. Kubeadm 用に VM を準備する
    2. Kubeadm をインストールする
    3. Kubernetes クラスタを導入する
    4. Kubernetes アプリケーションにサンプルアプリケーションを導入する
    5. サンプル アプリケーションを削除する
    6. クラスタを削除する

     
    今後の記事では、カスタムアプリケーションの作成やクラスタへのノードの追加などのタスクについて説明します。Kubernetesの導入Kubernetes の導入に関する以前のチュートリアルをチェックしたり、無料の Kubernetes ミニブートキャンプで Kubernetes の基礎を学ぶのこともできます。

Subscribe to Our Newsletter

Latest Tweets

Suggested Content

LIVE DEMO
Mirantis Cloud Platform