?前述:總體是非常簡單的,就是過程繁瑣,不過都是些重復的操作
master成員: [controller-manager, scheduler, api-server, etcd, proxy,kubelet]
node成員:? ? [kubelet, proxy]
=====master要修改的配置文件有=====
1. vi /etc/etcd/etcd.conf? # 數據存儲目錄/對外監聽地址/本機ip
2. vi /etc/kubernetes/apiserver #開放api-server端口/指明監聽奴隸節點端口/指明etcd地址
3. vi /etc/kubernetes/config?? # 告訴proxy api-server是誰?
4.?vi /etc/kubernetes/kubelet?# 注冊自己信息,并將告訴自己的master是是誰?
=====node要修改的配置文件有=====
1. vi /etc/kubernetes/config? ? # 告訴proxy api-server是誰?
2.?vi /etc/kubernetes/kubelet? # 注冊自己信息,并將告訴自己的master是是誰?
小結:master節點就多配置2個,其它跟node無二差別 ,節點要關閉防火墻或者開發對映的端口,要不然,node無法加入master
進入正題。。。。。。。。。。
================Master======================
1. 安裝etcd服務
### 準備3個節點并修改節點hostname
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2### 配置3個節點的域名解析
vi /etc/hosts
```
192.168.208.161 k8s-master
192.168.208.162 k8s-node1
192.168.208.163 k8s-node2```
### master節點下載數據庫ETCD
yum install -y etcd
vi /etc/etcd/etcd.conf
```
# 數據存儲目錄
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
# 監聽地址,設置任意ip都可以訪問
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"# 如果配置etcd集群,名稱必須不一樣
ETCD_NAME="default"# master節點的IP
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.208.160:2379"```
### 啟動ETCD并設置開機自啟
systemctl restart etcd
systemctl enable etcd
?2. 安裝kubernetes-master包含了apiserver、controller-manager、scheduler
yum install -y kubernetes-master.x86_64
vi /etc/kubernetes/apiserver
```
#如果僅限本地訪問可以設置成本機IP
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"#開放apiserver端口的節點將屬于master節點
KUBE_API_PORT="--port=8080"#奴隸節點的端口,奴隸節點是什么端口就配置什么端口
KUBELET_PORT="--kubelet-port=10250"#奴隸節點的端口
KUBELET_PORT="--kubelet-port=10250"```
vi /etc/kubernetes/config
```
#為controller-manager, scheduler, and proxy指明api-server
KUBE_MASTER="--master=http://192.168.208.160:8080"```
### 啟動 api-server、controller-manager、scheduler
systemctl start kube-apiserver.service
systemctl start kube-controller-manager.service
systemctl start kube-scheduler.service# 順手設置開機自啟
systemctl enable kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl enable kube-scheduler.service### 檢查主節點成員狀態,這里的api-server不會顯示,能執行kubectl命令說明api-server正常,kube-proxy 需要安裝kubernetes-node時才會安裝,一并安裝還有kubelet
kubectl get componentstatus
===============Node====================
1. 安裝kubernetes-node 包含 poxy、kubelet, 還有會自動安裝docker哦!!
####master自己也成為奴隸節點
yum install -y kubernetes-node.x86_64
vi /etc/kubernetes/kubelet
```
#奴隸節點聯系上司的地址(這里master也是奴隸,自己監聽自己,其它奴隸節點192.168.208.161、192.168.208.162)
KUBELET_ADDRESS="--address=192.168.208.160"#這個端口要跟master監聽的端口保持一致,因為master的配置監聽端口,就是按照下面的端口配置的
KUBELET_PORT="--port=10250"# 奴隸節點的身份信息,可以是IP,也可以域名(必須先配置域名解析,開始就做好了,其它奴隸節點是 k8s-node1 、k8s-node2)
KUBELET_HOSTNAME="--hostname-override=k8s-master"# 指明api-server
KUBELET_API_SERVER="--api-servers=http://192.168.208.160:8080"
```
###?啟動kubelet、proxy 會帶著啟動docker
systemctl start kubelet.service
systemctl start kube-proxy.service
systemctl enable kubelet.service
systemctl enable kube-proxy.service
### 剩余的k8s-node1、k8s-node2 重復操作2次就好,下面配上截圖
k8s-master 、k8s-node1、k8s-node2都一樣的
?
上面集群簡單的集群已經搭建好,后續要安裝網絡插件ssh 用于節點之間的通信
后續。。。。。。。
yum install -y flannel
vi /etc/sysconfig/flanneld
```
# 使用etcd作為pod的IP注冊中心
FLANNEL_ETCD_ENDPOINTS="http://192.168.208.160:2379"
# 使用默認的前綴
FLANNEL_ETCD_PREFIX="/atomic.io/network"
```
###該ip網段可以任意設定,隨便設定一個網段都可以。Pod里的容器的ip就是根據這個網段進行自動分配的,下面截圖會解釋
etcdctl set /atomic.io/network/config '{ "Network":"172.10.0.0/16" }'
etcdctl get /atomic.io/network/config
systemctl start flanneld.service
systemctl enable flanneld.service# 重啟dockers后,docker的ip網段也會變的一樣
systemctl restart docker
同理配置奴隸節點 k8s-node1? k8s-node2,但不要執行etcdctl set /atomic.io/network/config '{ "Network":"172.10.0.0/16" }',etcd只在主節點,node節點是沒有的
至此,已經安裝好網絡插件flannel?,接下安裝一個測試沙箱,測試不同節點上容器是否能正常通訊
docker pull busybox:1.27
docker images
docker run -it <鏡像id>
> ifconfig
> 找到本容器的ip
同理在另外一個節點看看??找到本容器的ip
ping? 172.10.xxx.xxx
master節點成功ping通2個node節點
如果出現iptables 如下,我這個默認是ACCEPT,所以不用修改
# 修改命令,3個節點都要修改,如果。。。。但是這種設置是臨時的重啟失效(可以忽略)直接看iptables永久配置
iptables -P FORWARD ACCEPT
?iptables永久配置:
systemctl daemon-reload?