目次
k8s のバージョンは以下。
[root@azki k8s]# microk8s kubectl version
Client Version: version.Info{Major:"1", Minor:"21+", GitVersion:"v1.21.3-3+90fd5f3d2aea0a", GitCommit:"90fd5f3d2aea0a5788b15a6f0a05e70381af7787", GitTreeState:"clean", BuildDate:"2021-07-16T22:06:06Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"21+", GitVersion:"v1.21.3-3+90fd5f3d2aea0a", GitCommit:"90fd5f3d2aea0a5788b15a6f0a05e70381af7787", GitTreeState:"clean", BuildDate:"2021-07-16T22:01:05Z", GoVersion:"go1.16.6", Compiler:"gc", Platform:"linux/amd64"}Microk8s のインストール
インストールは公式の手順に従うだけ。今回は Fedora Server 34 で試した。snap で配布されているので dnf install snapd する必要がある。
# dnf install snapd
# systemctl enable --now snapd
# snap install microk8s --classicインストールしたらここを参考に初期セットアップ。
# microk8s status --wait-ready
# microk8s enable dashboard dns registry istioIngress の有効化
# microk8s enable ingress定義ファイルの準備
とりあえずチュートリアルとドキュメントのサンプルを見様見真似で。
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: microbot
  name: microbot
spec:
  replicas: 3
  selector:
    matchLabels:
      app: microbot
  template:
    metadata:
      labels:
        app: microbot
    spec:
      containers:
      - image: dontrebootme/microbot:v1
        name: microbot
        ports:
          - containerPort: 80service.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: microbot
  name: microbot-service
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: microbotingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: microbot-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  - http:
      paths:
      - path: /microbot(\/.*)
        pathType: Prefix
        backend:
          service:
            name: microbot-service
            port:
              number: 80サービスの実行
# microk8s kubectl apply -f deployment.yaml -f service.yaml -f ingress.yamlhttp://127.0.0.1/microbot/ にアクセスして以下のような画面が出たら成功。

replicas: 3 を指定しているので、ページをリロードしまくると hostname が全3種に変わる。
トラブルシュート
502 Bad Gateway になる
おそらく Fedora (というか firewalld か?) 特有の問題。Ubuntu 21.04 では再現しなかった。
雑なワークアラウンドは以下。
# systemctl stop firewalldfirewalld を止めた・設定変えたら Ingress が Connection refused を返してくるようになった
# microk8s disable ingress
# microk8s enable ingress503 Service Unavailable になる
Pod が立ち上がっていないかもしれないからもう少し待つ。
待ってもダメなら ingress.yaml に指定するサービス名 (backend.service.name) が間違ってる可能性あり。
画像が出ない
nginx.ingress.kubernetes.io/rewrite-target の指定が誤ってる可能性あり。上記のサンプルのようにサブディレクトリ以下でサービスを公開する場合は、適切な rewrite をかけないといけない。
Tweet 
			 
		 
											