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
WEBINAR
Top Sysadmin Tasks and How to Do Them with OpenStack
WEBINAR
ONAP Overview