一、kubernetes(简称k8s)
集群示意图
Kubernetes工作模式server-client,Kubenetes Master提供集中化管理Minions。部署1台Kubernetes Master节点和4台Minion节点。
Kubernetes集群组件:
- etcd 一个高可用的K/V键值对存储和服务发现系统
- flannel 实现夸主机的容器网络的通信
- kube-apiserver 提供kubernetes集群的API调用
- kube-controller-manager 确保集群服务
- kube-scheduler 调度容器,分配到Node
- kubelet 在Node节点上按照配置文件中定义的容器规格启动容器
- kube-proxy 提供网络代理服务
二、实践
1、创建四台集群需要的环境
1.1docker安装
yum install -y docker #yum 安装
docker version #查看版本
1.1或者
1.安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.设置阿里云镜像源
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装 Docker-CE
重建 Yum 缓存。安装 Docker-CE ,请执行一下命令进行安装:
sudo yum install docker-ce
4.启动 Docker-CE
sudo systemctl enable docker
sudo systemctl start docker
1.2 centos镜像-Centos7安装
// 下载镜像
#docker run --privileged -itd --name centos --restart=always centos:7 /usr/sbin/init # docker pull centos 我用centos:7 -privileged 指定容器是否是特权容器。这里开启特权模式。
-it 启动互动模式。
--restart=always是随着docker启动
/usr/sbin/init 初始容器里的CENTOS。
1.3创建镜像
// 创建容器 (系统会给这个容器分配一个默认的名字)
docker run -itd --name=master -p 8001:8001 centos:7
docker run -itd --name=node1 -p 8002:8002 centos:7
docker run -itd --name=node2 -p 8003:8003 centos:7
docker run -itd --name=node3 -p 8004:8004 centos:7
docker run -itd --name=node4 -p 8005:8005 centos:7
1.4查看
1.数据卷
Pod中的容器之间共享数据或者持久化数据,可以使用数据卷。 2.应用程序健康检查
容器内服务可能进程堵塞无法处理请求,可以设置监控健康检查策略保证应用的健壮性。(默认情况下只保证容器本身正常,不会对应该程序状态检测) 3.复制应用程序实例
控制器维护Pod副本的数量,保证一个Pod或一组同类的Pod数量始终可用。 4.弹性伸缩
根据设定的指标(CPU利用率)自动缩放Pod副本数。 5.服务发现
使用环境变量或DNS服务插件保证容器中程序发现Pod入口的访问地址。 6.复制均衡
一组Pod副本分配一个使用的机器IP地址,负载均衡转发请求到后端容器。在集群内部其他Pod可以通过这个ClusterIP访问应用。 7.滚动更新
更新服务不中断,一次更新一个Pod,而不是同时删除整个服务 8.服务编排
通过文件描述部署服务,使得应用程序部署变得更有效。 9.资源监控
Node节点组件集成cAdvisor资源收集工具,可以通过Heapster汇总整个集群节点资源数据,然后存储到IfluxDB时序数据库中,再由Grafana展示。 10.提供认证和授权
支持属性访问控制(ABAC)、角色访问控制(RBAC)认证授权策略