目录
步骤一:将下载的k8s相关的包做成自定义yum源,之后集群好通过网络yum源安装
步骤二:安装etcd并创建/atomic.io/network/config网络配置(注意在master上配置)
步骤四:flannel安装(注意:flannel服务必须在docker服务之前启动)--实现不同机器间容器互通
步骤六:安装node节点(此出只写了一个节点的配置,其他的节点是一模一样的配置)
k8s是一套管理系统,主要善于管理容器集群,是开源的平台,可以实现集群的自动化部署,自动化缩容,维护等功能.
k8s适用场景:有大量跨主机的容器需要管理,快速部署应用,快速扩展应用,无缝对接新的应用功能.节省资源,优化硬件资源的使用
Master节点服务
API Server:是整个系统的对外接口,供客户端和其他组件调用
Scheduler:是负责集群内部的资源进行调度,相当于"调度室"
Controller manager:负责管理控制器,相当于"大总管"
etcd:是一个键值存储仓库,存储集群的状态,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于go语言实现,使用etcd来存储网络配置,解决容器互联互通的问题.
Node节点服务
docker 容器管理
kubelet 主要负责监视指派到它的pod.包括创建,修改,删除等
kube-proxy 主要负责为pod对象提供代理,实现service的通信与负载均衡
Pod是什么
pod是Kubernetes调度的基本单元
一个Pod包涵1个或多个容器
这些容器使用相同的网络命名空间和端口号
pod是一个服务的多个进程的聚合单位
pod作为一个独立的部署单位,支持横向扩展和复制
pod的作用
由若干容器组成的一个容器组
同个组内的容器共享一个存储卷(volume)
每个Pod被分配到节点上运行直运行结束或者被删除
同个Pod的容器使用相同的网络命名空间,IP地址和端口区间,相互之间能通过localhost来发现和通信
Service是什么?
一种可以访问pod服务的;策略方法,通常称为微服务
由于Pod中的服务经常会变化,给我们访问超成了不变,为了解决这一问题,service提供了基于VIP/负载均衡的访问方式
在Kubernetes集群中,每个Node运行一个kube-proxy进程,kube-proxy负责Service实现了一直VIP(虚拟IP)的形式
标签和选择器
为了建立sevice和pod间的关联,kubernetes先给每个pod打上一个标签Label.然后再给相应的service定义标签选择器(Label Selector),例如:
... ...
metadata:
labels: #声明标签
app:nginx #定义标签名字
... ...
selector: #声明标签选择器
app:nginx #为服务的后端选择标签
... ...
RC/RS/Deployment
资源对象文件
kubernetes通过Replication(简称RC)管理POD,在RC中定义了如何启动POD,如何运行,启动几副本等功能,如果我们创建文件,在其中使用Yaml的语法格式描述了上面的信息,这个文件就是我们的资源对象文件
ReplicaSet(简称RS)是RC的升级版
Deployment为Pods和RS提供描述性的更新方式
k8s的搭建
步骤一:将下载的k8s相关的包做成自定义yum源,之后集群好通过网络yum源安装
步骤二:安装etcd并创建/atomic.io/network/config网络配置(注意在master上配置)
[root@kubemaseter ~]# yum install etcd
[root@kubemaseter ~]# vim /etc/etcd/etcd.conf
6 ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" #修改此行
[root@kubemaseter ~]# systemctl enable etcd
[root@kubemaseter ~]# systemctl start etcd
[root@kubemaseter ~]# etcdctl ls /
/atomic.io
[root@kubemaseter ~]# etcdctl mk /atomic.io/network/config '{"Network":"10.254.0.0/16","Backend":{"Type":"vxlan"}}'
[root@kubemaseter ~]# etcdctl ls /atomic.io/network/config
/atomic.io/network/config
[root@kubemaseter ~]# etcdctl get /atomic.io/network/config
{"Network":"10.254.0.0/16","Backend":{"Type":"vxlan"}}
etcd键值管理:在键的组织上etcd采用了层次化的空间结构(类似于文件系统中的目录的概念),用户指定的键可以为单独的名字,创建key键值,此时实际上放在根目录/key下面.也可以为指定目录结构,如/dir1/dir2/key.则将创建相应的目录结构.主要是存储容器的网络结构.
etcdctl管理命令
语法 etctctl子命令 参数 键值
set 设置键值对
get 读取键值对
update 更改键值对
mk 创建新的键值对,rm删除键值对
mkdir 创建目录,rmdir删除目录
ls 显示目录和键值对
步骤三:配置容器网络
1.在kube-node上安装docker(所有的node节点都配置)
[root@registry ~]# yum install docker docker-distribution
[root@registry ~]# vim /etc/sysconfig/docker
13 ADD_REGISTRY='--add-registry 192.168.1.100:5000'
14 INSECURE_REGISTRY='--insecure-registry 192.168.1.100:5000'