Kubernetes集群部署

一.k8s简介

1、什么是K8s

k8s是一个docker集群的管理工具

k8s是容器的编排工具

Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg),目前已经成为容器编排一个标准。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩、高可用等一系列完整功能,提高了大规模容器集群管理的便捷性

 Kubernetes优势:
    容器编排
    轻量级
    开源
    弹性伸缩
    负载均衡

2、K8s 设计架构

Kubernetes借鉴了Borg的设计理念,比如Pod、Service、Labels和单Pod单IP等。Kubernetes的整体架构跟Borg非常像,如下图所示:

98ca80c6ca1f4093836e7c5c44a68f31.png

3、 k8s重要节点描述master节点

Master 是 Cluster 的大脑,它的主要职责是调度,即决定将应用放在哪里运行。Master 运行 Linux 操作系统,可以是物理机或者虚拟机。为了实现高可用,可以运行多个 Master。

node节点

Node 的职责是运行容器应用。Node 由 Master 管理,Node 负责监控并汇报容器的状态,并根据 Master 的要求管理容器的生命周期。Node 运行在 Linux 操作系统,可以是物理机或者是虚拟机。
 

4、 过程原理:

用户通过kubectl提交需要运行的docker container(pod);
master节点的api server把请求存储在etcd数据库中;
scheduler调度器进行扫描 ,将合适的node节点机器分配出去;
node节点的kublet找到自己要跑的container,在本机上运行
 

5、 k8s的核心功能

自愈:

重新启动失败的容器,在节点不可用时,替换和重新调度节点上的容器,对用户定义的健康检查不响应的容器会被中止,并且在容器准备好服务之前不会把其向客户端广播。

弹性伸缩:

通过监控容器的cpu的负载值,如果这个平均高于80%,增加容器的数量,如果这个平均低于10%,减少容器的数量

服务的自动发现和负载均衡:

不需要修改您的应用程序来使用不熟悉的服务发现机制,Kubernetes 为容器提供了自己的 IP 地址和一组容器的单个DNS 名称,并可以在它们之间进行负载均衡。

滚动升级和一键回滚:

Kubernetes 逐渐部署对应用程序或其配置的更改,同时监视应用程序运行状况,以确保它不会同时终止所有实例。 如果出现问题,Kubernetes会为您恢复更改,利用日益增长的部署解决方案的生态系统。

私密配置文件管理:

web容器里面,数据库的账户密码(测试库密码)
 

6. k8s的优缺点

k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

故障迁移:当某一个node节点关机或挂掉后,node节点上的服务会自动转移到另一个node节点上,这个过程所有服务不中断。这是docker或普通云主机是不能做到的

资源调度:当node节点上的cpu、内存不够用的时候,可以扩充node节点,新建的pod就会被kube-schedule调度到新扩充的node节点上

资源隔离:创建开发、运维、测试三个命名空间,切换上下文后,开发人员就只能看到开发命名空间的所有pod,看不到运维命名空间的pod,这样就不会造成影响,互不干扰

因为采用docker容器,进程之间互不影响,

安全:不同角色有不同的权限,查看pod、删除pod等操作;RBAC认证增加了k8s的安全

快速精准地部署应用程序

限制硬件用量仅为所需资源

 

 

Kubernetes 的优势

 

  可移动: 公有云、私有云、混合云、多态云
  可扩展: 模块化、插件化、可挂载、可组合
  自修复: 自动部署、自动重启、自动复制、自动伸缩

负载均衡

k8s可以更快的更新新版本,打包应用,更新的时候可以做到不用中断服务,服务器故障不用停机,从开发环境到测试环境到生产环境的迁移极其方便,一个配置文件搞定,一次生成image,到处运行
 

二.k8s的部署

三台纯净的虚拟机

把docker 的文件铐到三个虚拟机上并且下载docker

cfd25a8399a149cab2a3723256c74b30.png

 

解决docker info的问题

14e6753af21940a8928c215b99cc25cf.png

e54d390bee76429da26d1c9658924a94.png

 

 把自己专属的阿里云加速器拷到三个虚拟机上

 

配置 vim /etc/hosts解析

6a2b2a4e295a4edf855239cade866e1e.png

 

 

2. 部署软件仓库,安装k8s

 

把我们的harbor仓库拉起来

f2edfc25b5804ca2a92fabc49b8c1438.png

 

修改cd /etc/docker 文件  server 1 2 3 上都要修改

8fdcc3290da54095abaa343138a9181b.png

 

重启docker  并且docker info 查看   server 1 2 3 都是一样的操作

0bd6823e8f25447cb3f51376ad3e8474.png

 

把证书拷贝到  server1 2 3 上

cc57879312854d8894ba176e64b77545.png

 验证一下证书是否拷贝成功

2b2262a29d7c495ab9ef715cc0509c1f.png

 先关闭swap分区

修改vim /etc/fstab 文件

server1 2 3 的操作一样

f3507962f43c444e9d41916fe3781685.png

 

创建repo源  server 1  2  3  执行相同操作

9e6486f7daa34070abb0f006c2d7a310.png

 安装相关软件(注意软件版本)server 1  2  3  执行相同操作

eba71310ac8645ac9802872c7644a365.png

     设置开机自启    server 1  2  3  执行相同操作

94d5a60946d040a4aaf517620e2cc02a.png

 

下载相应镜像

第一种方法

下载好相应的镜像  然后push到harbor仓库中

我的方法是先把镜像push到harbor 然后再server1上进行内网拉取(需要镜像的可以私信)

b7afaddd02914f4f95b998f54e64448e.png

 

6e6ea591fe1f4c0f975450fcf315bf7d.png

 3de03b7af20947e3a259e0ed7f211715.png

 

 

第二中方法(比较考验网络  需要科学上网)

我因为网络问题选择第一种

d31141c86c7544bdad7ef001e5b1f064.png

 

初始化集群

c46c80faa3fb4c5d98236c961e343461.png

 

01ddd1ef78454b23ab13b443cfdbcdd1.png

 

ba7a12926f1441aea94ba3a38e667982.png

 导入 kube-flannel.yml  并且把相关镜像路径修改到私有仓库路径

这个yml文件如果有科学上网可以直接wget   但是网络不好的话(可以私信  我给发这个yml文件)

967e15c71ba54b7f9da19e8a7d52e570.png

 查看所有节点是否running

7289be296c484481b15f7d94b908af8b.png

 

再server1上 复制此代码 到serve2 server3 上

efa23f665de14f999260da4abaf97ee9.png

 65f24eb1db684ba4a5ba5bf052c4bf6e.png

57106d497fa847cfb2d3e3591f50ddde.png 当出现三个节点都正常时 表明集启动正常

77677365f6c84c518a20c3dbd77b71bc.png

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值