本項目開源地址:https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster,歡迎提交Issue和PR。node
就在昨天0點,Istio 1.0發佈,已生產就緒!不少同窗都對Istio 1.0躍躍欲試但苦於沒有運行環境。今天我提供給你們一個開箱即用又能夠方便定製的分佈式開發環境的方法,可用於對Istio、Kubernetes自己和應用進行更好的測試。如今咱們使用Vagrant和VirtualBox來建立一個這樣的環境。
linux
注意:Istio 1.0、Kubernetes 1.十一、kube-proxy使用ipvs模式,建議使用至少16G內存的Mac電腦運行。git
須要準備如下軟件和環境:github
8G以上內存centos
Vagrant 2.0+api
VirtualBox 5.0 +bash
提早下載Kubernetes 1.9以上版本(支持最新的1.11.0)的release壓縮包架構
Mac/Linux,不支持Windowsapp
咱們使用Vagrant和Virtualbox安裝包含3個節點的kubernetes集羣,其中master節點同時做爲node節點。ssh
注意:以上的IP、主機名和組件都是固定在這些節點的,即便銷燬後下次使用vagrant重建依然保持不變。
容器IP範圍:172.33.0.0/30
Kubernetes service IP範圍:10.254.0.0/16
安裝完成後的集羣包含如下組件:
flannel( host-gw
模式)
kubernetes dashboard
etcd(單節點)
kubectl
CoreDNS
kubernetes(版本根據下載的kubernetes安裝包而定,支持Kubernetes1.9+)
可選插件
Heapster + InfluxDB + Grafana
ElasticSearch + Fluentd + Kibana
Istio service mesh
Vistio
將該repo克隆到本地,下載Kubernetes的到項目的根目錄。
git clone https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster.gitcd kubernetes-vagrant-centos-clusterwget https://storage.googleapis.com/kubernetes-release/release/v1.11.0/kubernetes-server-linux-amd64.tar.gz複製代碼
注:您能夠在這裏找到Kubernetes的發行版下載地址。
使用vagrant啓動集羣。
vagrant up複製代碼
若是是首次部署,會自動下載 centos/7
的box,這須要花費一些時間,另外每一個節點還須要下載安裝一系列軟件包,整個過程大概須要10幾分鐘。
若是您在運行 vagrant up
的過程當中發現沒法下載 centos/7
的box,能夠手動下載後將其添加到vagrant中。
手動添加centos/7 box
wget -c http://cloud.centos.org/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-1801_02.VirtualBox.boxvagrant box add CentOS-7-x86_64-Vagrant-1801_02.VirtualBox.box --name centos/7複製代碼
這樣下次運行 vagrant up
的時候就會自動讀取本地的 centos/7
box而不會再到網上下載。
訪問Kubernetes集羣的方式有三種:
本地訪問
在VM內部訪問
Kubernetes dashboard
經過本地訪問
能夠直接在你本身的本地環境中操做該kubernetes集羣,而無需登陸到虛擬機中。
要想在本地直接操做Kubernetes集羣,須要在你的電腦裏安裝 kubectl
命令行工具,對於Mac用戶執行如下步驟:
wget https://storage.googleapis.com/kubernetes-release/release/v1.11.0/kubernetes-client-darwin-amd64.tar.gztar xvf kubernetes/platforms/darwin/amd64/kubectl /usr/local/bin/複製代碼
將 conf/admin.kubeconfig
文件放到 ~/.kube/config
目錄下便可在本地使用 kubectl
命令操做集羣。
mkdir -p ~/.kubecp conf/admin.kubeconfig ~/.kube/config複製代碼
咱們推薦您使用這種方式。
在虛擬機內部訪問
若是有任何問題能夠登陸到虛擬機內部調試:
vagrant ssh node1sudo -ikubectl get nodes複製代碼
Kubernetes dashboard
還能夠直接經過dashboard UI來訪問:https://172.17.8.101:8443
能夠在本地執行如下命令獲取token的值(須要提早安裝kubectl):
kubectl -n kube-system describe secret `kubectl -n kube-system get secret|grep admin-token|cut -d " " -f1`|grep "token:"|tr -s " "|cut -d " " -f2複製代碼
注意:token的值也能夠在 vagrant up
的日誌的最後看到。
只有當你安裝了下面的heapster組件後才能看到上圖中的監控metrics。
Heapster監控
建立Heapster監控:
kubectl apply -f addon/heapster/複製代碼
訪問Grafana
使用Ingress方式暴露的服務,在本地 /etc/hosts
中增長一條配置:
172.17.8.102 grafana.jimmysong.io複製代碼
訪問Grafana:http://grafana.jimmysong.io
Traefik
部署Traefik ingress controller和增長ingress配置:
kubectl apply -f addon/traefik-ingress複製代碼
在本地 /etc/hosts
中增長一條配置:
172.17.8.102 traefik.jimmysong.io複製代碼
訪問Traefik UI:http://traefik.jimmysong.io
EFK
使用EFK作日誌收集。
kubectl apply -f addon/efk/複製代碼
注意:運行EFK的每一個節點須要消耗很大的CPU和內存,請保證每臺虛擬機至少分配了4G內存。
Helm
用來部署helm。
hack/deploy-helm.sh複製代碼
咱們使用 istio 做爲 service mesh。
安裝
到Istio release 頁面下載istio的安裝包,安裝istio命令行工具,將 istioctl
命令行工具放到你的 $PATH
目錄下,對於Mac用戶:
wget https://github.com/istio/istio/releases/download/1.0.0/istio-1.0.0-osx.tar.gztar xvf istio-1.0.0-osx.tar.gzmv bin/istioctl /usr/local/bin/複製代碼
在Kubernetes中部署istio:
kubectl apply -f addon/istio/複製代碼
運行示例
kubectl apply -n default -f <(istioctl kube-inject -f yaml/istio-bookinfo/bookinfo.yaml)istioctl create -f yaml/istio-bookinfo/bookinfo-gateway.yaml複製代碼
在您本身的本地主機的 /etc/hosts
文件中增長以下配置項。
172.17.8.102 grafana.istio.jimmysong.io172.17.8.102 servicegraph.istio.jimmysong.io複製代碼
咱們能夠經過下面的URL地址訪問以上的服務。
更多詳細內容請參考Vistio—使用Netflix的Vizceral可視化Istio service mesh。
除了特別說明,如下命令都在當前的repo目錄下操做。
將當前的虛擬機掛起,以便下次恢復。
vagrant suspend複製代碼
恢復虛擬機的上次狀態。
vagrant resume複製代碼
注意:咱們每次掛起虛擬機後再從新啓動它們的時候,看到的虛擬機中的時間依然是掛載時候的時間,這樣將致使監控查看起來比較麻煩。所以請考慮先停機再從新啓動虛擬機。
停機後重啓啓動。
vagrant haltvagrant up# login to node1vagrant ssh node1# run the prosivision scripts/vagrant/hack/k8s-init.shexit# login to node2vagrant ssh node2# run the prosivision scripts/vagrant/hack/k8s-init.shexit# login to node3vagrant ssh node3# run the prosivision scripts/vagrant/hack/k8s-init.shsudo -icd /vagrant/hack./deploy-base-services.shexit複製代碼
如今你已經擁有一個完整的基礎的kubernetes運行環境,在該repo的根目錄下執行下面的命令能夠獲取kubernetes dahsboard的admin用戶的token。
hack/get-dashboard-token.sh複製代碼
根據提示登陸便可。
清理虛擬機。
vagrant destroyrm -rf .vagrant複製代碼
僅作開發測試使用,不要在生產環境使用該項目。
Kubernetes Handbook——Kubernetes中文指南/雲原生應用架構實踐手冊
duffqiu/centos-vagrant
coredns/deployment
Kubernetes 1.8 kube-proxy 開啓 ipvs
Vistio—使用Netflix的Vizceral可視化Istio service mesh
歡迎你們在本公衆號上踊躍投稿,投稿方式請訪問:https://github.com/servicemesher/trans