1. 程式人生 > >極簡的配置單節點Kubernetes(k8s)叢集

極簡的配置單節點Kubernetes(k8s)叢集

在傳統的概念當中,Docker是簡單易用的,Kubernetes是複雜強大的。 深入瞭解之後會發現Docker的簡單是因為使用者可以從基本功能開始用起, 只需要一臺Linux主機,執行一下apt-get install docker-engine 或者yum install docker-engine,立馬就可以用docker run啟動一個新的容器, 整個過程與使用者之前積累的Linux軟體使用體驗高度一致。 而Kubernetes則要求使用者要分別配置SDN,ssl證書,etcd,kubelet,apiserver, controller-manager,scheduler,proxy,kubectl等多個元件, 剛剛接觸對架構還不瞭解的新人一下就懵了。 過高的早期門檻把許多對Kubernetes感興趣的使用者擋在了外面,給人留下一種難以上手的感覺。

事實上,當整個系統擴充套件到多個節點,需要通盤考慮身份認證,高可用, 服務發現等高階功能後,Docker Swarm與Kubernetes的複雜度是接近的。 也許我們最初的比較出現了一點偏差, 將位於更高階的叢集管理和排程系統Kubernetes和位於底層的容器引擎Docker Engine直接比較並不恰當。

現在我們瞭解到Kubernetes的複雜是因為它提供了更多的功能, 但是如果我們無法解決Kubernetes的上手困難問題,始終會有推廣上的障礙。 對此,Kubernetes社群做出了許多努力。比如:

  • minikube可以方便的在本機用虛擬機器建立一個開箱即用的Kubernetes叢集
  • kubeadm可以自動化的將多臺Ubuntu或者CentOS主機組建成叢集
  • nanokubekid等自動初始化指令碼

充分利用已有的工具, 我們可以在單臺伺服器上把Kubernetes的上手體驗簡化到與Docker接近的程度, 新使用者可以不再糾結於安裝和配置,儘快開始使用Kubernetes完成工作, 在業務需求增長時,再擴充套件叢集成為多節點高可用的完整叢集。

下圖是一張學習曲線的示意圖,可以看到當引入單節點Kubernetes作為過渡之後, 整個學習曲線更加平滑,在早期簡單環境時更接近Docker, 在後期環境完整時又能夠充分利用Kubernetes的優勢。20170204141929

有多種方法可以建立單節點的Kubernetes叢集,接下來分享其中一個比較簡單方便的。

準備工作

首先準備一臺Linux伺服器,根據Docker中文文件安裝好Docker。

$ curl -o localkube https://storage.googleapis.com/minikube/k8sReleases/v1.5.1/localkube-linux-amd64
$ chmod +x localkube
$ curl -O https://storage.googleapis.com/kubernetes-release/release/v1.5.2/bin/linux/amd64/kubectl
$ chmod +x kubectl

localkube將Kubernetes所有的依賴程式全部打包成為了一個獨立的可執行檔案, 使用它可以省略掉幾乎所有的配置流程,直接將Kubernetes跑起來。

目前localkube已經被合併進了minikube,最新的版本需要從minikube中下載。

kubectl是Kubernetes的客戶端程式,可以用它控制叢集。

啟動Kubernetes

使用localkube啟動叢集非常簡單:

$ ./localkube

當不加任何引數時,localkube會使用預設引數啟動, 它所監聽的localhost:8080將被用於接受控制指令。

這裡並沒有在後臺執行localkube,如果你需要後臺執行, 可以自行使用Linux上已有的各種工具完成。

使用kubectl控制叢集

接下來的操作與多節點的叢集完全一樣。我們可以用kubectl來控制叢集,比如:

$ ./kubectl run nginx --image nginx

是不是和docker run nginx幾乎一樣?在這裡我們不詳細介紹Kubernetes的操作, 請參考官方文件學習Kubernetes的使用方法。

需要指出的是,由於是極簡的配置,並沒有配置遠端控制所需要的證書, 所以不能在本地電腦上控制這個叢集,而需要ssh到伺服器上進行控制。 這和預設的Docker配置是一致的。

總結

從上面的流程可以看到,Kubernetes也可以變得很簡單,僅僅需要將所有元件合併到一起就可以了。 而這也恰恰是Docker選擇的策略,在Docker的二進位制檔案中,被打包進了Docker Engine, 分散式儲存,Docker Swarm等功能,使用起來只需要一個docker指令就可以完成全部的操作。 接下來需要思考的問題是,既然合併到一起會更加簡單,那為什麼Kubernetes會把各個元件拆開呢? 今後在詳細介紹Kubernetes架構的時候會再給大家做詳細的分析,這裡就暫時留給大家下來自己思考了。

在剛接觸Kubernetes的時候,使用all in one的localkube是有好處的。 可以把它整個看作Kubernetes,直接上手開始學習PodService,ReplicaSet這些抽象概念, 而不用特別去關注裡面的元件劃分。雖然暫時只能在一臺伺服器上執行, 不能完全的展現Kubernetes編排和排程的能力,但是用於學習和測試已經完全足夠了。

待對Kubernetes建立了基本的概念之後,再進行多節點的叢集部署, 在那時再來折騰SDN,ssl證書這些更偏重運維的元件時,才會有比較合理的投入產出預期。

還在等什麼?快點把你的Docker主機升級為Kubernetes主機吧。就算沒有聯網形成叢集, 使用更高的抽象來構建你的業務,也將為今後的發展打下良好的基礎。

相關推薦

配置節點Kubernetesk8s叢集_Kubernetes中文社群

在傳統的概念當中,Docker是簡單易用的,Kubernetes是複雜強大的。 深入瞭解之後會發現Docker的簡單是因為使用者可以從基本功能開始用起, 只需要一臺Linux主機,執行一下apt-get install docker-engine 或者yum install docker-en

配置節點Kubernetesk8s叢集

在傳統的概念當中,Docker是簡單易用的,Kubernetes是複雜強大的。 深入瞭解之後會發現Docker的簡單是因為使用者可以從基本功能開始用起, 只需要一臺Linux主機,執行一下apt-get install docker-engine 或者yum insta

Qihoo360/wayne安裝部署管理Kubernetesk8s叢集

一、概述 Kubernetes 官方本身就提供了一個管理叢集的 Dashboard 外掛,但是官方的 Dashboard 外掛還是有一些侷限性,近日360開源了內部使用的 Kubernetes Dashboard 外掛:Wayne。 Wayne 是一個通用的、基於 Web 的 Kubernete

KubernetesK8s安裝部署過程--Master節點安裝

emc 不用 ces 成功 sts var 獲取 art health 再次明確下架構: 三臺虛擬機 centos 7.4系統,docker為17版本,ip為10.10.90.105到107,其中105位master,接下來的master相關組件安裝到此機器上。 etc

KubernetesK8s安裝部署過程--node節點部署

sch wan tool pods systemd tps stat mis type hi,everybody,我回來了,之前安裝到flannel之後,文章一直沒有更新,甚至不少小夥伴都來加qq詢問是否繼續更新了, 這裏說明下原因,我在部署1.91node的時候的確出現

『中級篇』Minikube快速搭建K8S節點環境61

去介紹k8s的叢集安裝,本地搭建一個k8s的叢集。 不會科學上網的老鐵:Kubectl安裝 按照官網安裝,minikube根據我文章最下面的不科學上網安裝。也就是原始碼中No.8裡面的minikube.exe的方式配置環境變數,不入的坑不希望你也入坑。謝謝支

Kubernetesk8s中文文件 Ubuntu物理節點上部署Kubernets叢集_Kubernetes中文社群

譯者:王樂 介紹 這片文件介紹瞭如何在Ubuntu節點上部署Kubernetes,這裡我們用1個主節點和3個普通節點的安裝來作為範例。你可以輕鬆變動設定擴充套件到任意數量的節點。最初的想法是受到@jainvipin的Ubuntu單節點部署工作的啟發。單節點的部署介紹也涵蓋在本章節中。 前提條件 所

Kubernetesk8s中文文件 API Server埠配置_Kubernetes中文社群

譯者:Nancy 本文件介紹Kubernetes apiserver服務的埠以及如何訪問這些埠。 服務的Ports和IPs Kubernets API Server程序提供Kuvernetes API。通常情況下,有一個程序執行在單一kubernetes-master節點上。 預設情況,Kubern

Kubernetesk8s中文文件 配置檔案使用入門_Kubernetes中文社群

譯者:鍾健鑫 除了其他地方所描述的命令列式風格的命令以外,Kubernetes還支援以YAML或者JSON格式的配置方式,很多時候,配置檔案是優於純命令方式的,一旦他們能夠被簽入版本管理,檔案的變化也能夠像程式碼檔案一樣被回顧和管理,就能生產出更健壯,可靠和可存檔系統。 通過pod的配置檔案來執

KubernetesK8s安裝部署過程--證書安裝

更改 目錄 hand /etc 主題 nbsp kubecon 安裝部署 post 一、安裝前主題環境準備   1、docker安裝   建議使用官網yum源安裝,添加yum源之後,直接yum install docker即可   2、關閉所有節點的selinux

KubernetesK8s安裝部署過程--創建高可用etcd集群

方式安裝 10.9 修改配置 取消 roo initial code clas list 這裏的etcd集群復用我們測試的3個節點,3個node都要安裝並啟動,註意修改配置文件 1、TLS認證文件分發:etcd集群認證用,除了本機有,分發到其他node節

Kubernetesk8s 實驗總結

K8s 總結 上面左邊是我的個人微信,如需進一步溝通,請加微信。 右邊是我的公眾號“Openstack私有雲”,如有興趣,請關註。 在上篇博文《Kubernetes 入門學習》中提到了Katacoda實驗環境可以進一步熟悉K8S的使用,具體網址是: https://www.katacoda.c

Kubernetesk8s入門、單機版安裝、kuberctl指令、k8s服務實例

單機版 nbsp href Kubernete net 實例 http itl 安裝 https://blog.csdn.net/qq_34701586/article/details/78732470Kubernetes(k8s)入門、

初識KubernetesK8s:理論基礎

工具 ron 一個 master 升級版 調度 tor sele 第2版 Kubernetes是什麽?Kubernetes,簡稱K8s,是用8代替8個字符“ubernete”而成的縮寫。Kubernetes是Google開源的一個容器編排引擎,同時也是一個開源的容器集群管理

Centos7安裝部署KubernetesK8s集群

signed node use ots 新的 b- 分區 str ext Kubernetes集群的安裝有多種方式:下載源碼包編譯安裝、下載編譯好的二進制包安裝、使用kubeadm工具安裝等。本文是以二進制文件方式安裝Kubernetes集群。系統環境 主機名 IP地

Docker系列:通過Docker安裝使用 Kubernetes K8s

Docker社群版從17.12版本開始已經提供了對Kubernetes的支援。但是由於其安裝過程依賴的映象服務在國內訪問很不穩定,很多朋友都無法配置成功。我們提供了一個簡單的工具幫助大家開啟Docker社群版的Kubernetes功能。 我們需要先安裝好Docker CE的最新版,18.03 - 18.09

評估KubernetesK8s的無伺服器框架

原文連結:https://rancher.com/blog/2018/2018-04-23-evaluation-of-serverless-frameworks-for-kbe/ 作者:Hisham Hasan 譯者:殷龍飛 評估Kubernetes(K8s)的無伺

Kubernetesk8s中文文件 Kubernetes概述_Kubernetes中文社群

簡介 Kubernetes是一個開源的,用於管理雲平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單並且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。 Kubernetes一個核心的特點就是能夠自主的管理容器來保證雲平臺中的

初識KubernetesK8s:各種資源對象的理解和定義

ash 峰值 假設 sleep mysql linux環境變量 模板 針對 客戶端訪問 一、Pod Kubernetes為每個Pod都分配了唯一的IP地址,稱之為Pod IP,一個Pod裏的多個容器共享Pod IP地址。Kubernetes要求底層網絡支持集群內任意兩個Po

Kubernetesk8s中文文件 在Kubernetes上執行你的第一個容器_Kubernetes中文社群

譯者:鍾健鑫 好了,如果你已經開始了任何一個入門指南,並且啟動了一個Kubernetes叢集。那麼接下來呢? 這個指南會幫助你正對Kubernetes,在其叢集上執行第一個容器。 執行一個容器 (簡單版) 從這時開始,我假設你已經根據其它入門指南安裝了kubectl。 下面這行kubectl命令會