単一インスタンスのKubernetesクラスタの設定

ノート:

  • このステップは、特に指定しないかぎり、rootユーザーで実行する必要があります。
  • 別のCIDRブロック(つまり、kubeadm initコマンドの--pod-network-CIDR= に対して10.244.0.0/16以外)を使用する場合は、NO_PROXYおよびno_proxyも適切な値で更新します。
    • また、デプロイする前に必ず新しい値でkube-flannel.yamlを更新してください。
  • 次を適切な値に置き換えます:
    • ADD-YOUR-INTERNAL-NO-PROXY-LIST
    • REPLACE-WITH-YOUR-COMPANY-PROXY-HOST:PORT

マスター・ノードの設定

  1. 必要な環境変数を設定するシェル・スクリプトを作成します。これをユーザーの.bashrcに追加して、ログイン時に実行されるようにできます。HTTPプロキシの背後にいる場合は、ここでプロキシ設定を構成する必要もあります:
    ## grab my IP address to pass into  kubeadm init, and to add to no_proxy vars
    ip_addr=`nslookup $(hostname -f) | grep -m2 Address | tail -n1| awk -F: '{print $2}'| tr -d " "`
    export pod_network_cidr="10.244.0.0/16"
    export service_cidr="10.96.0.0/12"
    export PATH=$PATH:/sbin:/usr/sbin
    
    ### Set the proxies
    export NO_PROXY=localhost,.svc,127.0.0.0/8,ADD-YOUR-INTERNAL-NO-PROXY-LIST,/var/run/crio/crio.sock,$ip_addr,$pod_network_cidr,$service_cidr
    export no_proxy=localhost,.svc,127.0.0.0/8,ADD-YOUR-INTERNAL-NO-PROXY-LIST,/var/run/crio/crio.sock,$ip_addr,$pod_network_cidr,$service_cidr
    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
    
  2. スクリプトを調達して環境変数を設定します:
    . ~/.bashrc
    
  3. コマンド補完を実装するには、スクリプトに次を追加します:
    [ -f /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion
    source <(kubectl completion bash)
    
  4. kubeadm initを実行して、マスター・ノードを作成します:
    kubeadm init \
      --pod-network-cidr=$pod_network_cidr \
      --apiserver-advertise-address=$ip_addr \
      --ignore-preflight-errors=Swap  > /tmp/kubeadm-init.out 2>&1
    
  5. YOUR_USERID:YOUR_GROUPを使用してターミナルにログインします。次に、YOUR_USERID:YOUR_GROUPを使用して、ステップ1から3と同様に~/.bashrcを設定します。

    ノート:

    ここからは、rootではなくYOUR_USERID:YOUR_GROUPを使用して、kubectlコマンドを実行します。
  6. KubernetesクラスタにアクセスするためのYOUR_USERID:YOUR_GROUPを設定します:
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  7. kubectlコマンドを使用して、KubernetesクラスタにアクセスするためのYOUR_USERID:YOUR_GROUPが設定されていることを検証します:
    kubectl get nodes
    

    ノート:

    このステップでは、ポッド・ネットワーク・アドオンがまだインストールされていないため、ノードは準備完了状態ではありません。次のステップの後、ノードのステータスはReadyと表示されます。

  8. ポッド・ネットワーク・アドオン(flannel)をインストールして、ポッドが相互に通信できるようにします。

    ノート:

    10.244.0.0/16とは異なるCIDRブロックを使用している場合は、クラスタにデプロイする前に、kube-flannel.ymlをダウンロードして正しいCIDRアドレスで更新します:

    wget https://github.com/flannel-io/flannel/releases/download/v0.25.1/kube-flannel.yml
    ### Update the CIDR address if you are using a CIDR block other than the default 10.244.0.0/16
    kubectl apply -f kube-flannel.yml
    
  9. マスター・ノードがReadyステータスであることを確認します:
    kubectl get nodes
    

    サンプル出力:

    NAME              STATUS      ROLES        AGE   VERSION
    mymasternode      Ready    control-plane   12h   v1.27.2
    

    または:

    kubectl get pods -n kube-system
    

    サンプル出力:

    NAME                                    READY       STATUS      RESTARTS    AGE
    pod/coredns-86c58d9df4-58p9f                1/1         Running         0       3m59s
    pod/coredns-86c58d9df4-mzrr5                1/1         Running         0       3m59s
    pod/etcd-mymasternode                       1/1         Running         0       3m4s
    pod/kube-apiserver-node                     1/1         Running         0       3m21s
    pod/kube-controller-manager-mymasternode    1/1         Running         0       3m25s
    pod/kube-flannel-ds-6npx4                   1/1         Running         0       49s
    pod/kube-proxy-4vsgm                        1/1         Running         0       3m59s
    pod/kube-scheduler-mymasternode             1/1         Running         0       2m58s
    
  10. マスター・ノードでポッドをスケジュールするには、ノードにテイントします:
    kubectl taint nodes --all node-role.kubernetes.io/control-plane-
    

    お疲れ様でした。Kubernetesクラスタ環境は、Oracle SOA Suiteドメインをデプロイする準備ができました。

Kubernetesクラスタを設定するには、公式のドキュメントを参照してください。