2 Calicoのインストール
この章では、CalicoモジュールをOracle Cloud Native Environmentにインストールする方法について説明します。 この章では、Kubernetesモジュールの作成時にKubernetes Calico CNIをインストールする方法についても説明します。
前提条件
この項では、Tigera Calicoオペレータを設定するために必要な前提条件情報について説明します。
firewalldサービスの無効化
firewalld
サービスを無効にします:
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
重要:
firewalld
サービスを無効にすると、このサービスによって提供されるネットワーク保護が削除されるため、Calicoネットワーク・ポリシーを実装してKubernetesクラスタを保護する必要があります。 Calicoを使用してクラスタを保護する方法の詳細は、アップストリームの「Calicoのドキュメント」を参照してください。
プロキシ構成の更新
環境でプロキシ・サーバーを使用している場合は、CRI-Oプロキシ構成ファイルを編集し、KubernetesサービスIP (デフォルトは10.96.0.1
)をNO_PROXY
変数に追加します。 たとえば、各Kubernetesノードで、/etc/systemd/system/crio.service.d/proxy.conf
ファイルを編集します:
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:3128"
Environment="HTTPS_PROXY=https://proxy.example.com:3128"
Environment="NO_PROXY=mydomain.example.com,10.96.0.1"
構成ファイルを再ロードし、crio
サービスを再起動します:
sudo systemctl daemon-reload
sudo systemctl restart crio.service
ノート:
olcnectl provision
コマンドを使用してクイック・インストールを実行する場合は、このステップを実行する必要はありません。 これは、そのインストール・メソッドを使用してプロキシ情報を指定するときに自動的に設定されます。
Kubernetesモジュール
Calicoモジュールをインストールするには、Kubernetesモジュールを作成して、CNIを設定せずにインストールする必要があります。 Kubernetesモジュールを作成する場合は、olcnectl module create
コマンドの一部として--pod-network none
オプションを設定します。 たとえば:
olcnectl module create \
--environment-name myenvironment \
--module kubernetes \
--name mycluster \
--pod-network none \
...
重要:
Tigera CalicoオペレータをネイティブのKubernetes CNIとしてデプロイする場合、これは必要ありません。 かわりに、このオプションを--pod-network calico
に設定します。
Calico構成ファイルの作成
オプションで、Calicoモジュールを構成ファイルとともにインストールできます。 Calico構成ファイルは、Tigera Calicoオペレータの特定の変更を構成するために使用されます。 このYAMLファイルには、operator.tigera.io/v1/Installation
のspec
部分が含まれています。 このファイルはオペレータ・ノードで使用可能である必要があります。
ノート:
--pod-network calico
オプションを指定してKubernetesモジュールを作成するときに、Tigera CalicoオペレータをネイティブのKubernetes CNIとしてデプロイする場合は、Calico構成ファイルを使用できません。
Calico構成ファイルの詳細は、アップストリームの「Calicoのドキュメント」を参照してください。
Calico構成ファイルの例:
installation:
cni:
type: Calico
calicoNetwork:
bgp: Disabled
ipPools:
- cidr: 198.51.100.0/24
encapsulation: VXLAN
registry: container-registry.oracle.com
imagePath: olcne
Calico CNIのデプロイ
Calicoをインストールする最も簡単な方法は、Kubernetesモジュールの作成時にKubernetes CNIをCalicoに設定することです。 これにより、Tigera Calicoオペレータがデフォルト構成でKubernetesクラスタにインストールされます。 このメソッドでCalicoモジュールをインストールする必要はありません。
CalicoをKubernetes CNIとして設定する前に、「事前設定」で説明されているように、前提条件を実行してfirewalld
サービスを無効にし、CRI-Oのプロキシ構成を更新します。
CalicoをKubernetes CNIとして設定するには、olcnectl module create --module kubernetes
コマンドの--pod-network calico
オプションを使用してKubernetesモジュールを作成します。 このオプションは、CalicoをKubernetesクラスタ内のポッドのKubernetes CNIとして設定します。 この例のKubernetesモジュールの名前は、mycluster
です。
olcnectl module create \
--environment-name myenvironment \
--module kubernetes \
--name mycluster \
--pod-network calico \
...
Kubernetesモジュールの作成の詳細は、「Kubernetesモジュール」を参照してください。
Calicoモジュールのデプロイ
Calicoモジュールでは、構成ファイルを使用してTigera Calicoオペレータを構成できます。 構成ファイルを使用しない場合、インストールは、Kubernetesモジュールの作成時にネイティブのCalico CNIインストール・オプションを使用する場合と同じです。 Calicoモジュールを使用する利点は、構成ファイルを使用できることです。 オペレータ構成を変更しない場合は、必要なステップが少ないため、Calico CNIメソッドを使用してCalicoをインストールできます。
このメソッドを使用するには、--pod-network none
オプションを使用してKubernetesモジュールを作成する必要があります。 このオプションは、クラスタ内のポッドに対してKubernetes CNIを設定しません。 次に、CalicoモジュールをインストールしてCNIを設定します。
Calicoモジュールの作成に使用する構文については、「プラットフォーム・コマンドライン・インタフェース」のolcnectl module create
コマンドのcalico
オプションを参照してください。
Calicoモジュールをデプロイするには:
-
olcnectl module create --module kubernetes
コマンドの--pod-network none
オプションを使用して、Kubernetesモジュールを作成してインストールします。 このオプションは、クラスタ内のポッドに対してKubernetes CNIを設定しません。 この例のKubernetesモジュールの名前は、mycluster
です。 たとえば:olcnectl module create \ --environment-name myenvironment \ --module kubernetes \ --name mycluster \ --pod-network none \ ...
重要:
--pod-network none
オプションを指定してKubernetesモジュールをインストールすると、Calicoモジュールをインストールするまで、すべてのkube-system
ポッドがpending
としてマークされます。 Calicoモジュールがインストールされると、これらのkube-system
ポッドはrunning
としてマークされます。 -
Calicoモジュールを作成し、
--calico-kubernetes-module
オプションを使用してmycluster
という名前のKubernetesモジュールに関連付けます。 この例では、Calicoモジュールの名前はmycalico
です。olcnectl module create \ --environment-name myenvironment \ --module calico \ --name mycalico \ --calico-kubernetes-module mycluster
--module
オプションは、モジュール・タイプを作成(calico
)に設定します。 Calicoモジュールの名前は、--name
オプションを使用して定義します。この場合、mycalico
です。--calico-kubernetes-module
オプションは、Kubernetesモジュールの名前を設定します。オプションの
--calico-installation-config
は、Calico構成ファイルのロケーションを設定します。 このファイルは、指定されたパスのオペレータ・ノードで使用可能である必要があります。 この構成ファイルの作成については、「事前設定」を参照してください。モジュールの追加時に必要なオプションの一部が含まれていないと、そのオプションを指定するように求められます。
-
olcnectl module install
コマンドを使用して、Calicoモジュールをインストールします。 たとえば:olcnectl module install \ --environment-name myenvironment \ --name mycalico
Calicoモジュールは、Kubernetesクラスタにデプロイされます。
Calicoデプロイメントの確認
このセクションでは、Calicoのインストールを検証する方法、Kubernetes CNIインストール・オプション、またはCalicoモジュールの両方について説明します。
Calicoモジュールの確認
Calicoモジュールを使用してCalicoをインストールした場合は、オペレータ・ノードでolcnectl module instances
コマンドを使用して、モジュールがデプロイされていることを確認できます。 たとえば:
olcnectl module instances \
--environment-name myenvironment
出力は次のようになります:
INSTANCE MODULE STATE
mycalico calico installed
mycluster kubernetes installed
control1.example.com node installed
...
MODULE
列のcalico
のエントリは、installed
状態であることに注意してください。
また、olcnectl module report
コマンドを使用して、モジュールに関する情報を確認します。 たとえば、次のコマンドを使用して、myenvironment
のmycalico
という名前のCalicoモジュールを確認します:
olcnectl module report \
--environment-name myenvironment \
--name mycalico \
--children
olcnectl module report
コマンドの構文の詳細は、「プラットフォーム・コマンドライン・インタフェース」を参照してください。
Tigera Calicoオペレータの検証
Tigera Calicoオペレータは、Kubernetes Calico CNIインストール・オプションおよびCalicoモジュールのインストール・メソッドを使用するときにデプロイされます。 この項では、Calicoのインストールを確認して構成について学習できるいくつかの領域を示します。
Tigera Calicoオペレータ・ステータス
kubectl get tigerastatus
コマンドを使用して、Tigera Calicoオペレータ・ステータスに関する情報を取得できます:
kubectl get tigerastatus
出力には、オペレータ・コンポーネントのステータスが表示され、次のようになります:
NAME AVAILABLE PROGRESSING DEGRADED SINCE
apiserver True False False 8m24s
calico True False False 8m39s
IPプール
kubectl get ippools
コマンドを使用して、設定されているデフォルトのIPプールに関する情報を取得できます:
kubectl get ippools
出力は次のようになります:
NAME CREATED AT
default-ipv4-ippool ...
IPプールの詳細を取得するには、次を使用します:
kubectl describe ippools default-ipv4-ippool
出力は次のようになります:
Name: default-ipv4-ippool
Namespace:
Labels: <none>
Annotations: <none>
API Version: projectcalico.org/v3
Kind: IPPool
Metadata:
Creation Timestamp: ...
Resource Version: 1112
UID: fd04d1d2-b5c9-4feb-9385-2b423c4dd67f
Spec:
Allowed Uses:
Workload
Tunnel
Block Size: 26
Cidr: 10.244.0.0/16
Ipip Mode: Never
Nat Outgoing: true
Node Selector: all()
Vxlan Mode: Always
Events: <none>
ネットワーク・ポリシー
設定されているネットワーク・ポリシーに関する情報を取得するには、次を使用します:
kubectl get networkpolicies --all-namespaces
出力は次のようになります:
NAMESPACE NAME POD-SELECTOR AGE
calico-apiserver allow-apiserver apiserver=true 66m
ネットワーク・ポリシーの詳細を取得するには、次を使用します:
kubectl describe networkpolicies --all-namespaces
出力は次のようになります:
Name: allow-apiserver
Namespace: calico-apiserver
Created on: <date> 05:27:30 +0000 GMT
Labels: <none>
Annotations: <none>
Spec:
PodSelector: apiserver=true
Allowing ingress traffic:
To Port: 5443/TCP
From: <any> (traffic not restricted by source)
Not affecting egress traffic
Policy Types: Ingress
インストールの構成
次のものを使用して、Tigera Calicoオペレータのインストール構成を確認できます:
kubectl get installation -o yaml
出力は次のようになります:
apiVersion: v1
items:
- apiVersion: operator.tigera.io/v1
kind: Installation
...
spec:
calicoNetwork:
bgp: Disabled
hostPorts: Enabled
ipPools:
- blockSize: 26
cidr: 10.244.0.0/16
disableBGPExport: false
encapsulation: VXLAN
natOutgoing: Enabled
nodeSelector: all()
linuxDataplane: Iptables
multiInterfaceMode: None
nodeAddressAutodetectionV4:
firstFound: true
cni:
ipam:
type: Calico
type: Calico
controlPlaneReplicas: 2
flexVolumePath: /usr/libexec/kubernetes/kubelet-plugins/volume/exec/
imagePath: olcne
kubeletVolumePluginPath: /var/lib/kubelet
nodeUpdateStrategy:
rollingUpdate:
maxUnavailable: 1
type: RollingUpdate
nonPrivileged: Disabled
registry: container-registry.oracle.com/
variant: Calico
...