概要
kubernetesの複数バージョンをインストールして手順の違いを確認してみましたが、違いがないことがわかりました。
今回は、CNIはAntrea、Ingress ControllerはContourを使用しています。ContourのServiceはLoadBalancerの設定とし、Metallbを使ってIPアドレスを割り当てようしましたが、通信ができなかったです。
環境
# | ソフトウェア | バージョン(v1.26.2) | バージョン(v1.28.1) |
1 | Rocky Linux | 9.1(5.14.0-162.6.1.el9_1.x86_64) | 9.2(5.14.0-284.11.1.el9_2.x86_64) |
2 | kubernetes | 1.26.2 | v1.28.1 |
3 | containerd.io | 1.6.18-3.1 | 1.6.22-3.1 |
4 | Antrea | 1.10.0 | 1.13.1 |
5 | helm | 3.10.3 | 3.12.3 |
6 | contour | – | 1.26.0 |
7 | Metallb | 0.13.11 |
手順
kubernetesのインストール
事前設定
1.firewalldの停止 systemctl disable --now firewalld 2.swapの無効化 swapoff -a sed -e '/swap/s/^/#/g' -i /etc/fstab 3.iptablesがブリッジを通過するトラフィックを処理できるようにする cat <<EOF > /etc/sysctl.d/k8s.conf net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF 3.その他設定① cat > /etc/modules-load.d/containerd.conf <<EOF overlay br_netfilter EOF modprobe overlay modprobe br_netfilter 4.その他設定② 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 5.その他設定④ sysctl --system 6.SELinuxの無効化 setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
CRIのインストール
1.Containerdのインストール yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo yum update -y && yum install -y containerd.io mv /etc/containerd/config.toml /etc/containerd/config.toml.orig containerd config default > /etc/containerd/config.toml vi /etc/containerd/config.toml [plugins] SystemdCgroup = true systemctl enable --now containerd.service
kubernetesのインストール
1.kubernetesのrepoの設定
cat > /etc/yum.repos.d/k8s.repo << EOF [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch enabled=1 gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kubelet kubeadm kubectl EOF
2.kubelet、kubectl、kubeadmのインストール
dnf install -y kubelet --disableexcludes=kubernetes dnf install -y kubectl --disableexcludes=kubernetes dnf install -y kubeadm --disableexcludes=kubernetes
補足1 利用可能なバージョンの確認方法
最新バージョン以外をインストールしたい場合は、以下コマンドでインストールするバージョンを確認する。
dnf search --showduplicates kubectl --disableexcludes=kubernetes
サーバ固有設定
1.と2.と3.の設定はOSテンプレートに入れることも可能です。
1.ホスト名の設定 hostnamectl set-hostname <ホスト名> 2.hostsの修正 vi /etc/hosts ※必要な名前解決を追加
masterを構成
1.masterの接続するIPアドレスの指定 vi /etc/sysconfig/kubelet KUBELET_EXTRA_ARGS=--node-ip=<IPアドレス> masterサーバで接続するIPアドレスを指定したい場合は設定する。 2.masterの構成 kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=<IPアドレス> ※apiserer-advertise-addressは接続するIPアドレスを指定したい場合は設定する。 3.ユーザでkubectlを使用するための設定 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG=/etc/kubernetes/admin.conf
workerの参加
kubeadm initの実行結果で表示された「kubeadm join」を実行する。
kubeletの自動起動(masterとworkerで実施)
systemctl enable --now kubelet
Antreaのインストール
コンテナ・ネットワーク・インターフェース(CNI)はAntreaを選択しました。Antreaのインストールは以下のコマンドの通り実施できました。
1.ノードの状態確認(StatusがNotReadyでもOKです)
kubectl get node -A
2.Antreaのインストール
kubectl apply -f https://raw.githubusercontent.com/antrea-io/antrea/main/build/yamls/antrea.yml
helmのインストール
tarのインストール
dnf install tar -y
gitのインストール
dnf install git
helmのインストール
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh
contour(Ingress Controller)のインストール
kubectl apply -f https://projectcontour.io/quickstart/contour.yaml
metallbのインストール
1.kube-proxyの設定を変更
kubectl get configmap kube-proxy -n kube-system -o yaml | \ sed -e "s/strictARP: false/strictARP: true/" | \ kubectl diff -f - -n kube-system kubectl get configmap kube-proxy -n kube-system -o yaml | \ sed -e "s/strictARP: false/strictARP: true/" | \ kubectl apply -f - -n kube-system
2.metallbのインストール
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.11/config/manifests/metallb-native.yaml
3.IPアドレス範囲のコンフィグを作成
vi ipaddresspool.yaml apiVersion: metallb.io/v1beta1 kind: IPAddressPool metadata: name: default namespace: metallb-system spec: addresses: - 192.168.222.61-192.168.222.70 autoAssign: true --- apiVersion: metallb.io/v1beta1 kind: L2Advertisement metadata: name: l2advertisement namespace: metallb-system spec: ipAddressPools: - default
4.ipaddresspool.yamlを反映
kubectl apply -f ipaddresspool.yaml
その他作業
Persistent VolumeをNFSで作成する場合
NFSでマウントするためのパッケージをインストールする。
dnf install nfs-utils -y
helmにリポジトリを登録する。
helm repo add csi-driver-nfs https://raw.githubusercontent.com/kubernetes-csi/csi-driver-nfs/master/charts
NFSのCSIドライバーをデプロイする。
helm install csi-driver-nfs csi-driver-nfs/csi-driver-nfs --namespace kube-system
ストレージクラスのコンフィグを作成する。
vi sc.yaml ------記載内容------ piVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: standard annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: nfs.csi.k8s.io parameters: server: 192.168.222.10 share: /data/nfs reclaimPolicy: Delete volumeBindingMode: Immediate mountOptions: - nfsvers=4.1
作成したコンフィグを適用する。
kubectl apply -f sc.yaml
kubeconfigのコピー
コピー先のディレクトリ作成とカレントディレクトリ変更
mkdir -p $HOME/.kube cd -p $HOME/.kube
kubeconfigのコピー
scp root@<IPアドレス>:/root/.kube/config ./
kubectlのaliasの設定(Bashを使用している場合)
aliasの設定
vi ./bashrc -----最後の行に以下を記載---- alias k='kubectl'
コメント