CentOS7的Yum安裝Kubernetes(k8s)完整版詳細教程


kubeadm部署Kubernetes(k8s)完整版詳細教程   

容易配置,但出問題卻很難發現。

二進制包安裝Kubernetes集群環境完整版

配置麻煩,但不容易出現問題,也容易排查。

 

對於上面安裝Kubernetes方法,有興趣的可以參考一下。

下面這種方法,容易配置,也不容易出現問題。

 

環境配置

准備3台服務器(我用的是CentOS7系統):

Master:192.168.116.129

Node1:192.168.116.130

Node2:192.168.116.131

 

k8s的全生命周期管理:

  在k8s進行管理應用的時候,基本步驟是:創建集群,部署應用,發布應用,擴展應用,更新應用

k8s的主要組件,以及它們主要是用來干什么的:

etcd:一款開源軟件。提供可靠的分布式數據存儲服務,用於持久化存儲K8s集群的配置和狀態

apiservice:用戶程序(如kubectl)、K8s其它組件之間通信的接口。K8s其它組件之間不直接通信,而是通過API server通信的。這一點在上圖的連接中可以體現,例如,只有API server連接了etcd,即其它組件更新K8s集群的狀態時,只能通過API server讀寫etcd中的數據。

Scheduler:排程組件,為用戶應用的每一可部署組件分配工作結點。

controller-manager:執行集群級別的功能,如復制組件、追蹤工作結點狀態、處理結點失敗等。Controller Manager組件是由多個控制器組成的,其中很多控制器是按K8s的資源類型划分的,如Replication Manager(管理ReplicationController 資源),ReplicaSet Controller,PersistentVolume controller。

kube-proxy:在應用組件間負載均衡網絡流量。

kubelet:管理工作結點上的容器。

Contriner runtime Docker, rkt等實際運行容器的組件

上面都是些k8s集群所要用到的組件

master主機上必須要有的組件:

etcd :提供分布式數據存儲的數據庫吧,用於持久化存儲k8s集群的配置和狀態

kube-apiserver:api service提供了http rest接口,是整個集群的入口,K8s其它組件之間不直接通信,而是通過API server通信的。(只有API server連接了etcd,即其它組件更新K8s集群的狀態時,只能通過API server讀寫etcd中的數據)

kube-scheduler:scheduler負責資源的調度

kube-controller-manager:整個集群的管理控制中心,此組件里面是由多個控制器組成的,如:Replication Manager(管理ReplicationController 資源),ReplicaSet Controller,PersistentVolume controller。主要作用用來復制組件、追蹤工作結點狀態、處理失敗結點

node節點機上必須要有的組件:

flannel:好像是用來支持網絡通信的吧

kube-proxy:用來負載均衡網絡流量

kubelet:用來管理node節點機上的容器

docker:運行項目鏡像容器的組件

k8s的整個集群運行原理:

master主機上的kube-controller-manager是整個集群的控制管理中心,kube-controler-manager中的node controller模塊 通過apiservice提供的監聽接口,實時監控node機的狀態信息。

 當某個node機器宕機,controller-manager就會及時排除故障並自動修復。

node節點機上的kubelet進程每隔一段時間周期就會調用一次apiservice接口報告自身狀態,apiservice接口接受到這些信息后將節點狀態更新到ectd中。kubelet也通過apiservice的監聽接口監聽pod信息,如果監控到新的pod副本被調度綁定到本節點,則執行pod對應的容器的創建和啟動,如果監聽到pod對象被刪除,則刪除本節點對應的pod容器。

Kubernetes安裝步驟:

1、所有機器上執行以下命令,准備安裝環境:(注意是所有機器,主機master,從機node都要安裝)

安裝epel-release源

yum -y install epel-release

所有機器關閉防火牆

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

#查看防火牆狀態
firewall-cmd --state

關閉swap

swapoff -a

2、現在開始master主機上安裝kubernetes Master

yum -y install etcd kubernetes-master

etcd.conf

編輯:vi /etc/etcd/etcd.conf文件,修改結果如下:

apiserver

配置:vi /etc/kubernetes/apiserver文件,配置結果如下:

啟動etcd、kube-apiserver、kube-controller-manager、kube-scheduler等服務,並設置開機啟動。

for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do systemctl restart $SERVICES;systemctl enable $SERVICES;systemctl status $SERVICES ; done

在etcd中定義flannel網絡

etcdctl mk /atomic.io/network/config '{"Network":"172.17.0.0/16"}'

以上master主機上的配置安裝什么的都弄完

 

3、在node機上安裝kubernetes Node和flannel組件應用

yum -y install flannel kubernetes-node

flanneld

為flannel網絡指定etcd服務,修改/etc/sysconfig/flanneld文件,配置結果如下圖:

 

config

修改:vi /etc/kubernetes/config文件,配置結果如下圖:

kubelet

修改node機的kubelet配置文件/etc/kubernetes/kubelet

node節點機上啟動kube-proxy,kubelet,docker,flanneld等服務,並設置開機啟動。

for SERVICES in kube-proxy kubelet docker flanneld;do systemctl restart $SERVICES;systemctl enable $SERVICES;systemctl status $SERVICES; done

4、在master主機上執行如下命令,查看運行的node節點機器:

kubectl get nodes

k8s的安裝算是完成

5、部署 Dashboard

也可以使用我給配置文件 https://www.lanzous.com/i8jjpij

默認鏡像國內無法訪問,修改鏡像地址為: lizhenliang/kubernetes-dashboard-amd64:v1.10.1

默認Dashboard只能集群內部訪問,修改Service為NodePort類型,暴露到外部:

先Docker拉去鏡像

docker pull  lizhenliang/kubernetes-dashboard-amd64:v1.10.1

執行kubernetes-dashboard.yaml 文件

 kubectl apply -f kubernetes-dashboard.yaml

安裝成功

查看暴露的端口

kubectl get pods,svc -n kube-system

6. 訪問 Dashboard的web界面

訪問地址:https://NodeIP:30001 【必須是https】

創建service account並綁定默認cluster-admin管理員集群角色:【依次執行】

kubectl create serviceaccount dashboard-admin -n kube-system
 kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
 kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')


已經部署完成。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM