1. 程式人生 > >基於 CentOS 7 搭建kubernetes集群

基於 CentOS 7 搭建kubernetes集群

kubernetes docker

基於Centos7構建Kubernetes平臺

一、實驗環境

3centos7的主機

master 192.168.111.131部署etcd,kube-apiserver,kube-controller-manager,kube-scheduler 4個應用。

node01 192.168.111.130 部署dockerkubeletkube-proxy 3個應用

node02 192.168.111.129 部署dockerkubeletkube-proxy 3個應用

二、實驗步驟

1. 修改主機名和ip,三個主機網卡均設置為橋接模式,能夠聯網。

2. 分別修改/etc/hosts文件:

Master配置

#vim /etc/hosts

技術分享Node01

#scp [email protected]:/etc/hosts /etc/

Node02

#scp [email protected]:/etc/hosts /etc/

3. 三臺均設置防火墻的默認區域為trusted。

技術分享

技術分享

技術分享

4. 三臺均關閉selinux

.

技術分享

5. 安裝docker,並啟動。因為master之後還需要做registry倉庫,所以也需要安裝docker.

#yum install -y docker

技術分享6. 開啟路由轉發功能

技術分享

7實現node01node02之間容器互通

1node01node02新建網橋,並固定網橋ip

node01上操作

刪除網橋docker0,新建網橋kbr0:

技術分享

新建網橋的配置文件:

技術分享

新建路由文件:route-eth0eth0node1上的網卡名。

技術分享

修改docker配置文件,添加-b=kbr0參數

技術分享reboot重啟系統使網橋設置生效。

2node02做同樣的設置:

新建網橋:

技術分享

新建網橋配置文件:

#scp [email protected]:/etc/sysconfig/network-scripts/ifcfg-kbr0 /etc/sysconfig/network-scripts/

技術分享

創建路由文件:

技術分享

修改docker 配置文件:

#vim /etc/sysconfig/docker

技術分享重啟系統reboot.

3)系統啟動之後,查看網卡信息和路由信息。

#ifconfig

技術分享技術分享4)驗證兩個宿主機間容器的互通性:

node01上運行一個容器:

技術分享node02上運行一個容器:

技術分享容器間互ping:

#docker run -it docker.io/centos:centos6

# yum install -y iputils 進入容器安裝

技術分享

#dcoker run -it docker.io/centos:centos6

技術分享

master上部署應用:

1、安裝etcd.

技術分享

查看etcd配置文件:

技術分享

2、修改配置文件:

技術分享3、啟動etcd服務

技術分享查看服務端口號

技術分享4、部署k8s-master組件(apiserver+controller-manager+scheduler

安裝軟件:

#yum install -y kubernetes-master

技術分享

查看配置文件:

技術分享

5修改配置文件:

#vim /etc/kubernetes/config

技術分享解釋:

KUBE_LOGTOSTDERR 日誌設置

KUBE_LOG_KEVEL 日誌級別設置

KUBE_ALLOW_PRIV 是否允許運行特權容器

KUBE_MASTER 主節點的地址,主要為replication controllerschedulerkubelet可以順利找到apiserver

#vim /etc/kubernetes/apiserver

技術分享KUBE_API_ADDRESS 監聽的接口,如果配置為127.0.0.1則只監聽localhost,配置為0.0.0.0會監聽所有接口,這裏配置為0.0.0.0

KUBE_API_PORT="--port=8080" apiserver的監聽端口,默認8080,不用修改。

KUBELET_PORT="--kubelet_port=10250" kubelet監聽的端口,默認10250,無需修改

KUBE_ETCD_SERVERS //指定etcd節點的地址

KUBE_SERVICE_ADDRESSES 這個是設置今後運行Service所在的ip網段

KUBE_API_ARGS=”--secure-port=0” 默認是要求https安全通信,”--secure-port=0”則不要求https安全通信

:這裏需要註意原來KUBE_ADMISSION_CONTROL默認包含的要刪掉,不然啟動API server的時候會報錯

6、啟動服務:

技術分享

查看服務端口:

技術分享部署node主機:

1安裝kubernetes-node軟件

#yum install -y kubernetes-node

技術分享

2修改配置文件:

#vim /etc/kubernetes/config

技術分享

#vim /etc/kubernetes/kubelet

技術分享配置項KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"作用k8s創建pod的時候需要起一個基本容器,所以node節點要能連網。也可以自己搭建一個私有倉庫,將pod-infrastructure:latest鏡像上傳到私有倉庫中修改此配置文件的地址就可以

3、啟動服務:

技術分享

4、在node02主機上重復上面的操作。

5master檢查node 狀態:

技術分享

技術分享 建私有倉庫

Kubernetes管理容器如果是第一次操作,可能會有一定的等待時間,這是因為第一次下載images需要一段時間。如果本地沒有docker registry,要確保節點能訪問互聯網,所以我們可以搭建一個私有倉庫,由私有倉庫提供所需要的鏡像,

本實驗環境中用kubernetes同時作為registry

1導入鏡像:

技術分享2、基於私有倉庫鏡像運行容器

技術分享3、本地訪問私有倉庫:

技術分享

4上傳鏡像到私有倉庫

導入之後用到的鏡像到本地

技術分享給基礎鏡像打個標簽

技術分享

在三臺主機上均修改docker 的配置文件,指定私有倉庫的url.

技術分享重啟docker服務:

技術分享

上傳鏡像到私有倉庫並查看:

技術分享測試,下載剛才上傳的鏡像:

技術分享技術分享部署web應用

1為了部署pod的時候,下載鏡像速度快點,把node節點主機配置文件中的pod鏡像下載地址修改為本地私有倉庫地址:

#vim /etc/kubernetes/kubelet

技術分享#systemctl restart kubelet.service

2創建apache-rc.yaml文件,根據文件內容創建rcpod

技術分享

註意:必須按照此格式編寫否則會報錯

#kubectl create -f apache-rc.yaml

error: error validating "apache-rc.yaml": error validating data: found invalid field spec for v1.ReplicationControllerSpec; if you choose to ignore these errors, turn validation off with --validate=false

技術分享

查看pods狀態:

技術分享

查看pods詳細狀態:

技術分享附:刪除pod

kubectl delete pod podName

由於設置了兩份副本,所以刪除pod的時候,k8s會迅速起另外一個一模一樣的pod以保持副本數量為2不變。

要徹底刪除pod,只能刪除創建它的replication controller

查看replication controller

kubectl get rc

刪除replication controller

kubectl delete rc rcName

刪除rc之後,其創建的pod會一並刪除

3部署節點內部可訪問的apache service

ServertypeClusterIPNodePort之分,缺省是ClusterIp,這種類型的service只能在集群內部訪問

創建配置文件:

#vim apache-service-clusterip.yaml

技術分享

創建service:

技術分享

查看service狀態

技術分享

驗證apache服務:(在node節點執行)

技術分享

4部署外部可訪問的apache service

創建nodeport類型的service . 這種類型的Service在集群外部是可以訪問

#vim apache-nodeport-service.yaml

技術分享

創建service:

技術分享

查看service:

技術分享驗證service的可訪問性

外部訪問:

技術分享技術分享

內部訪問:

技術分享到此為止kubernetes 集群搭建完畢!!!


本文出自 “IT大本營” 博客,謝絕轉載!

基於 CentOS 7 搭建kubernetes集群