イカの展開🦑 RPI 4 B上のK 3 Sで


K 3 Sとは


K 3 Sは、インストールするのが簡単で、ランチャーによって100 MBの下で一つのバイナリである軽量Kubernetesです.人はもっと読むことができるhere .

K 3 Sのインストール?


K 3 SはSystemdやOpenRCベースのシステムでサービスとしてインストールする便利な方法です.このスクリプトはhttps://get.k3s.io . このメソッドを使用してk 3 sをインストールするには、次のコマンドを実行します.
curl -sfL https://get.k3s.io | sh -
インストール後
  • K 3 Sサービスは、ノードの再起動後に自動的に再起動するか、またはプロセスがクラッシュしたか、またはkillされた場合に自動的に再起動するように設定されます
  • 追加のユーティリティがインストールされます.sh , k 3 sアンインストール.sh
  • Kubeconfigファイルは/etc/rancher/k 3 s/k 3 sに書き込まれます.YAMLとK 3 SによってインストールされたKubectlは自動的にそれを使用します
  • なぜSQUID?


    よく、私はかなりの時間のために私のラズベリーパイ2 BにSQUIDプロキシを使用していました、そして、私は本当にKubernetesで私の手を汚くしたかったです.

    イカは何ですか。


    からのArchWiki SQUIDは、HTTP、HTTPSとFTPのためのキャッシュプロキシです.

    始めましょう


    私は私のラズベリーパイのためにイカプロキシコンテナを見つけることができなかったので、私は私自身のコンテナファイルを取り出しなければなりませんでした.
    < div >
    現在、我々はこのタグを使ってこのイメージを構築することができます.これは、アプリケーションに新しい変更をロールバックしたい場合に重要です.最新のフラグを持っているのは、あなたの展開においてバージョンタグを持つのが良いことです.br/>
    <> P >
    クラスをハイライト表示する
    podman build squid-proxy:v1 .
    
    < div >
    問題は今どのように私はKubernetesは私が構築したこのイメージを認識する取得ですか?それはDockerハブにありません.私は、これもDockerハブにもこれを展開することができました、しかし、私は代わりにDockerレジストリコンテナを紡ぎませんでしたbr/>
    <> P >
    クラスをハイライト表示する
    podman run -d -p 5000:5000 --restart on-failure --name registry registry:2
    
    < div >
    それから私は次の< br/>を走らせた
    <> P >
    クラスをハイライト表示する
    podman build -t localhost:5000/squid-proxy:v1 .
    podman push --tls-verify=false localhost:5000/squid-proxy:v1
    
    < div >
    <ノート>--tls-verify=false TLSがなくて、イメージプッシュが失敗するので、これは必要です.p >

    イカの展開🦑 Kubernetesに


    私はまだKubernetesにかなり新しいです、Kubernetesの基本単位はポッドです、ポッドはそれの中に複数の容器を持つことができる何かです.私が直接ポッドの中でこれを展開することができる間、私はKubernetesが配備ファイルを通して私のためにそれをするでしょうp >
    Kerbernetesがどのように動作しているかについての概要を見たいなら、< http ://www . linux . com/>
    このようにして、SQUIDをKubernetesに配備するロードバランササービスと配備を作成しました.p >
    < div class ="LagagCount - gig - Link - tag "
    "スクリプトのID "https://gist.github.com/afro-coder/809384996d03e69917620ad769a123b5.js?file=squid-展開.YAML//>
    < div >
    私はまだYAMLのすべてのフィールドを共有するドキュメントを見つけていませんが、これはイメージが展開される方法です
    <> P >
    クラスをハイライト表示する
    spec:
          volumes:
            - name: log-dir
              emptyDir: {}
          containers:
          - name: squid
            image: localhost:5000/squid-proxy:v2
              #imagePullPolicy: Never
            ports:
            - containerPort: 3128
            volumeMounts:
              - name: log-dir
                mountPath: "/var/log/squid"
          - name: tailer
            image: busybox
            command:
            - "/bin/sh"
            - "-c"
            args:
              - tail -F /var/log/squid/access.log
            volumeMounts:
              - name: log-dir
                mountPath: "/var/log/squid"
    
    < div >
    < p >あるvolume squidがログを送信しないので、両方のコンテナに共通のフォルダSTDOUT


    これを実行するには、単に< br/>を実行できます
    <> P >
    クラスをハイライト表示する
    $ kubectl apply -f squid-deployment.yml
    deployment.apps/squid-dployment unchanged
    service/squid-service unchanged
    
    < div >
    < tt >サービスを展開し、配備はPOD < br/>を作成します.
    <> P >
    クラスをハイライト表示する
    $ kubectl get service
    $ kubectl get service
    
    < div >
    <出力> < br/>
    <> P >
    クラスをハイライト表示する
    $ kubectl get svc
    NAME            TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)          AGE
    kubernetes      ClusterIP      10.43.0.1       <none>           443/TCP          48d
    squid-service   LoadBalancer   10.43.114.127   192.168.31.151   3128:32729/TCP   3d14h
    
    < div >
    <展開>
    <> P >
    クラスをハイライト表示する
    $ kubectl get deploy
    $ kubectl get deployment
    
    < div >
    以下で< br/>を表示します.
    <> P >
    クラスをハイライト表示する
    NAME              READY   UP-TO-DATE   AVAILABLE   AGE
    squid-deployment   1/1     1            1           7d19h
    
    < div >
    最後にポッドを手に入れることですbr/>
    <> P >
    クラスをハイライト表示する
    $ kubectl get po OR kubectl get pods
    NAME                               READY   STATUS    RESTARTS   AGE
    squid-dployment-86bfc8d664-swwzj   2/2     Running   0          4d14h
    svclb-squid-service-54nrc          1/1     Running   0          4d1h
    
    < div >
    すべてが起動して実行されると、curlヘッダに次のように表示できますbr/>


    < tt >ログを見て以下のようにします.br/>
    <> P >
    クラスをハイライト表示する
    kubectl logs service/squid-service -c tailer -f
    
    < div >
    それが全部です.p >
    これは、私がどんな間違いをしたか、どんな変化も提案したいと思っているならば、Kubernetesを使っている単純で簡単な配備です、そして、下記のコメントとlt ;3