k8s
おうちマニフェスト情報
Arch Linux 上に k8s 環境構築
code:console
$ sudo kubeadm reset
$ iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
$ sudo rm -f /etc/cni/net.d/*
$
$ sudo kubeadm init --config ./config.yaml --skip-phases=addon/kube-proxy
$
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
コントロールプレーンノードを隔離しない
Production 環境では非推奨です!!!
code:console
$ kubectl taint nodes --all node-role.kubernetes.io/control-plane:NoSchedule-
参考
Docker Hub のイメージを従来通り pull できるようにする
code:/etc/containers/registries.conf
編集後は systemctl restart crio.service
参考
Node がずっと NetworkPluginNotReady のままになる
container runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:Network plugin returns error: No CNI configuration file in /etc/cni/net.d/. Has your network provider started?
flannel を使っているので /etc/cni/net.d を確認すると 10-flannel.conflist が存在する
CNI プラグインのインストールに cni-plugins-bin を使っていた
/opt/cni/bin と /usr/lib/cni の二箇所にインストールされる
どうやら /usr/lib/cni から CNI がロードされるが、こちらに flannel がないことが原因のようだったので symlink を貼って解決
code:console
$ sudo ln -s /opt/cni/bin/flannel /usr/lib/cni/
NodePort で使用できるポートの範囲を変更する
デフォルトでは NodePort でノードに露出するポートは 30000-32767 の範囲にする必要がある
code:console
$ sudo nano /etc/kubernetes/manifests/kube-apiserver.yaml
spec:
containers:
- command:
- --service-node-port-range=80-32767
$ sudo systemctl restart kubelet
Argo CD で Webhook をトリガーに Sync させる
シークレットを生成した方が安心
マスターの IP アドレスが変わって証明書エラーになるときは
code:log
E0410 20:14:44.116327 3712 memcache.go:265] couldn't get current server API group list: Get "https://x.x.x.x:6443/api?timeout=32s": tls: failed to verify certificate: x509: certificate is valid for 10.1.0.1, not x.x.x.x Unable to connect to the server: tls: failed to verify certificate: x509: certificate is valid for 10.1.0.1, not x.x.x.x
以下のように apiserver の証明書を作り直す
code:console
$ sudo kubeadm init phase certs apiserver --apiserver-cert-extra-sans localhost --apiserver-cert-extra-sans x.x.x.x
シークレット管理
1Password で管理できるようになる