忙しい人向け
- Oracle Linux 7はCloud Native Environmentリポジトリーに必要なパッケージが用意されている
- Kubeletの設定は次のように設定しないとKubeletが動かないのでkubeadmでデプロイできないようなので注意
動作確認したバージョン
- Oracle Linux 7.8
- Oracle Linux Cloud Native Environment 1.1
- Oracle Linux Cloud Native Environment 1.0
- Kubernetes 1.14.9 および 1.17.4
- CalicoもしくはFlannel
インストール手順
Oracle Linux のダウンロード
次からダウンロードする。
Oracle Linux 7.8のインストール
- 手順は省略
Oracle Linux 7.8のファイアウォール設定
- firewall-cmdで次のように設定しました。
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
構築手順は以上
構築した環境を使って、公式サイトの「アプリケーションの実行」を試してみましょう。