Help us understand the problem. What is going on with this article?

[コピペ用]Ubuntu16.04にkubeadmでkubernetesを構築する

More than 1 year has passed since last update.
  • 構築時にコマンドをコピペする用の記事です
  • 一気に全コマンドコピペするとapt-get install以降のコマンドが実行されなかったので分割してます

構築される構成

  • OSはUbuntu16.04。18.04でも同一手順で問題ないと思うが未検証
  • Kubernetesバージョンはコマンド実行時点で最新のもの。2018/11/29現在で1.12.3
  • Masterノード一台、他をNodeとする構成
  • Dockerバージョンは18.06.1-ce。2018/11/29現在でKubernetesがサポートする中で最新。
  • CNIはWeave
  • プロキシやACLは考慮されていない
  • その他はすべてデフォルト

手順

  1. Ubuntu16.04をセットアップ
  2. 全マシンでrootユーザーで次のコマンドを実行する

    事前準備(swap無効化と依存パッケージインストール)
    swapoff -a
    sed -e "/^UUID=[a-z0-9-]* swap/s/^/# /" -i.bak /etc/fstab
    
    apt-get update
    apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common 
    
    Dockerインストール
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    apt-key fingerprint 0EBFCD88
    add-apt-repository    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"
    apt-get update
    apt-get install -y docker-ce=18.06.1~ce~3-0~ubuntu
    
    kubernetesインストール
    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 kubelet kubeadm kubectl
    apt-mark hold kubelet kubeadm kubectl
    
  3. masterノードで次を実行する

    kubernetes初期化
    kubeadm init
    
  4. kubeadm initの実行結果の末尾に表示される次の形式のコマンドをメモする

    メモるコマンド
    kubeadm join <ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<sha>
    
  5. masterノードで次を実行する

    kubectlセットアップとWeaveインストール
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
    
  6. master以外の全ノードで4.でメモしたコマンドを実行する(Nodeのクラスタ参加)

動作確認

  • masterのrootユーザーで次を実行する

    kubectl get nodes
    
    • 全ノードが表示されてSTATUSREADYなら構築完了。master以外のROLES<none>で問題ない
  • PODを立ててみる

    • 次のtest.ymlを作成
    test.yml
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-pod
    spec:
      containers:
        - name: nginx-container
          image: nginx
          ports:
          - containerPort: 80
    
    • kubectl create -f test.ymlを実行
    • kubectl get pods -o wideを実行
    • IPが表示されるので、そのIPに対してwgetindex.htmlがダウンロードされればOK

参考

dockerのインストール
kubeadmのインストール
kubernetesの初期化

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away