Kubernetes (minikube)

ホストマシンに直接minikubeを配備:driver=none

たとえば --driver=docker を使用すると、Minikube VM はDockerコンテナとして実行され、ホストと異なるネットワーク空間に配置されます。そのため、RTP通信などで必要とされる複数ポート(UDPなど)をホスト側で直接バインドすることが難しくなります。これが問題となる場合は、--driver=none--driver=virtualbox などのホスト型ドライバの使用を検討する必要があります。

Conntrackのインストール

conntrack はネットワークコネクションの状態を追跡するためのツールで、Kubernetes のコンポーネント(特に kube-proxy)がネットワークルーティングを正しく管理するために使われます。

$ sudo apt install conntrack

crictlのインストール

crictl は、Kubernetes が containerdCRI-O などのコンテナランタイムとやり取りするための CLI ツールです。

$ VERSION="v1.33.0"
$ wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
$ sudo tar zxvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/local/bin

CNI (Container Network Interface) のインストール

$ CNI_VERSION="v1.7.1"
$ curl -L -o cni-plugins.tgz https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-amd64-${CNI_VERSION}.tgz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 53.3M  100 53.3M    0     0  4017k      0  0:00:13  0:00:13 --:--:-- 4274k
$ sudo mkdir -p /opt/cni/bin
$ sudo tar -C /opt/cni/bin -xzf cni-plugins.tgz
$ ls /opt/cni/bin
bandwidth  bridge  dhcp  dummy  firewall  host-device  host-local  ipvlan  LICENSE  loopback  macvlan  portmap  ptp  README.md  sbr  static  tap  tuning  vlan  vrf

コメントアウト: disabled_plugins = [“cri”]

https://serverfault.com/questions/1074008/containerd-1-4-9-unimplemented-desc-unknown-service-runtime-v1alpha2-runtimese

$ sudo nano /etc/containerd/config.toml
.....
.....
# disabled_plugins = ["cri"]
.....
.....

minikube起動

$ sudo minikube start --driver=none --container-runtime=containerd
$ sudo kubectl get pod -A
NAMESPACE     NAME                                   READY   STATUS    RESTARTS   AGE
kube-system   coredns-674b8bbfcf-7x7l4               1/1     Running   0          33s
kube-system   coredns-674b8bbfcf-89vxh               1/1     Running   0          33s
kube-system   etcd-hp-elitedesk                      1/1     Running   0          38s
kube-system   kube-apiserver-hp-elitedesk            1/1     Running   0          38s
kube-system   kube-controller-manager-hp-elitedesk   1/1     Running   0          38s
kube-system   kube-proxy-lkvdl                       1/1     Running   0          33s
kube-system   kube-scheduler-hp-elitedesk            1/1     Running   0          38s
kube-system   storage-provisioner                    1/1     Running   0          37s

公式Ingress-Nginxのインストール

minikubeアドオンのIngress-NginxはnodePortがデフォルトのため、hostNetwork=trueを適応する編集をしても、再起動すると設定が元に戻ってしまいます。そのため、アドオンを無効にし、公式のマニフェストをダウンロードして適用します。

アドオン無効

$ sudo minikube addons disable ingress

公式Ingress-Nginxマニフェストのダウンロード

$ curl -O https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.12.3/deploy/static/provider/cloud/deploy.yaml

マニフェストでDeploymentのネットワークをホストに指定

deploy.yaml

# 検索: kind: Deployment
# 対象: ingress-nginx-controller の Deployment
# 編集箇所: spec.template.specに 
### hostNetwork: true
### dnsPolicy: ClusterFirstWithHostNet
# を追加

spec:
  template:
    spec:
      hostNetwork: true
      dnsPolicy: ClusterFirstWithHostNet
      .....
      .....

マニフェストを適用

$ sudo kubectl apply -f deploy.yaml