1,初识k8s
k8s功能
###k8s集群分为两个节点
master load 主节点
work load 工作节点
schaduler通过k8s数据库edct来读取数据,发送给controller manager的
整个工作流程是:
1,用户通过kubectl发送指令到主节点的apiserver
这时候apiserver会通过edct对kubectl做一个身份认证。帐号密码等。
2,权限认证通过以后apiserver会找到schaduler。叫他找一个节点,启动服务。
这时候schaduler不知道使用哪个节点。schaduler会通知apiserver去etcd里面找到这个节点。找到以后返回给scheduler。scheduler又把这信息返回给apiserver。apiserver返回节点id给controller manager
3,controller manager需要通过apiserver与工作节点的kubelet建立通信
4,kubelet找到对应节点的docker,启动容器
5,这时候容器需要网络,kube-proxy可以做一个代理和ip地址给docker的pod。这样外部可以访问容器了
2,k8s核心
controller:启动,删除pod的
客户端访问工作节点先访问service。因为pod向service注册了地址信息
label:管理标签
namespace:命名空间
3,构建k8s集群前。服务初始化
一共10大步
生产环境下搭建k8s
采用离线部署方式。
生产环境下部署多master集群
因为master节点不允许宕机。work节点可以宕机。宕机后可以将自己的容器迁移到另外的work节点上。迁移的过程必须依赖master节点
而且work节点与master节点进行通讯依赖 load balancer(2个)作负载均衡。。edct储存master节点的帐号密码。存储worker节点的地址。所以也必须三台edct(一主多从)或者多台。必须奇数。能选举出主节点,且不允许宕机。
6台虚拟机
自己测试实验环境,2核2g内存
虚拟机8g才够用。。。。压力散打
三种部署方式
第一种方式连测试环境都玩不了。
所以推荐第二第三种
第二种,简单。
第三种,复杂利于学习
单节点。。。。master搭建准备,利用单master升级为多master
安装部分
1,准备三个虚拟机
2,进行服务器的初始化工作
3,#3个节点服务器同时进行初始化操作。怎么搞
点击查看-撰写-撰写栏打开
点击撰写栏–发送到全部会话
(1)关闭防火墙
(2)关闭交换分区
临时关闭
三个窗口都打开编辑
每一个服务器都删掉swap那行
(3)配置主机名
(4)配置名称解析
修改k8s master1
其余两个一样
粘贴过来
(5)关闭selinux
这种是已经关闭掉了
这是临时关闭
永久关闭
黑色那行改成disabled
(6)配置时间同步
1,配置服务端
执行这两个命令
那个iburst是上游服务器的意思
把这四个删了加这句
然后allow下面修改
允许31网段的所有访问
然后
将这个注释打开
启动服务端+自动启动服务端
检查服务端是否启动
如果不显示就restart服务一次
2,配置客户端node1,node2
其余的跟服务端一样。server那里修改指向为服务端
测试客户端有无启动
上尖括号加* 号代表时间同步配置成功
上尖括号加?号代表不成功。
或者
4,构建k8s
对称加密:加密解密用的相同密钥
非对称加密:公钥加密私钥解密
单向加密:只能加密不能解密
我们用第二个
我们用第二个
###减少服务器资源。测试环境下
使用主节点master安装一个edct
其余两个node也分别安装一个edct。
###需要准备这几个tar包
1,
启动cfssl.sh
配置server-csr.json
因为证书是颁发给edct的。edct又安装在这几个服务器下的。所以ip改成这几个服务器的
自建证书
ca.pem:公钥
ca.ley.pem:私钥
颁发证书
如下图
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server
这时候应该有4个证书
到此颁发证书完毕