摘要:下面我想介紹另一種學習思路,自頂向下的學習。是通過虛擬機創建集群,支持多種虛擬機,我這里用的。對內或對外暴露服務。和的控制器,通過配置的規則來管理。三個主要的命令行程序用了啟動集群。需要在所以節點上運行,處理集群內部通訊,類似。
之前就玩過docker,但是一直不知道怎么把容器運用到生產上。構建一個docker鏡像,把他run起來很簡單;難的是容器的部署(CICD),容器的網絡,數據持久化等。如果我們像之前一樣,打包好鏡像,通過ssh連接到目標服務器run起來,這和打包成二進制傳上去似乎也沒多大進步。
k8s就是幫我們解決這些難點的工具。k8s是master-node架構,通過master管理node。首先需要將你的機器組成k8s集群,集群機器的內網應該是連通的,這樣你的集群就捆綁成了一個整體由k8s接管了。你只需要準備好配置文件,用k8s的api或cli(命令行)發布鏡像即可,k8s會根據你配置的規則來管理容器,應用場景有:一份鏡像需要部署多少個容器(replicaSets),服務的升級策略(滾動更新),服務的容災策略(某個node掛了可以在其他node補上缺失的容器),彈性伸縮(監控CPU等指標達到臨界值后自動增加容器)等。
怎么樣?是不是覺得很cool,你可能迫不及待的想去把k8s用起來了,可是你打開k8s官方文檔大段大段的英文和各種生疏的概念就把你整懵了。你跟著教程敲了一遍,一大堆yaml配置,全是命令行操作,可能你已經被墻給干倒了(天朝ha);還有一堆概念,什么Pod, Deployment, ReplicaSet, Service都是些啥玩意。可能你花了大半天耐心的把文檔過了一遍,覺得這個東西根本落不了地啊,這一大堆配置和命令行,這誰頂得住,k8s這么先進不應該是可視化的點點就完事了嗎?我一開始天真的以為k8s dashboard能幫幫我,費了點力氣把它裝好后,發現只有一些監控數據。
下面我想介紹另一種學習思路,自頂向下的學習。其實你一開始不用了解k8s的各種概念,只需要看看別人是怎么用k8s的就行了(都9102年了,那些很潮的公司都已經玩了很久了)。不是說學東西必須得打好基礎嗎?自頂向下是個什么鬼?拿學開車舉例,你開始只是在路上看到別人開車,很拉風可撩妹,比兩輪的安全,不怕風吹雨打的,教練我也要開車;你去報了駕校(看到這里你肯覺得我要忽悠你報培訓班),你摸到了車看到別人是咋開的,了解了基本知識你就可以在訓練場地慢慢蠕動了(測試環境),你甚至不用了解交規,更不用了解汽車的原理,這些后面可以慢慢補。補好基礎了你就可以上路,然后你可能需要了解汽車原理,改裝它優化它,再練一練排水渠過彎的技巧,成為一代老司機。
回到正題,我們學k8s同樣可以先看看別人是咋用的,再去了解其中細節,掌握它。咋看呢?一大部分公司還沒跟上潮流,這時我們可以借助開源和云服務。
首先我們的思路沒有問題,要便捷的使用k8s我們需要一個可視化管理平臺。
開源的有rancher、Qihoo360/wayne等,云服務阿里云、騰訊云、AWS都提供容器服務管理后臺。
這里就拿rancher開始吧,畢竟開源免費。值得一提的是,阿里云等的容器服務按量積分,master可托管,弄一兩天低配node,一天也就幾塊。
在本地啟動rancher容器:
sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v /opt/rancher:/var/lib/rancher rancher/rancher
打開https://127.0.0.1:8443平臺,可以看到cluster, node, namespace, member等功能。
下面我們需要準備一個k8s cluster(集群),用minikube可以方便的部署一個本地集群。minikube是通過虛擬機創建集群,支持多種虛擬機,我這里用的virtualBox。啟動很簡單,一個命令minikube start,困難的是墻,下面貼一下配置代理的腳本:
function ministart() { export HTTP_PROXY=http://192.168.99.1:1089 export HTTPS_PROXY=http://192.168.99.1:1089 export NO_PROXY=localhost,127.0.0.1,10.96.0.0/12,192.168.99.0/24,192.168.39.0/24 minikube start --docker-env=HTTP_PROXY=$HTTP_PROXY --docker-env=HTTPS_PROXY=$HTTPS_PROXY --docker-env=NO_PROXY=$NO_PROXY --registry-mirror=https://registry.docker-cn.com }
注意一下這個ip,不能使用127.0.0.1,因為虛擬機需要使用宿主的代理,虛擬機跟宿主機通訊是使用虛擬網卡創建的網段,默認宿主的ip為192.168.99.1,虛擬機是192.168.99.100。你還得把你的梯子監聽的地址改改,127.0.0.1->0.0.0.0,監聽所有網卡。同樣rancher里的ip也應使用192.168.99.1,這個ip必需是所有集群都能訪問到的,如果你是用docker自帶的k8s集群,你可以用ifconfig找一個無線網或有線網的ip,反正不能使用127.0.0.1。
minikube下載一些必需鏡像后,k8s集群就在虛擬機里啟動了,可以使用minikube ssh登錄到虛擬機里探查一番。下面我們在rancher里引入集群:
集群引入了之后我們來部署我們第一個app,一個echo-server:
等了一會兒k8s把容器部署好了,上面配置了暴露隨機端口值是32192,我們訪問192.168.99.100:32192就能看的echo-sever返回的信息了。我們覺得一個pod不夠,點擊+號,k8s會幫我們做水平擴容啟動第二個pod,雖然minikube是但節點的,但是依靠容器的隔離特性,單節點照樣能部署多個相同應用。
體驗一下rancher的pipeline,集成了CICD功能。配置好代碼倉庫后run起來,會創建Jenkins等容器。等了好一會兒后,可以看到workloads里example-server部署好了。
文檔里有介紹pipeline的原理: https://rancher.com/docs/ranc...。rancher會自動創建三個組件:
Jenkins 用了執行pipeline
Docker Registry 一個內部Docker Registry,用來存放pipeline build的鏡像,鏡像在pipeline生命周期后不會保留。如果需要在外部使用image,請配置外部倉庫。
Minio 對象存儲,用了存放日志文件
Docker Registry和Minio的數據持久化可以為其配置volume。
ok,下面自行探索一下rancher的各個頁面,有Workloads,Load blance,Service discory,pipeline這些部署常用的,還提供報警、日志、監控、用戶權限等功能,這就是一個完善的k8s管理平臺了,到此你應該了解k8s大概有哪些用處了。
下面你需要再把k8s官方文檔撿起來看一看,或者是一本系統介紹k8s的書籍,把你在rancher上用到的功能和k8s的概念對應起來,現在你才能抓住哪些是重點。
一些概念:
pod:k8s最小調度單位,可以是一個或多個容器。
service:對內或對外暴露k8s服務。
deployment:pods和replicaSets的控制器,通過deployment配置的規則來管理pods。
三個主要的命令行程序:
kubeadm:用了啟動k8s集群。
kubelet:需要在所以節點上運行,處理集群內部通訊,類似agent。
kubectl:客戶端工具,用戶用它來給k8s集群發指令,類似ssh,可配置好秘鑰遠程訪問,默認配置是 ~/.kube/config。
一些常用的命令:
kubectl get all -A kubectl get namespaces kubectl get svc kubectl get pods kubectl get deployments hello-world # 暴露服務 kubectl expose deployment hello-world --type=NodePort --name=example-service # logs kubectl -n cattle-system logs -l app=cattle-cluster-agent # exec # -c --container kubectl exec -it pod-name -c container-name -- /bin/bash
更多細節日后再慢慢探索,下面總結一下:
k8s專注于容器部署這一塊,它不提供鏡像打包(CICD),鏡像儲存(registry),也沒有管理平臺,更沒有service mesh(服務通訊管控)。如果你要落地和完善,還有很多東西需要你去搞。那個rancher平臺看起來很美好,但是實際用起來問題挺多,更適合在其上二次開發。其實最靠譜的落地方案還是使用云服務,用錢來解決問題,先小規模用起來,摸熟了再研究其他姿勢。
本文想表達的一個思想是:學習一個東西,你應該先搞清楚why(為什么用?有哪些應用場景?別人咋用的?),然后再研究how(怎么用),這樣才能抓住重點,學起來事半功倍。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27870.html
摘要:下面我想介紹另一種學習思路,自頂向下的學習。是通過虛擬機創建集群,支持多種虛擬機,我這里用的。對內或對外暴露服務。和的控制器,通過配置的規則來管理。三個主要的命令行程序用了啟動集群。需要在所以節點上運行,處理集群內部通訊,類似。 之前就玩過docker,但是一直不知道怎么把容器運用到生產上。構建一個docker鏡像,把他run起來很簡單;難的是容器的部署(CICD),容器的網絡,數據持...
摘要:下面我想介紹另一種學習思路,自頂向下的學習。是通過虛擬機創建集群,支持多種虛擬機,我這里用的。對內或對外暴露服務。和的控制器,通過配置的規則來管理。三個主要的命令行程序用了啟動集群。需要在所以節點上運行,處理集群內部通訊,類似。 之前就玩過docker,但是一直不知道怎么把容器運用到生產上。構建一個docker鏡像,把他run起來很簡單;難的是容器的部署(CICD),容器的網絡,數據持...
摘要:于美國舊金山當地時間年月日宣布推出,并公布了首批通過認證的個平臺的名單。此次認證項目中得到認證的產品與平臺確保具有一致性及可移植性,可確保完整的按照規定運行,因此用戶可以獲得無縫且穩定的體驗。成為了首批獲得認證的平臺之一。 CNCF于美國舊金山當地時間2017年11月13日宣布推出Certified Kubernetes Conformance Program,并公布了首批通過認證的3...
摘要:于美國舊金山當地時間年月日宣布推出,并公布了首批通過認證的個平臺的名單。此次認證項目中得到認證的產品與平臺確保具有一致性及可移植性,可確保完整的按照規定運行,因此用戶可以獲得無縫且穩定的體驗。成為了首批獲得認證的平臺之一。 CNCF于美國舊金山當地時間2017年11月13日宣布推出Certified Kubernetes Conformance Program,并公布了首批通過認證的3...
摘要:里程碑更新支持添加自定義節點此次更新之前的版本只支持和,而如今的最新版本,用戶可以在創建集群時添加了自定義節點了。連接成功后,將按照用戶指定的角色所指示的方式為該節點安裝相應的組件。 Rancher是一個開源的全棧化企業級容器管理平臺,用戶在Rancher可視化界面上以點選的方式,即可一鍵完成所有容器基礎設施(網絡、存儲、負載均衡等)的對接與部署,確保容器在任何基礎架構上(公私有云、虛...
閱讀 1624·2021-11-02 14:42
閱讀 521·2021-10-18 13:24
閱讀 938·2021-10-12 10:12
閱讀 1816·2021-09-02 15:41
閱讀 3201·2019-08-30 15:56
閱讀 2873·2019-08-29 16:09
閱讀 2056·2019-08-29 11:13
閱讀 3617·2019-08-28 18:06