基於 CentOS 7 搭建kubernetes集羣

基於Centos7構建Kubernetes平臺node

1、實驗環境linux

3centos7的主機web

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

node01  192.168.111.130  部署dockerkubeletkube-proxy  3個應用apache

node02  192.168.111.129  部署dockerkubeletkube-proxy  3個應用vim

2、實驗步驟centos

1. 修改主機名和ip,三個主機網卡均設置爲橋接模式,可以聯網。api

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

Master配置ide

#vim   /etc/hosts

dfb247d8c8f9030af158b80bc925744c.pngNode01

#scp  root@192.168.111.128:/etc/hosts   /etc/

Node02

#scp  root@192.168.111.128:/etc/hosts   /etc/

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

ee14913cda9e6136612838b5ea8cd43a.png

edc7c7a738f8d14ccddc6e9e3e6d68ff.png

6d0452b50002cb23ba7c252ebcfb2efd.png

4. 三臺均關閉selinux.

16ba9914cf30d9bd2c4c230190772897.png

5. 安裝docker,並啓動。由於master以後還須要作registry倉庫,因此也須要安裝docker.

#yum   install  -y  docker

0161d2899f51f7d83b2aa3e03cd32c43.png6. 開啓路由轉發功能

2b64e2e20511279cdccdb0763a6348b0.png

7實現node01node02之間容器互通

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

node01上操做

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

a57508bd2557d3e92e3bb233c65e6abc.png

新建網橋的配置文件:

e1bf0987bc4280d5f3681817a27b24ed.png

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

045e9c72261ffc3bc8be0738f3567640.png

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

7536fc560d9c7651dae4de5e517a8dfc.pngreboot重啓系統使網橋設置生效。

2node02作一樣的設置:

新建網橋:

902c7272873851e9f4947cf44ee7c250.png

新建網橋配置文件:

#scp root@192.168.111.129:/etc/sysconfig/network-scripts/ifcfg-kbr0  /etc/sysconfig/network-scripts/

e444a1d8153fb2960b172cb94376b220.png

建立路由文件:

04dcf0b497c6e0963068bf46571a89ec.png

修改docker 配置文件:

#vim  /etc/sysconfig/docker

3fda716a39723b9a3f371e9db6b7e850.png重啓系統reboot.

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

#ifconfig

423107baf316d4c890712cb519425e44.pngf89d381183e623b7c2973c4aaab0e1e5.png4)驗證兩個宿主機間容器的互通性:

node01上運行一個容器:

b4515d46dbd4bbab91735bbb122548bc.pngnode02上運行一個容器:

03624400d8d502816adc9f556ff6ec59.png容器間互ping:

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

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

7a48343bf4af234450f5292c0918faa1.png

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

190ef4aa5c21c3b94e4b092357a3bf16.png

master上部署應用:

1、安裝etcd.

b2ec6adccb7b54d00444701bfb8bec39.png

查看etcd配置文件:

3547be473cfe7605b646fa6b7fb7cca0.png

2、修改配置文件:

117b4cc2efc38c06753eb82eef6843fb.png三、啓動etcd服務

44aafb9685afc5b045e900dbfdc2beb9.png查看服務端口號

7cbbdbf3aa69eb516490d5e9c12b22d7.png四、部署k8s-master組件(apiserver+controller-manager+scheduler

安裝軟件:

#yum  install  -y  kubernetes-master

65bdc1f6c20f9fb86af9c59439d7d0c9.png

查看配置文件:

9f6e50472f9b1cb019cff62546d2b6a0.png

5修改配置文件:

#vim   /etc/kubernetes/config

f8160a12218c224b2557aa95d513e933.png解釋:

KUBE_LOGTOSTDERR  日誌設置

KUBE_LOG_KEVEL     日誌級別設置

KUBE_ALLOW_PRIV    是否容許運行特權容器

KUBE_MASTER       主節點的地址,主要爲replication controllerschedulerkubelet能夠順利找到apiserver

#vim  /etc/kubernetes/apiserver

f34a7f7536585e4053b5260459eaaa22.pngKUBE_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、啓動服務:

5b8dd14a28f21aef29433d5e5d1f4eb8.png

查看服務端口:

63d2ba2c998cbfa73ba87301f2fe8d17.png部署node主機:

1安裝kubernetes-node軟件

#yum  install  -y  kubernetes-node

cc37a364afc6bac7462120e9047dd1c4.png

2修改配置文件:

#vim  /etc/kubernetes/config

960aba70e03939223e9a4bdb51eb7102.png

#vim  /etc/kubernetes/kubelet

4617ee2516c2d346177fcef4e549200c.png配置項KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-p_w_picpath=registry.access.redhat.com/rhel7/pod-infrastructure:latest"做用k8s建立pod的時候須要起一個基本容器,因此node節點要能連網。也能夠本身搭建一個私有倉庫,將pod-infrastructure:latest鏡像上傳到私有倉庫中修改此配置文件的地址就能夠

3、啓動服務:

941a130a6a594b6f7fdf00339db79b30.png

4、在node02主機上重複上面的操做。

5master檢查node 狀態:

fd645fb0fefffb94c2f567d49b8fd16a.png

383c21067ee0922d81304ac0976cfe63.png 建私有倉庫

Kubernetes管理容器若是是第一次操做,可能會有必定的等待時間,這是由於第一次下載p_w_picpaths須要一段時間。若是本地沒有docker registry,要確保節點能訪問互聯網,因此咱們能夠搭建一個私有倉庫,由私有倉庫提供所須要的鏡像,

本實驗環境中用kubernetes同時做爲registry

1導入鏡像:

0fb4f66daebd207bc5de445289b9af7a.png二、基於私有倉庫鏡像運行容器

66b1d36919b589641fa594d6540523f4.png三、本地訪問私有倉庫:

a66732ae83ba48d1a6dd2df0d8093eb5.png

4上傳鏡像到私有倉庫

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

2a4a51981a656c6eea61a75e6a1fb21e.png給基礎鏡像打個標籤

5e927423385cf9e78bd916e03e296181.png

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

b43a7c89dfa67d28876f2235f5e6816d.png重啓docker服務:

906ca0c0e995e10ebce97bf663f4f4c2.png

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

022afb8d27f67af86fe6c5812ecce871.png測試,下載剛纔上傳的鏡像:

deb2b7a58019d98c7c9829ccfd2f45b2.pngbac7fe1875675269eebb0b1d7392dea1.png部署web應用

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

#vim  /etc/kubernetes/kubelet

7c79026c79bda0eb2df7014d320e461c.png#systemctl  restart  kubelet.service

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

859e50cb0790c2a919b501df31549f2f.png

注意:必須按照此格式編寫不然會報錯

#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

8922902afa67688ccce834f574d00643.png

查看pods狀態:

80f19fdbe81b01aec08306d69d9afd9d.png

查看pods詳細狀態:

18d8cc6694b9bee4754eac30b4d554f5.png附:刪除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

918b925883281d36b5503a062c820c8a.png

建立service:

b2555de5ee8b225ff258c6d9ada2a1eb.png

查看service狀態

928c44f47dc3015f42d1969c5bf498d4.png

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

d8f57ac4a6601bb5d896b09638e3d5dc.png

4部署外部可訪問的apache service

建立nodeport類型的service . 這種類型的Service在集羣外部是能夠訪問

#vim  apache-nodeport-service.yaml

ac10bb24a5849013e3c00de39e5cb1af.png

建立service:

716e73c2122df42822b97b9579994383.png

查看service:

c81450e7452d2a37414e9c5cdc5abf7c.png驗證service的可訪問性

外部訪問:

a4786eb847c076cea79de58f367bad67.pngdcfad9ef4b9b479aecf6eac2a7d02d79.png

內部訪問:

92c7ae5dd5b86a6754d72cb94d5ad06d.png到此爲止kubernetes 集羣搭建完畢!!!

相關文章
相關標籤/搜索