1. 程式人生 > >部署kubernetes集群

部署kubernetes集群

wal root 狀態 更新 get 圖片 iptables 來看 pre

一、部署說明
最近很多學生問我kubernetes的技術問題,回答了很多次,突然間想我是不是做一些帖子,可以讓我的學生能看到,身邊想學習的人也都能看到呢!於是我打算開始寫這邊文章,如果訪問量大,學習的人多,我會每周更新一篇的速度去將kubernetes的技術一直更新下去。
隨著雲計算的發展,容器技術不斷的更新,發展。從docker到kubernetes,企業也在不斷的升級自己的架構,代表公司就是我們熟悉的京東,從2015年開始不斷的使用容器來承載自己的業務。2018年618,60%的業務都是由kubernetes來完成的。
相比openstack+kvm+docker來說,kubernetes集群更加穩定,更加容易上手,性能更加優秀。越來越多的公司都在從docker轉到kubernetes上來。
那麽想把業務放到kubernetes,就必須先搭建一個kubernetes集群,接下來我就來給大家來部署一個kubernetes集群。
我們的課程也會從實戰出發,一步一步教給大家如何使用Kubernetes,如何將業務放到kubernetes.
廢話少說,幹活。

            說明:實驗中的機器是CENTOS7.5 關閉firewall selinux。

二、實驗架構
kubernetes集群分為master和node兩個成員。
master負責節點負責對外提供一系列管理集群的 API 接口,並且通過和node節點交互來實現對集群的操作管理。
node負責節點是實際運行 Docker 容器的節點,負責和節點上運行的 Docker 進行交互,並且提供了代理功能。

技術分享圖片
三、實驗步驟
1.根據實驗拓撲配置計算機的主機名、IP地址、hosts.
以master.ayitula.com機器為例,看下圖:
技術分享圖片
2.部署master
[root@master ~]# yum -y install kubernetes etcd
[root@master ~]# vi /etc/kubernetes/config
技術分享圖片
[root@master ~]# vi /etc/kubernetes/apiserver
技術分享圖片
啟動相關服務
etcd:key-value鍵值存儲數據庫,用來存儲kubernetes的信息的。
[root@master ~]# systemctl restart etcd
apiserver:用戶和 kubernetes 集×××互的入口,封裝了核心對象的增刪改查操作,提供了 RESTFul 風格的 API 接口,通過 etcd 來實現持久化並維護對象的一致性。
[root@master ~]# systemctl restart kube-apiserver
controller-manager:主要是用於保證 replicationController 定義的復制數量和實際運行的 pod 數量一致,另外還保證了從 service 到 pod 的映射關系總是最新的。
[root@master ~]# systemctl restart kube-controller-manager
scheduler:負責集群資源的調度和管理,例如當有 pod 異常退出需要重新分配機器時,scheduler 通過一定的調度算法從而找到最合適的節點。
[root@master ~]# systemctl restart kube-scheduler

使用netstat命令查看服務是否全部啟動

技術分享圖片
可以看到我的服務全部啟動成功,OK!去部署Node

3.部署node
[root@node1 ~]# yum -y install kubernetes etcd
[root@node1 ~]# vi /etc/kubernetes/kubelet
技術分享圖片
啟動相關服務
kubelet:運行在node 節點,負責和節點上的 Docker 交互,例如啟停容器,監控運行狀態等。
[root@node1 ~]# systemctl restart kubelet
proxy:運行在 node節點,負責為 pod 提供代理功能,會定期從 etcd 獲取 service 信息,並根據 service 信息通過修改 iptables 來實現流量轉發,將流量轉發到要訪問的 pod 所在的節點上去。
[root@node1 ~]# systemctl restart kube-proxy
docker: docker 容器守護進程
[root@node1 ~]# systemctl restart docker
通過netstat命令查看服務啟動器情況

技術分享圖片

OK,服務啟動成功

部署第二個Node node2.ayitula.com. 步驟同理,我就不在復制了。同上
4.測試
使用kubectl命令查看master是否識別了node
[root@master ~]# kubectl get node

                                        哈哈,看到了吧,實驗完成了。
                                        下一節部署pod,大家下周來看吧!!!

部署kubernetes集群