日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kubernetes入门——Kubernetes应用部署

發布時間:2024/10/12 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kubernetes入门——Kubernetes应用部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

郭良帥 百度基礎架構部資深工程師 負責云原生產品研發
本文基于百度云原生團隊『云原生基礎知識概述及實踐』系列視頻課程——『Kubernetes入門—Kubernetes應用部署』梳理.
視頻課程可點擊:https://cloud.baidu.com/video-center/video.html?id=608進行學習。

導讀
在前兩節課,我們學習了Docker(Kubernetes入門——深入淺出講Docker)和Kubernetes(Kubernetes入門——Kubernetes工作原理及使用)相關基礎知識。Docker 實現了應用程序的鏡像化和容器化,但是它的能力局限于單機。當應用規模特別大、需要部署在多臺機器上時,則需要借助 Kubernetes 實現容器的集群化編排與生命周期管理,使得開發者可以更加關注應用本身而不需過多關注 DevOps。

本節課將帶領大家進一步學習Kubernetes。通過實踐與學習,了解Kubernetes的應用部署。 課程主要分為以下四個部分:
第一部分:環境準備
第二部分:應用的組成與描述
第三部分:應用的部署與訪問
第四部分:常見問題排查

01 環境準備

  • 搭建Kubernetes集群的三種方法

一般來說,搭建Kubernetes集群主要有三種方法:

minikube:單機的Demo環境,只能用來做一些演示。
官方鏈接:https://minikube.sigs.k8s.io./docs/start/

kubeadm:可以自建集群,各個組件可定制化,需要對kube有深入的了解,這個方法推薦高階用戶使用。
官方鏈接:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/

CCE:生產環境下,建議盡量采用公有云的成熟產品,比如百度的CCE。
官方鏈接:https://cloud.baidu.com/product/cce.html

02 應用的組成與描述

這一部分,主要介紹Kubernetes對應用的抽象與定義。

- 應用組成

在Kubernetes上,一個典型的無狀態應用由三部分組成:
Deployment:即對應用規格的描述。包括應用的鏡像(對應的是應用的程序)、啟動命令、資源配額(規定了應用在運行中需要用多少資源,包括cpu/memory等)、實例數量(規定應用需要有幾個實例來支撐)。

Configmap :應用的配置,分為兩種,一是簡單的kvalue對,另一種是配置文件。

Service :應用對外暴露的服務地址(是在集群內訪問還是集群外)
以上三個對象互相解耦,創建順序可以隨意。

  • 應用描述

以下結合代碼具體闡述三個部分的內容:

1. Deployment

元數據:metadata,包括name和namespace。Namespace 是k8s 對對象隔離的基本單位,即同一個namespace下不可以有同樣name的對象,不同namespace中可以有相同name的對象。

副本數:spec 中的replicas 字段。即你的應用將來要部署幾個實例。

鏡像地址:image。可以來自dockerhub 或其他鏡像倉庫。

服務端口號:每個應用程序可以暴露一個或多個端口,以此被外界訪問。

啟動命令:應用程序是如何啟動的。
這個yaml里面并沒有寫啟動命令,這就是k8s的方便之處:如果你不寫的話,那么應用程序就默認按照其Dockerfile里指定的啟動命令來啟動。

資源配額:resources包括limits和requests,代表對資源使用的上限和下限。每個里面其實都包含了cpu和memory兩種資源。

掛載目錄: 分為兩個部分,分別是volumeMounts,volumes。volumeMounts代表容器內想如何使用存儲,例如掛載到哪個目錄;volumes代表存儲的來源,比如主機目錄,網絡存儲等。兩者都是數組形式,通過name字段做元素對應。

2. Configmap

元數據:metadata

配置數據:data

技巧:如果直接手寫yaml文件,可以看到有很多縮進比較麻煩,可以使用–from-file將本地的文件直接創建成一個 Configmap。
例如kubectl create configmap hello --from-file=<文件路徑>

3. Service

元數據: metadata。
實例標簽:即spec里面的selector字段,通過app:nginx標簽找到對應的實例(Pod)。

端口號映射:targerPort是容器實際監聽的端口,port是Service產生的虛擬IP所對應的端口,它并不是將來的NodePort,NodePort的取值是隨機的。

服務暴露方式:也就是type字段。如果是NodePort的話,意味著容器所在的宿主機會開一個端口并映射給容器內的端口。

03 應用的部署與訪問

應用如何被外界訪問?

比如,上面我們部署了一個nginx應用在集群中,一般而言有三種訪問方式:

集群內訪問:ClusterIP
這種方式意味著客戶端和服務端都在K8S集群內。

集群外訪問:NodePort
如果客戶端在集群外,可以將Node節點的IP暴露給外界,同時將NodePort告知對方,用Node IP+NodePort的方式實現訪問。

本地代理
通過kubectl的port-forward進行訪問,一般用于調試,不適用于生產環境。
詳細的操作過程大家從13:01處開始回看課件
https://cloud.baidu.com/video-center/video.html?id=608

04 常見問題排查

在最后部分,講師將對上述內容進行實操,并手把手帶你排查常見問題,包括:
?鏡像下載失敗
?應用啟動失敗
?服務訪問不通
?應用異常退出

詳細的操作過程大家從22:13處開始回看課件
https://cloud.baidu.com/video-center/video.html?id=608

總結

以上是生活随笔為你收集整理的Kubernetes入门——Kubernetes应用部署的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。