Kubernetes是一個開源的,用於管理雲平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單而且高效,Kubernetes提供了應用部署,規劃,更新,維護的一種機制。 Kubernetes一個核心的特色就是可以自主的管理容器來保證雲平臺中的容器按照用戶的指望狀態運行着(好比用戶想讓apache一直運行,用戶不須要關心怎麼去作,Kubernetes會自動去監控,而後去重啓,新建,總之,讓apache一直提供服務),管理員能夠加載一個微型服務,讓規劃器來找到合適的位置,同時,Kubernetes也系統提高工具以及人性化方面,讓用戶可以方便的部署本身的應用。 Kubernetes集羣包含有節點代理kubelet和Master組件(APIs, scheduler, etc),一切都基於分佈式的存儲系統。下面這張圖是Kubernetes的架構圖。
Kubernetes主要由如下幾個核心組件組成:node
操做系統:redhat7.2
Docker:1.12.6
網絡規劃工具,統一分配集羣Docker容器的虛擬IP,並實現服務之間通訊:Flannel 0.7.0
須要關閉防火牆,並鏈接網絡。nginx
master:172.25.21.11 服務:apiserver, controller-manager, scheduler,etcd
node:172.25.21.12 服務:flannel, docker, kubelet, kube-proxyweb
vim /etc/hosts
172.25.21.11 server11 master
172.25.21.12 node1
yum install -y etcd
vim /etc/etcd/etcd.conf #修改部份內容以下
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://server11:2379"
其中server11表示etcd服務器主機名sql
systemctl start etcd #啓動etcd
systemctl enable etcd #開機自啓etcd
etcdctl -C 172.25.21.11:2379 set /atomic.io/network/config '{"Network":"172.17.0.1/16"}'
yum install kubernetes-master
修改配置文件docker
vim /etc/kubernetes/apiserver
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_ETCD_SERVERS="--etcd-servers=http://server11:2379"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,
其中KUBE_ADMISSION_CONTROL的原有的SecurityContextDeny和ServiceAccount是權限相關的配置須要去掉。apache
vim /etc/kubernetes/config
KUBE_MASTER="--master=http://master:8080"
systemctl start kube-apiserver kube-scheduler kube-controller-manager
vim /etc/hosts
172.25.21.11 server11 master
172.25.21.12 node1
yum install -y docker flannel kubernetes-node
vim /etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS="http://server11:2379"
FLANNEL_ETCD_PREFIX="/atomic.io/network"
vim /etc/kubernetes/config
KUBE_MASTER="--master=http://master:8080"
vim /etc/kubernetes/kubelet
KUBELET_HOSTNAME="--hostname-override=node1"
KUBELET_API_SERVER="--api-servers=http://master:8080"
systemctl start kubelet kube-proxy
在master節點運行 vim
kubectl get nodes