ホストマシンに直接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 が containerd
や CRI-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”]
$ 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