- Oracle SOA Suite on Kubernetes
- 付録
- オンプレミスでのクイック・スタート・デプロイメント
- Kubernetesクラスタ用の仮想マシンの準備
Kubernetesクラスタ用の仮想マシンの準備
説明目的のため、これらの手順はOracle Linux 8用です。Linuxの異なるフレーバを使用している場合は、それに応じてステップを調整する必要があります。
ノート:
このステップは、特に指定しないかぎり、root
ユーザーで実行する必要があります。コマンドにYOUR_USERID
とある場合は、実際のuserid
に置き換える必要があります。
- 前提条件
- Kubernetesファイルを格納するディレクトリを選択します。Kubernetesディレクトリは、
/var/lib/kubelet
ファイル・システムおよび永続ボリューム・ストレージに使用されます。export kubelet_dir=/u01/kubelet mkdir -p $kubelet_dir ln -s $kubelet_dir /var/lib/kubelet
- ホストでIPv4転送が有効になっていることを確認します。
ノート:
eth0は、コンピュート・リソースのイーサネット・インタフェース名(異なる場合)に置き換えます。/sbin/sysctl -a 2>&1|grep -s 'net.ipv4.conf.eth0.forwarding' /sbin/sysctl -a 2>&1|grep -s 'net.ipv4.conf.lo.forwarding' /sbin/sysctl -a 2>&1|grep -s 'net.ipv4.ip_nonlocal_bind'
例: すべてが1に設定されていることを確認します:
net.ipv4.conf.eth0.forwarding = 1 net.ipv4.conf.lo.forwarding = 1 net.ipv4.ip_nonlocal_bind = 1
解決策: すべての値を即座に1に設定します:
/sbin/sysctl net.ipv4.conf.eth0.forwarding=1 /sbin/sysctl net.ipv4.conf.lo.forwarding=1 /sbin/sysctl net.ipv4.ip_nonlocal_bind=1
- 設定を永続的に保持するには: /usr/lib/sysctl.d/、/run/sysctl.d/および/etc/sysctl.d/のファイルで前述の値を1に更新します。
- 転送用のiptablesルールを確認します。Kubernetesは、iptablesを使用して多くのネットワーキングおよびポート転送ルールを処理します。標準のコンテナ・インストールでは、転送を妨げるファイアウォール・ルールが作成されることがあります。転送トラフィックを受け入れるiptablesルールが設定されているかどうかを確認します:
/sbin/iptables -L -n | awk '/Chain FORWARD / {print $4}' | tr -d ")"
出力が"DROP"の場合は、次のコマンドを実行します:
/sbin/iptables -P FORWARD ACCEPT
iptablesルールが"ACCEPT"に正しく設定されているかどうかを確認します:
/sbin/iptables -L -n | awk '/Chain FORWARD / {print $4}' | tr -d ")"
- firewalldを無効化および停止します:
systemctl disable firewalld systemctl stop firewalld
- Kubernetesファイルを格納するディレクトリを選択します。Kubernetesディレクトリは、
- CRI-OおよびPodmanのインストール
ノート:
CRI-OおよびPodmanをすでに構成している場合は、Kubernetesのインストールおよび構成に進みます。- オペレーティング・システムのバージョンが適切であることを確認します:
uname -a more /etc/oracle-release
出力例:
Linux xxxxxx 5.15.0-100.96.32.el8uek.x86_64 #2 SMP Tue Feb 27 18:08:15 PDT 2024 x86_64 x86_64 x86_64 GNU/Linux Oracle Linux Server release 8.6
- CRI-Oのインストール:
dnf config-managerにOLCNE (Oracle Cloud Native Environment)リポジトリを追加します。これにより、dnfはCRI-Oインストールに必要な追加パッケージをインストールできます。
Oracle Linux 8の場合:
dnf config-manager --add-repo https://yum.oracle.com/repo/OracleLinux/OL8/olcne18/x86_64
Oracle Linux 9の場合:
dnf config-manager --add-repo https://yum.oracle.com/repo/OracleLinux/OL9/olcne18/x86_64
cri-oをインストールします:
dnf install -y cri-o
ノート:
ノート: 別のバージョンのCRI-Oをインストールするか、別のオペレーティング・システムにインストールするには、CRI-Oのインストール手順を参照してください。 - CRI-Oサービスを起動します:
カーネル・モジュールおよびプロキシの設定
### Enable kernel modules overlay and br_netfilter which are required for Kubernetes Container Network Interface (CNI) plugins modprobe overlay modprobe br_netfilter ### To automatically load these modules at system start up create config as below cat <<EOF > /etc/modules-load.d/crio.conf overlay br_netfilter EOF sysctl --system ### Set the environmental variable CONTAINER_RUNTIME_ENDPOINT to crio.sock to use crio as the container runtime export CONTAINER_RUNTIME_ENDPOINT=unix:///var/run/crio/crio.sock ### Setup Proxy for CRIO service cat <<EOF > /etc/sysconfig/crio http_proxy=http://REPLACE-WITH-YOUR-COMPANY-PROXY-HOST:PORT https_proxy=http://REPLACE-WITH-YOUR-COMPANY-PROXY-HOST:PORT HTTPS_PROXY=http://REPLACE-WITH-YOUR-COMPANY-PROXY-HOST:PORT HTTP_PROXY=http://REPLACE-WITH-YOUR-COMPANY-PROXY-HOST:PORT no_proxy=localhost,127.0.0.0/8,ADD-YOUR-INTERNAL-NO-PROXY-LIST,/var/run/crio/crio.sock NO_PROXY=localhost,127.0.0.0/8,ADD-YOUR-INTERNAL-NO-PROXY-LIST,/var/run/crio/crio.sock EOF
CRI-Oのランタイムの設定
### Setting the runtime for crio ## Update crio.conf vi /etc/crio/crio.conf ## Append following under [crio.runtime] conmon_cgroup = "kubepods.slice" cgroup_manager = "systemd" ## Uncomment following under [crio.network] network_dir="/etc/cni/net.d" plugin_dirs=[ "/opt/cni/bin", "/usr/libexec/cni", ]
CRI-Oサービスの起動
## Restart crio service systemctl restart crio.service systemctl enable --now crio
- Podmanをインストールします:
Oracle Linux 8で、podmanが使用できない場合は、次のコマンド構文を使用してPodmanおよび関連ツールをインストールします:
shell$ sudo dnf module install container-tools:ol8
Oracle Linux 9で、podmanが使用できない場合は、次のコマンド構文を使用してPodmanおよび関連ツールをインストールします:
$ sudo dnf install container-tools
設定ではdocker CLIコマンドが使用されるため、Oracle Linux 8/9では、次のコマンド構文を使用してpodman-dockerパッケージをインストールします(使用できない場合)。これにより、dockerコマンドが効果的にpodmanに別名設定されます:
$ sudo dnf install podman-docker
- Podmanをルートレスで構成します:
ユーザーIDでpodmanを使用する場合(ルートレス環境)、Podmanでは、それを実行しているユーザーに、ファイル/etc/subuidおよび/etc/subgidにリストされているUIDの範囲が必要です。ファイルを直接更新するのではなく、usermodプログラムを使用して、次のコマンドでUIDとGIDをユーザーに割り当てることができます:
$ sudo /sbin/usermod --add-subuids 100000-165535 --add-subgids 100000-165535 <REPLACE_USER_ID> $ podman system migrate
ノート:
前述のpodman system migrateは、rootではなくユーザーIDで実行する必要があります。
user-id追加の検証
cat /etc/subuid cat /etc/subgid
予想される同様の出力
opc:100000:65536 <user-id>:100000:65536
- オペレーティング・システムのバージョンが適切であることを確認します:
- Kubernetesのインストールおよび構成
- 外部Kubernetesリポジトリを追加します:
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/ enabled=1 gpgcheck=1 gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni EOF
- SELinuxを許可モードに設定します(実質的に無効化します):export PATH=/sbin:$PATH setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
- プロキシをエクスポートし、kubeletを有効化します:
### Get the nslookup IP address of the master node to use with apiserver-advertise-address during setting up Kubernetes master ### as the host may have different internal ip (hostname -i) and nslookup $HOSTNAME ip_addr=`nslookup $(hostname -f) | grep -m2 Address | tail -n1| awk -F: '{print $2}'| tr -d " "` echo $ip_addr ### Set the proxies export NO_PROXY=localhost,127.0.0.0/8,ADD-YOUR-INTERNAL-NO-PROXY-LIST,/var/run/crio/crio.sock,$ip_addr,.svc export no_proxy=localhost,127.0.0.0/8,ADD-YOUR-INTERNAL-NO-PROXY-LIST,/var/run/crio/crio.sock,$ip_addr,.svc export http_proxy=http://REPLACE-WITH-YOUR-COMPANY-PROXY-HOST:PORT export https_proxy=http://REPLACE-WITH-YOUR-COMPANY-PROXY-HOST:PORT export HTTPS_PROXY=http://REPLACE-WITH-YOUR-COMPANY-PROXY-HOST:PORT export HTTP_PROXY=http://REPLACE-WITH-YOUR-COMPANY-PROXY-HOST:PORT ### Install the kubernetes components and enable the kubelet service so that it automatically restarts on reboot dnf install -y kubeadm kubelet kubectl systemctl enable --now kubelet
- トラフィック・ルーティングの問題を回避するために、sysctlでnet.bridge.bridge-nf-call-iptablesが1に設定されていることを確認します:
cat <<EOF > /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF sysctl --system
- スワップ・チェックを無効化します:
sed -i 's/KUBELET_EXTRA_ARGS=/KUBELET_EXTRA_ARGS="--fail-swap-on=false"/' /etc/sysconfig/kubelet cat /etc/sysconfig/kubelet ### Reload and restart kubelet systemctl daemon-reload systemctl restart kubelet
- crioを使用してイメージをプルします:
kubeadm config images pull --cri-socket unix:///var/run/crio/crio.sock
- 外部Kubernetesリポジトリを追加します:
- Helmの設定
- Helm v3.10.2+をインストールします。
1. a.https://github.com/helm/helm/releasesからHelmをダウンロードします。
たとえば、Helm v3.10.2をダウンロードするには:
wget https://get.helm.sh/helm-v3.10.2-linux-amd64.tar.gz
2. tar.gzを解凍します:
tar -zxvf helm-v3.10.2-linux-amd64.tar.gz
解凍したディレクトリでHelmバイナリを検索し、目的の宛先に移動します:
mv linux-amd64/helm /usr/bin/helm
helm version
を実行して、インストールを検証します:helm version version.BuildInfo{Version:"v3.10.2", GitCommit:"50f003e5ee8704ec937a756c646870227d7c8b58", GitTreeState:"clean", GoVersion:"go1.18.8"}
- Helm v3.10.2+をインストールします。