使用kubeadm安装Kubernetes 1.6
环境准备 192.168.61.41 node1 192.168.61.42 node2 192.168.61.43 node3 安装Docker 1.12 Kubernetes 1.6还没有针对docker 1.13和最新的docker 17.03上做测试和验证,所以这里安装Kubernetes官方推荐的Docker 1.12版本。
环境准备 192.168.61.41 node1 192.168.61.42 node2 192.168.61.43 node3 安装Docker 1.12 Kubernetes 1.6还没有针对docker 1.13和最新的docker 17.03上做测试和验证,所以这里安装Kubernetes官方推荐的Docker 1.12版本。
Kubernetes 1.6已结发布,包括9个Stable特性、12个Beta特性、8个Alpha特性,共29个新特性。 Kubernetes 1.6重点关注集群规模扩展和自动化。目前最多支持5000个节点的集群;动态存储配置特性进入Stable;基于角色的访问控制(RBAC)、kubefed、kubeadm以及一些调度特性进入Beta。
Kubernetes中的Secret资源可以用来存储密码、Token、秘钥等敏感数据。 将这些敏感信息保存在Secret中,相对于暴露到Pod、镜像中更加的安全和灵活。 1.Kubernetes Secret的类型 Kubernetes内置了三种类型的Secret: 1.1 Service Account Secret 为了能从Pod内部访问Kubernetes API,Kubernetes提供了Service Account资源。 Service Account会自动创建和挂载访问Kubernetes API的Secret,会挂载到Pod的 /var/run/secrets/kubernetes.io/serviceaccount目录中。 关于这种类型的Secret我们这里先不展开。
Kubernetes和EFK 我们使用Kubernetes作为微服务架构的基础,在我们的系统中每个微服务都有多个副本,每个副本的数量以及所在的Node都是可变的。因此对于日志需要集中化管理,在使用Kubernetes之前,我们的系统使用ELK(Elasticsearch+Logstash+Kibana)实现日志的聚集、查询和展现。由于Kubernetes推荐使用Fluentd,所以我们尝试使用EFK(Elasticsearch+Fluentd+Kibana)作为我们的日志集中管理组件。
Kubernetes对于无状态服务的支持已经十分成熟,有状态服务需要保存状态,Kubernetes提供了Volume和Persistent Volume用于服务的状态保存。 很多有状态服务都是以集群形式部署的,因此在在Kubernetes上部署有状态服务时还需要考虑集群管理的需求。针对这个需求Kubernetes提供了StatefulSet(在Kubernetes 1.5之前是PetSet)。
Kubernetes提供了三种级别的客户端认证方式: HTTPS证书认证,是基于CA根证书签名的双向数字证书认证方式,是最严格的认证 HTTP Token认证,通过Token识别每个合法的用户 HTTP Basic认证 HTTP Token认证和Http Basic认证是相对简单的认证方式,Kubernetes的各组件与Api Server的通信方式仍然是HTTPS,但不再使用CA数字证书。
PV和PVC的概念 Kubernetes的Persistent Volume是对存储的抽象,这个抽象包含两个资源: 持久化卷 PersistentVolume,后边简称PV 持久卷申请PersistentVolumeClaim,后边简称PVC PV是集群中的一块网络存储,也是Kubernetes集群的一种资源。 Pod的Volume与PV的区别是:Volume的生命周期和Pod相同,Pod被删除时,Volume和保存在Volume中的数据就被删除了;对于PV,即使挂载PV的Pod被删除了,PV仍然存在,PV上的数据也还在。
kube-api-server提供Kubernetes各种资源的CRUD和Watch相关的Http Restful Api,是整个集群的中心。 Kubernetes的Restful Api Api简介 kube-api-server以静态Pod的形式运行在master节点上,内置容器使用hostNetwork。默认监听master节点的8080端口(对应--insecure-port),HTTPS的端口默认为6443(对应--secure-port)。 使用kubectl命令时实际上也是和kube-api-server的restful api交互的。
Ceph集群上的操作 创建Ceph Pool Ceph集群安装完成后,默认的Pool是rbd: ceph osd lspools 0 rbd, 一个Ceph集群可以有多个pool,pool是逻辑上的存储池。不同的pool可以有不一样的数据处理方式,例如replica size, placement groups, crush rules,snapshot等等。
当需要升级集群中的某个服务时,需要停止该服务相关的Pod,pull最新的docker镜像,然后重新启动。 如果一下把所有Pod都停止,服务在升级的时间内会不可用。因此,Kubernetes提供了滚动升级的功能。 kubectl rolling-update命令滚动升级 集群中有下面的RC: