Microk 8 s,Alpineとkubednsにかかわる葛藤

3152 ワード

事の始まりは簡単で、後日の凶暴な顔は現れなかった.
テストと学習のためにk 8 sの環境を作成しようとしましたが、選択肢は多くありません.
  • Microk8s(https://microk8s.io/):Ubuntuのインストールは非常に簡単です
  • Minikube(https://github.com/kubernetes/minikube):Hypervisor、kvmまたはvirtualboxをインストールする必要があります.
  • Kind (https://github.com/kubernetes-sigs/kind):とても新しくて、簡単です.

  • 鬼は私がなぜMicrok 8 sを選んだのか知っていたが、後の事実はKindを選んでも道は平坦ではないことを証明したが、Miicrok 8 sよりも平坦な道だった.
     
    Microk 8 sを除いてMicrok 8 sのインストールは非常に簡単です.kubectlはsnap(https://tutorials.ubuntu.com/tutorial/basic-snap-usage#0)を切り替えます.
    しかし、すぐに問題を発見しました.私はテストに使用したTekton-pipeline(https://github.com/tektoncd/pipeline)の例は必死に走っても通じず、githubを解析できないことを保証している.com、これはおかしいですね.k 8 s clusterにはdnsがありませんか.見ると本当に!
    問題1:
    Microk 8 sのデフォルトはkubednsを起動しません.microk 8 sを使用する必要があります.enable dns、kubednsが起動します.
    はい、しかし起動後も解析できません.まずkubectl execで働けないpod containerを登録し、ping 8.8.8(機械は壁の外にあります)を使用します.ping googleです.comはbad address'google.com',DNSの問題のようです.
    cat/etc/resolv.conf
    nameserver 100.64.0.10
    search namespace.svc.cluster.local svc.cluster.local cluster.local eu-west-1.compute.internal
    options ndots:5

    多分、nameserverが構成しているipは私のkubednsのサービスで、問題ありません.
    search domain開けても大丈夫
    options ndots:私の疑いを引き起こして、調べました(https://pracucci.com/kubernetes-dns-resolution-ndots-options-and-why-it-may-affect-application-performances.html):
    この設定は解析されたhostnameの点(.)を表す.数がこの値を超える場合はhostnameを直接解析し、そうでない場合はhostname.$を解析します.例としてwww.google.com、ポイント(.)の数が2<5の場合は、順に解析を試みます.
    www.google.com.namespace.svc.cluster.local
    www.google.com..svc.cluster.local
    www.googl.com.cluster.local
    www.google.com.en-west-1.computer.internal
    www.google.com
    ここでは直接www.googleを解析することを知りたいです.comはどんな結果なのか、簡単です.options ndots:5というオプションを削除します.結果は、通じる!
    次にcontainerミラーの問題であることを疑い始め,問題を簡略化するためにtektonを捨て,alpineのpodであるimageを素手で作成し,同様の問題を発見した.
    次にbusyboxを使ってミラーリングをして、不思議なことに問題がなくて、それからubuntuに変えて、問題もなくて、まさか問題は本当にalpineの体にありますか.
    はい、急いでまたk 8 s clusterを探して、Microk 8 sではありませんて、不思議なことは引き続き発生して、alpineとその他のテストミラーはすべてOKです!
    これは私を考え込んで、まさかMicrok 8 sがこの鍋を背負わなければなりませんか?
    事はそんなに簡単ではありません.DNSの間違いである以上、kubednsに問題があるのではないでしょうか.
    急いでMicrok 8 sのkubednsの鏡像を調べて、ほほほ、alpine、更にその正常なclusterのkubednsを調べて、alpineで、事はまた行き詰まりに陥りました.
    Googleを探して、ハッ、本当にalpineの背中を必要とします:
    https://github.com/kubernetes/kubernetes/issues/30215
    https://github.com/gliderlabs/docker-alpine/issues/8
    https://seanj.dev/post/alpine-kubernetes-dns/
    https://github.com/gliderlabs/docker-alpine/issues/255
    https://forums.docker.com/t/resolved-service-name-resolution-broken-on-alpine-and-docker-1-11-1-cs1/19307
    完竹難書とは何か、この問題はalpine 3から.3最初は今まで解決していませんでしたが、最後に警告を出すように強要されました.k 8 sではalpineを慎重に使用してください.
    しかしalpineはなぜfixしないのか、この問題はmusl libcから来たのか(https://www.musl-libc.org/intro.html)
    https://github.com/rancher/rancher/issues/5041https://bugs.alpinelinux.org/issues/9017
    何というか、鍋はやはり誰かが布団をかけなければならないので、急いでMicrok 8 sに行ってissueをつけました.
    https://github.com/ubuntu/microk8s/issues/493
    どのように言って、最後に仕方がないと思っていたプログラマーの油を打つ詩の結末:
    https://www.reddit.com/r/homelab/comments/5i6kza/a_haiku_about_dns/?st=j6vq0tcs&sh=f8e9032c