Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署,规划,更新,维护的一种机制。
Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务),管理员可以加载一个微型服务,让规划器来找到合适的位置,同时,Kubernetes也系统提升工具以及人性化方面,让用户能够方便的部署自己的应用。
Kubernetes集群包含有节点代理kubelet和Master组件(APIs, scheduler, etc),一切都基于分布式的存储系统。下面这张图是Kubernetes的架构图。
Kubernetes主要由以下几个核心组件组成:
etcd保存了整个集群的状态;
apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
kube-proxy负责为Service提供cluster内部的服务发现和负载均衡。
基本环境
操作系统:redhat7.2
Docker:1.12.6
网络规划工具,统一分配集群Docker容器的虚拟IP,并实现服务之间通信:Flannel 0.7.0
需要关闭防火墙,并连接网络。
master:172.25.21.11 服务:apiserver, controller-manager, scheduler,etcd
node:172.25.21.12 服务:flannel, docker, kubelet, kube-proxy
master端安装和配置etcd
配置本地解析
vim /etc/hosts
172.25.21.11 server11 master
172.25.21.12 node1
安装etcd
yum install -y etcd
配置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服务器主机名
运行etcd
systemctl start etcd #启动etcd
systemctl enable etcd #开机自启etcd
配置etcd的flannel信息
etcdctl -C 172.25.21.11:2379 set /atomic.io/network/config '{"Network":"172.17.0.1/16"}'
master端安装kubernetes-master
安装
yum install kubernetes-master
修改配置文件
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是权限相关的配置需要去掉。
配置全局配置文件
vim /etc/kubernetes/config
KUBE_MASTER="--master=http://master:8080"
启动master服务
systemctl start kube-apiserver kube-scheduler kube-controller-manager
1
测试master服务
配置node1节点
配置本地解析
vim /etc/hosts
172.25.21.11 server11 master
172.25.21.12 node1
安装服务
yum install -y docker flannel kubernetes-node
配置flannel
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"
配置kubelet组件
vim /etc/kubernetes/kubelet
KUBELET_HOSTNAME="--hostname-override=node1"
KUBELET_API_SERVER="--api-servers=http://master:8080"
启动服务
systemctl start kubelet kube-proxy
测试集群
在master节点运行
kubectl get nodes
---------------------