kubernetes-----集羣詳解、minikube集羣搭建

目錄

一.三種集羣

二.部署minikube集羣


一.三種集羣

minikube

  • Minikube是一個工具,可以在本地快速運行一個單點的kubernets,嘗試Kubernetes或日常開發的用戶使用。不能用於環境。
  • 官網地址:Minikube下載地址

kubeadm

  • kubeadm是一個命令行工具,可以在物理機,雲服務器或者虛擬機上輕鬆部署安全可靠的Kuernetes集羣
  • kubeadm提供kubeadm init和kubeadm join,用於快速部署kubernetes集羣。kubeadm init啓動一個kubernetes的主節點,kubeadm join啓動一個Kubernetes工作節點並且將其加入集羣
  • 官網地址:kubeadm工具下載地址

二進制包

總結:生成環境中部署Kubernets集羣,只有Kueadm和二進制包可選,Kubeadm降低部署門檻,但是屏蔽了很多細節,遇到問題很難排查。學習過程中,建議使用二進制包部署Kuernetes集羣,便於學習工作原理和後期維護。

二.部署minikube集羣

實驗環境

角色 IP地址 系統 軟件包
master 192.168.43.101/24 centos7 etcd kubernetes flannel
node1 192.168.43.102/24 centos7 etcd kubernetes flannel
node2 192.168.43.103/34 centos7 etcd kubernetes flannel

master的部署

  • 設置基本環境
[root@localhost ~]# hostnamectl set-hostname master
[root@localhost ~]# su
[root@master ~]# systemctl stop firewalld
[root@master ~]# setenforce 0
  • 安裝相關軟件包
[root@master ~]# yum install -y etcd kubernetes flannel
#etcd作爲分佈式存儲軟件
#flannel作爲網絡
#kubernetes作爲docker管理集羣
#docker會作爲依賴包被下載
  • 配置etcd分佈式鍵值存儲系統
[root@master ~]# cd /etc/etcd/
[root@master etcd]# ls
etcd.conf
[root@master etcd]# vi etcd.conf 
##在文件末尾追加如下內容:
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"        ##數據目錄
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:4001"    ##客戶端訪問監聽地址
ETCD_NAME="default"        ##節點名稱
ETCD_ADVERTISE_CLIENT_URLS="http://localhost:4001"    ##客戶端通告地址


//以下爲文件擴展解析,不需要加入
ETCD_LISTEN_PEER_URLS: 集羣通信監聽地址
ETCD_INITIAL_ADVERTISE_PEER_URLS: 集羣通告地址
ETCD_INITIAL_CLUSTER: 集羣節點地址
ETCD_INITIAL_CLUSTER_TOKEN: 集羣Token(令牌)
ETCD_INITIAL_CLUSTER_STATE: 加入集羣當前狀態,new是新集羣,existing表示加入已有集羣
  • 配置apiserver
//apiserver爲集羣的統一入口,各個組件的協調者,以RESTful API提供接口服務,所有對象資源的增刪改查和監聽操作都交給apiserver處理後再提交給etcd存儲

[root@master kubernetes]# ls
apiserver  config  controller-manager  kubelet  proxy  scheduler
[root@master kubernetes]# vi apiserver 
##做如下修改
# The address on the local server to listen to.
KUBE_API_ADDRESS="--address=0.0.0.0"        ##表示master的監聽地址

# The port on the local server to listen on.
KUBE_API_PORT="--port=8080"        ##表示master監聽的端口

# Port minions listen on
KUBELET_PORT="--kubelet-port=10250"    ##指定node的代理端口

# Comma separated list of nodes in the etcd cluster
KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:4001"    #指定etcd集羣的地址與端口
  • 配置flannel網絡
[root@master ~]# cd /etc/sysconfig
[root@master sysconfig]# vi flanneld
# Flanneld configuration options

# etcd url location.  Point this to the server where etcd runs
//指定etcd存儲的網絡信息,保證成功連接etcd
FLANNEL_ETCD_ENDPOINTS="http://192.168.43.101:4001"

# etcd config key.  This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/atomic.io/network"

# Any additional options that you want to pass
#FLANNEL_OPTIONS=""

注:

Overlay network:覆蓋網絡,在現有的網絡環境中在疊加一層虛擬網絡技術模式,將網絡中的主機通過虛擬鏈路連接起來。

Vxlan:將原數據包封裝到UDP中,並且使用基礎網絡的IP/MAC作爲外層報文頭進行封裝,然後在以太網上傳,到達目的地之後又隧道端點解封並將數據發送目標地址

Flannel:是Overlay網絡的一種,也是將源數據包封裝在另一層網絡包裏進行路由轉發和通信,目前已經支持,UDP、VXLAN、HOSTGW、AWS、VPC和GCE路由等數據轉發方式

  • 設置etcd網絡
[root@master ~]# etcdctl -C //192.168.43.101:4001 set /atomic.io/network/config '{"Network":"10.1.1.0/16"}'
{"Network":"10.1.1.0/16"}
  • 啓動所有組件服務
systemctl start etcd
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler

node1與node2的部署(以下配置以node2爲例)

  • 環境設置
hostnamectl set-hostname node1/node2
su

systemctl stop firewalld
setenforce 0
  • 安裝必要軟件包
yum install -y etcd kubernetes flannel
  • 編輯主配置文件
grep -v "^#" /etc/kubernetes/config 

KUBE_LOGTOSTDERR="--logtostderr=true"        //啓用日誌

KUBE_LOG_LEVEL="--v=0"        //設置日誌等級

KUBE_ALLOW_PRIV="--allow-privileged=false"    //是否啓用授權

KUBE_MASTER="--master=http://192.168.43.101:8080"    //指定master的地址與端口
KUBE_ETCD_SERVERS="--etcd_servers=http://192.168.43.101:4001"    //指定etcd的地址與端口

  • 編輯代理配置文件
grep -v "^#" /etc/kubernetes/kubelet 

KUBELET_ADDRESS="--address=0.0.0.0"        //指定代理的地址

KUBELET_PORT="--port=10250"    //指定代理的端口

KUBELET_HOSTNAME="--hostname-override=192.168.43.103"    //設置在集羣中顯示的主機名

KUBELET_API_SERVER="--api-servers=http://192.168.43.101:8080"    //指定apiserver的地址與端口

KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"    //管理pod網絡的中的鏡像

KUBELET_ARGS=""
[root@node2 ~]# 
  • 編輯網絡配置
[root@node2 ~]# cat /etc/sysconfig/flanneld 
# Flanneld configuration options  

# etcd url location.  Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="http://192.168.43.101:4001"    //指定etcd的地址與端口

# etcd config key.  This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/atomic.io/network"

# Any additional options that you want to pass
#FLANNEL_OPTIONS=""
 
[root@node2 ~]# 
  • 啓動服務
[root@node2 ~]# systemctl start flanneld.service 
[root@node2 ~]# systemctl start kube-proxy.service 
[root@node2 ~]# systemctl start kubelet.service 
[root@node2 ~]# systemctl start docker

在master中,測試minikube集羣

  • 查看所有節點
[root@master ~]# kubectl get nodes
NAME             STATUS    AGE
192.168.43.102   Ready     5h
192.168.43.103   Ready     55m
[root@master ~]# 
  • 查看所有節點服務是否健康
[root@master ~]# kubectl get cs
NAME                 STATUS    MESSAGE             ERROR
etcd-0               Healthy   {"health":"true"}   
controller-manager   Healthy   ok                  
scheduler            Healthy   ok                  
[root@master ~]# 

總結:minikube集羣僅用於測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章