servermemoのブログ

サーバー構築の手順をまとめる予定です。

Oracle Linux 7でkubeadmを使ってKubernetesを動かす(CRI-O)

忙しい人向け

動作確認したバージョン

インストール手順

Oracle Linux のダウンロード

次からダウンロードする。

public-yum.oracle.com

Oracle Linux 7.8のインストール

  • 手順は省略

Oracle Linux 7.8のファイアウォール設定

CRI-Oのインストール前の事前準備

# cat > /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF

# modprobe overlay
# modprobe br_netfilter

ネットワーク関連の設定

# cat > /etc/sysctl.d/99-kubernetes-cri.conf <<EOF
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

# sysctl --system

Oracle Linux Cloud Native Environmentリポジトリーを有効化

# yum install oracle-olcne-release-el7.x86_64

Oracle Linux Cloud Native Environment」の依存リポジトリーを有効化

# yum-config-manager --enable ol7_addons ol7_kvm_utils

デフォルトはol7_olcne(Oracle Linux Cloud Native Environment 1.0)が有効になっている。 より新しいパッケージはol7_olcne11(Oracle Linux Cloud Native Environment 1.1)にある。

ol7_olcne11(Oracle Linux Cloud Native Environment 1.1)を使いたい場合

# yum-config-manager --disable ol7_olcne    #disableにするのはオプション
# yum-config-manager --enable ol7_olcne11

必要なパッケージをインストール

# yum install cri-o kubelet kubeadm kubectl
# systemctl enable --now kubelet

CRI-Oの設定変更

# vi /etc/crio/crio.conf

conmon = "/usr/libexec/crio/conmon"

#cgroup_manager = "cgroupfs"
cgroup_manager = "systemd"

# systemctl enable --now cri-o

Kubeletの設定を変更

KubeletでCRI-O由来の設定をパラメータ指定する。設定は以下のように行いました。

K8sクラスタのデプロイ

オプションが変わったので注意。「pod-network-cidr」は導入するCNIに適したものを設定する。

(v1.14.9)
# kubeadm init --kubernetes-version 1.14.9 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.1.70

(v1.17.4)
# kubeadm init --kubernetes-version 1.17.4 --pod-network-cidr=10.244.0.0/16 --control-plane-endpoint=192.168.1.70

Kubeconfigの用意

kubeadmでクラスター作成がうまくいくと、コマンドを実行しろと言われるので実行。

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

MasterノードをWorkerとして使う

master 1nodeにする場合は次を実行。Workerを追加する場合は、出力されているkubeadm joinコマンドをWorkerノードで実行。詳細は公式ドキュメントの「ノードの追加」を参照。

# kubectl taint nodes --all node-role.kubernetes.io/master-

Podネットワークアドオンのインストール

任意のPodネットワークアドオンをインストールする。筆者が動作確認したバージョンは以下のとおり。

Flannel and v1.14.9

Oracle Linux 7とK8s v1.14.9でCNI Flannelは以下のバージョンで正常に動いた。

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

Flannel and v1.17.4(See: https://github.com/coreos/flannel

Oracle Linux 7とK8s v1.17.4でCNI Flannelは以下のバージョンで正常に動いた。

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

Calico and v1.14.9(実行にはメモリ8GB以上必要)

Oracle Linux 7とK8s v1.14.9でCNI Calicoは以下のバージョンで正常に動いた。

# curl -LO https://docs.projectcalico.org/v3.7/manifests/calico.yaml
(pod-network-cidrを変更)
# kubectl apply -f calico.yaml

Calico and v1.17.4(実行にはメモリ8GB以上必要)

Oracle Linux 7とK8s v1.17.4でCNI Calicoは以下のバージョンで正常に動いた。

# curl -LO https://docs.projectcalico.org/v3.8/manifests/calico.yaml
(pod-network-cidrを変更)
# kubectl apply -f calico.yaml

構築手順は以上

構築した環境を使って、公式サイトの「アプリケーションの実行」を試してみましょう。