1 . 理解:
Kubernetes是一個開源的,用于管理云平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單并且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。
Kubernetes一個核心的特點就是能夠自主的管理容器來保證云平臺中的容器按照用戶的期望狀態運行著(比如用戶想讓apache一直運行,用戶不需要關心怎么去做,Kubernetes會自動去監控,然后去重啟,新建,總之,讓apache一直提供服務),管理員可以加載一個微型服務,讓規劃器來找到合適的位置,同時,Kubernetes也系統提升工具以及人性化方面,讓用戶能夠方便的部署自己的應用。
官方文檔可以查看更多信息及資料:https://www.kubernetes.org.cn/docs
2 . 服務搭建:
準備兩臺虛擬機 ,相同的yum源
server1:192.168.13.111 (k8s-master)
server2:192.168.13.112 (k8s-node1)
[virt7-docker-common-release]
name=virt7-docker-common-release
baseurl=http://cbs.centos.org/repos/virt7-docker-common-release/x86_64/os/
gpgcheck=0
安裝配置Kubernetes Master (server1):
yum -y install etcd kubernetes-master
vim /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://localhost:2379"
vim /etc/kubernetes/apiserver
KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
KUBE_API_PORT="--port=8080"
KUBELET_PORT="--kubelet-port=10250"
KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"
KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=172.25.0.0/16"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ResourceQuota"
KUBE_API_ARGS=""
啟動etcd、kube-apiserver、kube-controller-manager、kube-scheduler等服務,并設置開機啟動.
for SERVICES in etcd kube-apiserver kube-controller-manager kube-scheduler; do systemctl restart $SERVICES;systemctl enable $SERVICES;systemctl status $SERVICES ; done
在etcd中定義flannel網絡
etcdctl mk /atomic.io/network/config '{"Network":"172.25.0.0/16"}'
安裝配置Kubernetes Node (servr2):
- 使用yum安裝flannel和kubernetes-node
yum -y install flannel kubernetes-node
- 為flannel網絡指定etcd服務,修改/etc/sysconfig/flanneld文件
vim /etc/kubernetes/configKUBE_LOGTOSTDERR="–logtostderr=true"
KUBE_LOG_LEVEL="–v=0"
KUBE_ALLOW_PRIV="–allow-privileged=false"
KUBE_MASTER="–master=http://172.25.27.2:8080"
- 修改對應node的配置文件/etc/kubernetes/kubelet
vim /etc/kubernetes/kubeletKUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_PORT="--port=10250"
KUBELET_HOSTNAME="--hostname-override=172.25.27.3" #修改成對應Node的IP
KUBELET_API_SERVER="--api-servers=http://172.25.27.2:8080" #指定Master節點的API Server
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_ARGS=""
- 在所有Node節點上啟動kube-proxy,kubelet,docker,flanneld等服務,并設置開機啟動。
for SERVICES in kube-proxy kubelet docker flanneld;do systemctl restart $SERVICES;systemctl enable $SERVICES;systemctl status $SERVICES; done
- 驗證集群是否安裝成功
在master(server1)上執行如下命令:
kubectl get node