从《Kubernetes 实践入门》这本书中学习,给初学者提供关于 Kubernetes 的稳定部分介绍

背景 – 一种选择仅需一个答案
社会背景

我个人希望能够创建并部署一个能够运行未来应用程序的环境,以此来提升我对应用程序的知识。同时,我也想进一步更新我的知识。

在所有的东西中,我遇见了这本书,并决定留下我所做的一些事情,它不仅是写给未来的自己的一封信,也是希望能够重新审视一下自己的信件。

这是对于我的学习有引用和参考价值的书籍介绍。

关于实际学习的事实

我希望能夠一邊閱讀書籍,一邊逐章進行一點點的學習。同時,我也想透過使用GitHub上的源代碼來學習。這一章的學習可能主要是將書中的內容複寫。

开始勉强

存储库

请将以下内容用中文进行释义,仅需一个选项:
https://github.com/kubernetes-practical-guide/examples/tree/master/ch6.1.2/manifests/mattermost

要受益于使Pod运行更稳定的机制。

    • Kubernetes にアプリケーションの状態を伝える必要がある。

 

    • Kubernetes には状態を伝える仕組みとして Probe という仕組みが用意されている

Probe は設定されたアクションを行って Kubernetes はそのアクションの結果を判断してくれる

Probe のアクション内容exec任意のコマンドを実行するhttpGethttp/https の Get リクエストを送信するtcpSockettcp コネクションを確立する

据说Kubernetes的Probe有两种类型的Probe,分别是Liveness Probe和Readiness Probe。

活跃探针 (Huó

    • Kubernetes はコンテナが正常に起動しているかを調べる為にこれを使用する

 

    Probe が失敗した場合は、正常に起動していないと判断してコンテナを再起動する

准备探测

    • Kubernetes はコンテナの準備ができてトラフィックを受け付ける状態になったかどうかを調べるためにこれを使用する

 

    Probe が成功した場合は、Service のロードバランス先に Pod を追加する

探针设置确认

+         livenessProbe:
+           initialDelaySeconds: 90
+           timeoutSeconds: 5
+           periodSeconds: 15
+           httpGet:
+             path: /api/v4/system/ping
+             port: 8065
+         readinessProbe:
+           initialDelaySeconds: 15
+           timeoutSeconds: 5
+           periodSeconds: 15
+           httpGet:
+             path: /api/v4/system/ping
+             port: 8065
           mountPath: /etc/mysql/conf.d
         - name: backup
           mountPath: /mnt/backup
+        livenessProbe:
+          exec:
+            command:
+            - /bin/bash
+            - -ec
+            - >-
+              mysqladmin -h localhost --user=root --password=${MYSQL_ROOT_PASSWORD} ping
+          initialDelaySeconds: 5
+          periodSeconds: 30
+          timeoutSeconds: 5
+        readinessProbe:
+          exec:
+            command:
+            - /bin/bash
+            - -ec
+            - >-
+              mysql -h localhost --user=root --password=${MYSQL_ROOT_PASSWORD} -e "SELECT 1"
+          initialDelaySeconds: 5
+          periodSeconds: 30
+          timeoutSeconds: 5
       volumes:
       - name: initdb
         emptyDir: {}

可以在探针中设置的参数。

パラメータ説明デフォルト値initialDelaySecondsProbe を開始するまで待機する秒数なしperiodSecondsProbe の実行間隔10timeoutSecondsProbe のタイムアウト1successThresholdProbe が成功したとみなす回数のしきい値1failureThresholdProbe が失敗したとみなす回数のしきい値3

使它能够优雅地结束

    • 実行中の処理などを正常に終わりに向かわせてからプロセスを終了させる

 

    PreStop フックを使うことで終了させる時間を調整して Pod をシャットダウンすることができる
+        lifecycle:
+          preStop:
+            exec:
+              command:
+              - sleep
+              - 5s

请告诉我希望最低启动的 Pod 数量。

    • 対象 Node の停止が伴うメンテナンスを行う場合には、動いている Pod を削除する必要がある

 

    • Pod を削除するとコンテナが停止してしまう為、Pod を他のノードへ退避しないといけない

 

    瞬時に違う Node へ Pod を対しすると瞬間的に動いていない時間が発生してしまう

为了避免上述情况,Kubernetes 提供了 PodDisruptionBudget 这个机制。

apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  name: mattormost-pdb
spec:
  maxUnavailable: 1
  selector:
    matchLabels:
      app: mattermost
パラメータ説明minAvailable最低動作してほしい Pod の最小数または割合maxUnavailable動作しないことを許容する Pod の最大数または割合

当指定 maxUnavailable 时,可以删除的 Pod 数量会按照小数点后进位计算,最低值为1;而 minAvailable 会按照小数点后舍去计算,最低值为0。

下一步我们将开始学习第6.2章。

根据负荷增强应用程序的处理能力。

最后

我被书中提到的一点深深震撼了,那就是通过向 Kubernetes 传达应用程序的状态。它通过调用 mattermost 的 API 来检查健康状况,并通过执行命令来检查 MySQL 的连接。

我意识到对于我所创建的应用程序,类似于Mattermost文档中的内容,或者服务的服务器如何运作的快速确认非常重要。

之前的帖子

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)Pod部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)NameSpace部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)Label部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)ReplicaSet部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)Deployment部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)Service部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)ConfigMap部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)Secret部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)操作部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)体验部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)体验部分2

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)体验部分3(Label操作)

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)体验部分3(OwnerReference操作)

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)清单部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)清单(ConfigMap)部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)通信部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)通信部分2

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)通信部分3

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)通信部分4

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)公开部分1(NodePort)

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)公开部分2(LoadBalancer)

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)公开部分3(Ingress)

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)外部存储部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)外部存储部分2

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)StatefulSet部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)StatefulSet部分2

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)StatefulSet部分3

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)规模部分

 

    1. 初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)Mattermost连接部分

 

    初学者的Kubernetes入门(从书籍Kubernetes实践入门的模拟练习中学习)任务部分
广告
将在 10 秒后关闭
bannerAds