溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes基礎-2

發(fā)布時間:2020-06-08 11:21:22 來源:網(wǎng)絡 閱讀:132 作者:tom_tuwei 欄目:系統(tǒng)運維

1.深入理解Pod對象

 1.Pod容器分類
      ? Infrastructure Container: 基礎容器
         ? 維護整個Pod網(wǎng)絡空間
      ? InitContainers: 初始化容器
             ? 先于業(yè)務容器開始執(zhí)行
      ? Containers: 業(yè)務容器
          ? 并行啟動

     2.鏡像拉取策略
         ? IfNotPresent:默認值,鏡像在宿主機上不存在時才拉取
     ? Always:每次創(chuàng)建 Pod 都會重新拉取一次鏡像
     ? Never: Pod 永遠不會主動拉取這個鏡像

    3.資源限制
       Pod和Container的資源請求和限制:
 ? spec.containers[].resources.limits.cpu
 ? spec.containers[].resources.limits.memory
 ? spec.containers[].resources.requests.cpu
 ? spec.containers[].resources.requests.memory
     request可以理解為預分配,即判斷集群現(xiàn)有資源,limit和docker資源限制類似。

 4.重啟策略(restartPolicy)
    ? Always:當容器終止退出后,總是重啟容器,默認策略。
  ? OnFailure:當容器異常退出(退出狀態(tài)碼非0)時,才重啟容器。
  ? Never:當容器終止退出,從不重啟容器。

 5.健康檢查(Probe)

    Probe有以下兩種類型:
      livenessProbe
   如果檢查失敗,將殺死容器,根據(jù)Pod的restartPolicy來操作。
     readinessProbe
    如果檢查失敗, Kubernetes會把Pod從service endpoints中剔除。
 Probe支持以下三種檢查方法:

httpGet
發(fā)送HTTP請求, 返回200-400范圍狀態(tài)碼為成功。
exec
執(zhí)行Shell命令返回狀態(tài)碼是0為成功。
tcpSocket
發(fā)起TCP Socket建立成功。
參考網(wǎng)站:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/

6.調度約束
? nodeName用于將Pod調度到指定的Node名稱上
? nodeSelector用于將Pod調度到匹配Label的Node上

7.故障排查
Kubernetes基礎-2

2.部署應用常用控制器

 1.Pod與controllers的關系

    ? controllers:在集群上管理和運行容器的對象
    ? 通過label-selector相關聯(lián)
    ? Pod通過控制器實現(xiàn)應用的運維,如伸縮,滾動升級等

    2.Deployment
       ? 部署無狀態(tài)應用
   ? 管理Pod和ReplicaSet
         ? 具有上線部署、副本設定、滾動升級、回滾等功能
       ? 提供聲明式更新,例如只更新一個新的Image
         應用場景: Web服務,微服務

    3.DaemonSet
      ? 在每一個Node上運行一個Pod
      ? 新加入的Node也同樣會自動運行一個Pod
            應用場景: Agent
             https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/

    4.Job
       Job分為普通任務(Job)和定時任務(CronJob)
   ? 一次性執(zhí)行
    應用場景:離線數(shù)據(jù)處理,視頻解碼等業(yè)務
            https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/

    5.CronJob
       定時任務,像Linux的Crontab一樣。
     ? 定時任務
             應用場景:通知,備份
        https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/

    6.Statefulset
       部署有狀態(tài)應用,需要考慮網(wǎng)絡ID 和存儲問題
          如mysql jenkins等

3.Service – 統(tǒng)一入口訪問應用

1.service簡介
? 防止Pod失聯(lián)(服務發(fā)現(xiàn))
? 定義一組Pod的訪問策略(負載均衡
? 支持ClusterIP, NodePort以及LoadBalancer三種類型
? Service的底層實現(xiàn)主要有iptables和ipvs二種網(wǎng)絡模式

2.Pod與Service的關系
   ? 通過label-selector相關聯(lián)
 ? 通過Service實現(xiàn)Pod的負載均衡(TCP/UDP 4層)

3.Service類型
   ClusterIP: 分配一個內部集群IP地址,只能在集群內部訪問(同Namespace內的Pod),默認ServiceType。
      ClusterIP 模式的 Service 為你提供的,就是一個 Pod 的穩(wěn)定的 IP 地址,即 VIP。
 NodePort: 分配一個內部集群IP地址,并在每個節(jié)點上啟用一個端口來暴露服務,可以在集群外部訪問。
       訪問地址: <NodeIP>:<NodePort>
 LoadBalancer: 分配一個內部集群IP地址,并在每個節(jié)點上啟用一個端口來暴露服務。
     除此之外, Kubernetes會請求底層云平臺上的負載均衡器,將每個Node([NodeIP]:[NodePort])作為后端添加進去。一般云服務提供商支持,自建集群不支持該類型。

4.Service代理模式
        Iptables VS IPVS
   Iptables:

? 靈活,功能強大
? 規(guī)則遍歷匹配和更新,呈線性時延
? 可擴展性
IPVS:
? 工作在內核態(tài),有更好的性能
? 調度算法豐富: rr, wrr, lc, wlc, ip hash...
默認是iptables模式,如果需要使用ipvs,需要修改configmap(kubeadm方式部署,如果是二進制,修改kube-proxy配置文件),服務器開啟ipvs。

 5.DNS
     DNS服務監(jiān)視Kubernetes API,為每一個Service創(chuàng)建DNS記錄用于域名解析。
    ClusterIP A記錄格式: <service-name>.<namespace-name>.svc.cluster.local
   示例: my-svc.my-namespace.svc.cluster.local

小結:

  1. 采用NodePort對外暴露應用,前面加一個LB實現(xiàn)統(tǒng)一訪問入口
    1. 優(yōu)先使用IPVS代理模式
    2. 集群內應用采用DNS名稱訪問
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI