概要
さくらのクラウドで作った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のラベルつける部分も記載しないと。