Centos7.3Kubernetes叢集安裝部署
阿新 • • 發佈:2018-12-03
•Kubernetes叢集元件:
- etcd 一個高可用的K/V鍵值對儲存和服務發現系統
- flannel 實現誇主機的容器網路的通訊
- kube-apiserver 提供kubernetes叢集的API呼叫
- kube-controller-manager 確保叢集服務
- kube-scheduler 排程容器,分配到Node
- kubelet 在Node節點上按照配置檔案中定義的容器規格啟動容器
- kube-proxy 提供網路代理服務
叢集架構圖
一、環境準備
目前各相關元件版本如下:
kubernetes-1.5.2
docker-1.12.6
flannel-0.7.0
etcd-3.1.3
kubernetes環境角色如下:
192.168.199.190(4核,4g,50g硬碟) kubernetes master和etcd server
192.168.199.191(4核,4g,50g硬碟) kubernetes node1
192.168.199.192(4核,4g,50g硬碟) kubernetes node2
192.168.199.193(4核,4g,50g硬碟) kubernetes node2
192.168.199.194(4核,4g,50g硬碟) kubernetes node2
二、安裝及配置
各元件用途
kube master主要以下元件:
1、kube-apiserver
k8s的管理介面
2、kube-scheduer
k8s排程器,容器的啟動、遷移、擴容縮減時候,選擇哪個node,就看它了。
3、kube-controller-manager
k8s對node的控制行為,比如怎麼去呼叫node啟動一個容器。
kube node主要以下元件:
1、kubelet
負責node的管理,基本所有操作都靠它。
2、kube-proxy
每個node裡的container都在一個私有網路中,kube-proxy的作用就是做一個反向代理,讓訪問者訪問這個node的時候,可以轉發到內部對應的container。
etcd
1、作為kubernetes的資料庫,儲存了k8s自身的資訊、以及各種業務容器資訊等。
2、儲存flannel網路配置資訊,供各節點協調。
安裝master節點:
yum install etcd -y 安裝 etcd 節點
yum install kubernetes-master -y 安裝 k8s master 節點
編輯配置檔案/etc/etcd/etcd.conf
ETCD_NAME=default
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.199.190:2379"
啟動服務
systemctl enable etcd
systemctl start etcd
編輯配置檔案 /etc/kubernetes/apiserver
KUBE_API_ADDRESS="--address=0.0.0.0"
KUBE_ETCD_SERVERS="--etcd_servers=http://192.168.199.190:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
KUBE_API_ARGS=""
編輯配置檔案/etc/kubernetes/controller-manager
KUBE_CONTROLLER_MANAGER_ARGS="--node-monitor-grace-period=10s --pod-eviction-timeout=10s"
編輯配置檔案/etc/kubernetes/config
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow_privileged=false"
KUBE_MASTER="--master=http://192.168.199.190:8080"
啟動服務
systemctl enable kube-apiserver kube-scheduler kube-controller-manager
systemctl start kube-apiserver kube-scheduler kube-controller-manager
安裝k8s node 節點:(node1、node2、node3 、node4)
yum install kubernetes-node flannel docker -y
編輯配置檔案/etc/kubernetes/config
KUBE_LOGTOSTDERR="--logtostderr=true"
KUBE_LOG_LEVEL="--v=0"
KUBE_ALLOW_PRIV="--allow_privileged=false"
KUBE_MASTER="--master=http://192.168.199.190:8080"
編輯配置檔案/etc/kubernetes/kubelet
KUBELET_ADDRESS="--address=127.0.0.1"
KUBELET_HOSTNAME="--hostname_override=192.168.199.191" #節點IP
KUBELET_API_SERVER="--api_servers=http://192.168.199.190:8080"
KUBELET_ARGS="--pod-infra-container-image=kubernetes/pause"
啟動服務
systemctl enable kubelet kube-proxy
systemctl start kubelet kube-proxy
k8s node 節點配置 flannel
初始化flannel的etcd配置
etcdctl -C 192.168.199.190:2379 set /coreos.com/network/config '{ "Network": "10.1.0.0/16" }'
編輯配置檔案/etc/sysconfig/flanneld
/etc/sysconfig/flanneld
FLANNEL_ETCD_PREFIX="/coreos.com/network"
systemctl enable flanneld
systemctl start flanneld