從今天起,咱們開始研究k8s ,之因此叫k8s,是由於Kubernetes這個單詞的K和S之間還有8個字母,爲了方便書寫,就直接用8來代替.國外也會偷懶,這就是證據哈哈,固然這是國際慣例前端
Kubernetes能夠幹嗎?如下就是他能作的事情,若是你是運維還不開始學習,不久的未來就完全失業了:
python
自動化容器的部署和複製docker
隨時擴展或收縮容器規模vim
將容器組織成組,而且提供容器間的負載均衡centos
很容易地升級應用程序容器的新版本api
提供容器彈性,若是容器失效就替換它,等等.緩存
實際上,使用Kubernetes只需一個部署文件,使用一條命令就能夠部署多層容器(前端,後臺等)的完整集羣:
安全
$ kubectl create -f single-config-file.yaml
接下來咱們一塊兒搭建單點集羣:
網絡
實驗環境:
負載均衡
坑一:
若是你是新手,建議使用全新的安裝環境,從網絡到yum源都是剛剛配置好的,這樣不容易出錯,要否則,稍有不慎就會一堆報錯,而你百度也百度不出來結果
第一步: 把/etc/yum.repos.d/ 文件夾下全部的文件移動到/usr/local/benfei/ 文件夾下. 由於我是用的虛擬機,在操做的時候,我直接把文件刪除了(這個在生產環境下是不容許的,切記)
1 df -h 2 umount /dev/sr0 //這裏是卸載開機自動掛載的光驅 3 cd /etc/yum.repos.d/ 4 ls 5 rm -rf ./*
第二步: 設置網絡yum源,而後進行更新,設置緩存
7.wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 8 ls 9 yum update 10 yum makecache
第三步: 關閉防火牆,centos7默認使用firewall爲防火牆,而Kubernatesd Master與工做Node之間會有大量的網絡通訊,安全的作法是在防火牆上配置各類須要相互通信的端口號,在一個安全的內部網絡環境中能夠關閉防火牆服務
11 systemctl disable firewalld.service 12 systemctl stop firewalld.service
第四步: 安裝etcd和kubernetes軟件,在安裝的時候docker就順帶安裝了.
13 yum install -y etcd kubernetes
第五步:配置修改
14 vim /etc/sysconfig/docker
將配置文件裏OPTIONS 修改爲以下圖所示的內容
15 vim /etc/kubernetes/apiserver
此處將配置文件中的框起來的地方的ServiceAccount去掉
若是不去掉是會報錯的
第六步: 按照以下步驟啓動全部服務,若是啓動成功,不會有任何提示.
16 systemctl start etcd 17 systemctl start docker 18 systemctl start kube-apiserver.service 19 systemctl start kube-controller-manager.service 20 systemctl start kube-scheduler.service 21 systemctl start kubelet.service 22 systemctl start kube-proxy.service
如今一個單機版的K8S集羣環境就安裝成功了,接下來咱們就能夠在這個單機版的集羣中愉快的玩耍了.
[root@localhost yum.repos.d]# kubectl get svc NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes 10.254.0.1 <none> 443/TCP 1h
能夠看到,K8s服務已經跑起來了.
在這裏簡單介紹下YAML配置文件,咱們在下一個篇章裏會用到
YAML讀做/ˈjæməl/,他的本質就是一種通用的數據串行化格式.自己不須要安裝,咱們在學python時候也會常常用到.
基本語法以下:
對大小寫比較敏感
使用縮進表示層級關係
使用YAML用於k8s的定義有不少好處,以下:
便捷性:你將再也不須要添加大量的參數到命令行中執行命令
可維護性:YAML文件能夠經過源頭控制,能夠跟蹤每次的操做
靈活性:經過YAML你將能夠建立比命令行更加複雜的結構
YAML的結構類型,只要知道兩種就能夠: Lists和Maps
在K8S這裏只要用如下幾個用法就能夠了
對象是一組鍵值對,使用冒號來結構來表示
apiVersion: v1
kind: ReplicationController
這裏定義了一個RC
所謂的RC就是保證在同一時間可以運行指定數量的Pod副本
你能夠理解爲Pod就是用來包裹容器的,在k8s中咱們不會直接操做容器,而是把容器包裝成Pod在進行管理.Pod是k8s裏面最基本的操做單元.
說多了,這裏理解寫法就能夠了,A: B的格式