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

さくらのクラウドでいちからk8sをインストールする

概要

さくらのクラウドで作ったUbuntu18.04.2 LTS のインスタンスにDocker入れるところから始めて
kubernetesが使えるようになるところまでを書いています。

前提

  • インスタンスをUbuntu18.04.2 LTS で2つ作成済みで作成直後の状態とします。
  • 2つのインスタンスは同じNWに属しているとします。
  • pod network add-on は flannel を使います。
  • Dockerのインストールではつまづかない

マスターにしたい側での操作

Dockerのインストール

ここのページをみて進めるとOK。
https://docs.docker.com/install/linux/docker-ce/ubuntu/

kubeadmやkubectlのインストール

以下のコマンドを実行してインストールします。

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

Cgroup Driverの確認

以下のコマンドを実行し、cgroupfsであるかを確認します。

sudo docker info | grep "Cgroup Driver"

出力結果 cgroupfsって書いてる!
Cgroup Driver: cgroupfs
cat /var/lib/kubelet/kubeadm-flags.env | grep cgroup

出力結果 cgroupfsって書いてる!
KUBELET_KUBEADM_ARGS=--cgroup-driver=cgroupfs (後略

swapをoffにする

以下のコマンドを実行してswapをoffにする

sudo swapoff -a

kubeadm init の実行

--pod〜 の引数はflannelを使うために必要なものです。

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

Your Kubernetes control-plane has initialized successfully! 的な
表示がされるとOKです。(他にもたくさん表示されるけど。)

以下のように kubeadm join で始まる記述は
ノードとなるサーバをノードとして追加するときに必要なのでコピーしておく。

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.1.1:6443 --token h21xhg.vmvb6ywu8wbb61e2 \
    --discovery-token-ca-cert-hash sha256:55614ef3e52c4e9e052708df737c7758ff0fcf5a9a00336788e126c52204b907

root以外でkubectl を実行できるようにする

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

iptablesのチェーンにブリッジドIPv4トラフィックを渡せるようにする。

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

pod network add-on のインストール

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

CoreDNSのポットが起動して実行中であることを確認する。

kubectl get pods --all-namespaces

出力結果  coredns ってNAMEのコンテナのSTATUSがRunningだ!

ubuntu@k8s-master:~$ kubectl get pods --all-namespaces
NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
kube-system   coredns-fb8b8dccf-cwh9d              1/1     Running   0          7m3s
kube-system   coredns-fb8b8dccf-mhnzp              1/1     Running   0          7m3s
kube-system   etcd-k8s-master                      1/1     Running   0          6m
kube-system   kube-apiserver-k8s-master            1/1     Running   0          6m15s
kube-system   kube-controller-manager-k8s-master   1/1     Running   0          6m1s
kube-system   kube-flannel-ds-amd64-cns87          1/1     Running   0          43s
kube-system   kube-proxy-sdp4l                     1/1     Running   0          7m3s
kube-system   kube-scheduler-k8s-master            1/1     Running   0          6m23s
ubuntu@k8s-master:~$ 

masterの状態を確認する

kubectl get nodes

出力結果 STATUSが Readyになってる!
NAME         STATUS   ROLES    AGE     VERSION
k8s-master   Ready    master   9m27s   v1.14.1

ノードとなる側での操作

Dockerのインストール

ここのページをみて進めるとOK。
https://docs.docker.com/install/linux/docker-ce/ubuntu/

kubeadmやkubectlのインストール

以下のコマンドを実行してインストールします。

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

swapをoffにする

以下のコマンドを実行してswapをoffにします。

swapoff -a

ノードとして登録する

以下のコマンドを実行します。

控えておいた kubeadm join ~ で始まるコマンドを実行する。

例)
kubeadm join 192.168.1.1:6443 --token h21xhg.vmvb6ywu8wbb61e2 \
    --discovery-token-ca-cert-hash sha256:55614ef3e52c4e9e052708df737c7758ff0fcf5a9a00336788e126c52204b907

以下みたいな出力結果が出ればOKOK。
This node has joined the cluster:

master側で状態を確認する。

以下のコマンドを実行して確認する。

kubectl get nodes

出力結果  さっきの出力と比べると増えてる!
NAME         STATUS   ROLES    AGE     VERSION
k8s-master   Ready    master   22m     v1.14.1
k8s-node01   Ready    <none>   2m58s   v1.14.1
ubuntu@k8s-master:~$ 

次はどうするの?

yaml書いたりして kubectl apply しよう!
グーグルに聞くと色々出てきます。

TIPS

公式のページ
https://v1-13.docs.kubernetes.io/docs/setup/independent/install-kubeadm/
https://v1-13.docs.kubernetes.io/docs/setup/independent/create-cluster-kubeadm/

やり残し

  • workerのラベルつける部分も記載しないと。
Why not register and get more from Qiita?
  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
No 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
ユーザーは見つかりませんでした