k8s

  • 1,初识k8s
  • 2,k8s核心
  • 3,构建k8s集群前。服务初始化
  • 4,构建k8s


1,初识k8s

k8s 容器没有apt k8s adapter_服务器

k8s 容器没有apt k8s adapter_服务端_02

k8s功能

k8s 容器没有apt k8s adapter_k8s 容器没有apt_03

###k8s集群分为两个节点

master load 主节点

work load 工作节点

k8s 容器没有apt k8s adapter_k8s 容器没有apt_04

schaduler通过k8s数据库edct来读取数据,发送给controller manager的

整个工作流程是:

1,用户通过kubectl发送指令到主节点的apiserver

这时候apiserver会通过edct对kubectl做一个身份认证。帐号密码等。

k8s 容器没有apt k8s adapter_服务器_05

2,权限认证通过以后apiserver会找到schaduler。叫他找一个节点,启动服务。

k8s 容器没有apt k8s adapter_服务端_06


这时候schaduler不知道使用哪个节点。schaduler会通知apiserver去etcd里面找到这个节点。找到以后返回给scheduler。scheduler又把这信息返回给apiserver。apiserver返回节点id给controller manager

3,controller manager需要通过apiserver与工作节点的kubelet建立通信
4,kubelet找到对应节点的docker,启动容器

k8s 容器没有apt k8s adapter_服务端_07


5,这时候容器需要网络,kube-proxy可以做一个代理和ip地址给docker的pod。这样外部可以访问容器了

2,k8s核心

k8s 容器没有apt k8s adapter_k8s 容器没有apt_08

k8s 容器没有apt k8s adapter_服务器_09


controller:启动,删除pod的

k8s 容器没有apt k8s adapter_docker_10

客户端访问工作节点先访问service。因为pod向service注册了地址信息

k8s 容器没有apt k8s adapter_服务端_11

label:管理标签

k8s 容器没有apt k8s adapter_初始化_12


k8s 容器没有apt k8s adapter_服务器_13

namespace:命名空间

k8s 容器没有apt k8s adapter_服务器_14

3,构建k8s集群前。服务初始化

一共10大步

生产环境下搭建k8s

采用离线部署方式。

k8s 容器没有apt k8s adapter_服务端_15


k8s 容器没有apt k8s adapter_k8s 容器没有apt_16

生产环境下部署多master集群

k8s 容器没有apt k8s adapter_docker_17


因为master节点不允许宕机。work节点可以宕机。宕机后可以将自己的容器迁移到另外的work节点上。迁移的过程必须依赖master节点

而且work节点与master节点进行通讯依赖 load balancer(2个)作负载均衡。。edct储存master节点的帐号密码。存储worker节点的地址。所以也必须三台edct(一主多从)或者多台。必须奇数。能选举出主节点,且不允许宕机。

6台虚拟机

k8s 容器没有apt k8s adapter_服务器_18

k8s 容器没有apt k8s adapter_初始化_19

自己测试实验环境,2核2g内存

虚拟机8g才够用。。。。压力散打

三种部署方式

第一种方式连测试环境都玩不了。
所以推荐第二第三种

第二种,简单。

第三种,复杂利于学习

k8s 容器没有apt k8s adapter_初始化_20

单节点。。。。master搭建准备,利用单master升级为多master

k8s 容器没有apt k8s adapter_服务端_21

安装部分

1,准备三个虚拟机

2,进行服务器的初始化工作

k8s 容器没有apt k8s adapter_docker_22

3,#3个节点服务器同时进行初始化操作。怎么搞

点击查看-撰写-撰写栏打开
点击撰写栏–发送到全部会话

(1)关闭防火墙

k8s 容器没有apt k8s adapter_服务端_23

(2)关闭交换分区

k8s 容器没有apt k8s adapter_服务端_24


临时关闭

三个窗口都打开编辑

k8s 容器没有apt k8s adapter_服务器_25

每一个服务器都删掉swap那行

k8s 容器没有apt k8s adapter_docker_26


k8s 容器没有apt k8s adapter_服务端_27

(3)配置主机名

k8s 容器没有apt k8s adapter_服务器_28


k8s 容器没有apt k8s adapter_服务端_29


k8s 容器没有apt k8s adapter_服务器_30

(4)配置名称解析

修改k8s master1

k8s 容器没有apt k8s adapter_服务端_31

其余两个一样
粘贴过来

k8s 容器没有apt k8s adapter_docker_32

(5)关闭selinux

k8s 容器没有apt k8s adapter_服务器_33


这种是已经关闭掉了这是临时关闭

永久关闭

k8s 容器没有apt k8s adapter_docker_34

黑色那行改成disabled

k8s 容器没有apt k8s adapter_docker_35

(6)配置时间同步

1,配置服务端

k8s 容器没有apt k8s adapter_初始化_36

执行这两个命令

k8s 容器没有apt k8s adapter_初始化_37

那个iburst是上游服务器的意思

k8s 容器没有apt k8s adapter_服务端_38


把这四个删了加这句

k8s 容器没有apt k8s adapter_初始化_39

然后allow下面修改

k8s 容器没有apt k8s adapter_docker_40

k8s 容器没有apt k8s adapter_docker_41

允许31网段的所有访问

然后

k8s 容器没有apt k8s adapter_初始化_42


将这个注释打开启动服务端+自动启动服务端

k8s 容器没有apt k8s adapter_初始化_43

检查服务端是否启动

k8s 容器没有apt k8s adapter_初始化_44

如果不显示就restart服务一次

2,配置客户端node1,node2

k8s 容器没有apt k8s adapter_服务器_45

k8s 容器没有apt k8s adapter_docker_46

其余的跟服务端一样。server那里修改指向为服务端

测试客户端有无启动

k8s 容器没有apt k8s adapter_服务器_47


上尖括号加* 号代表时间同步配置成功

上尖括号加?号代表不成功。

或者

k8s 容器没有apt k8s adapter_服务端_48

4,构建k8s

k8s 容器没有apt k8s adapter_初始化_49

对称加密:加密解密用的相同密钥

非对称加密:公钥加密私钥解密

单向加密:只能加密不能解密

k8s 容器没有apt k8s adapter_k8s 容器没有apt_50


我们用第二个

k8s 容器没有apt k8s adapter_k8s 容器没有apt_51


k8s 容器没有apt k8s adapter_服务端_52

我们用第二个

###减少服务器资源。测试环境下
使用主节点master安装一个edct
其余两个node也分别安装一个edct。

k8s 容器没有apt k8s adapter_服务端_53

###需要准备这几个tar包

k8s 容器没有apt k8s adapter_初始化_54


k8s 容器没有apt k8s adapter_初始化_55

1,

k8s 容器没有apt k8s adapter_docker_56

k8s 容器没有apt k8s adapter_docker_57

k8s 容器没有apt k8s adapter_初始化_58

启动cfssl.sh

k8s 容器没有apt k8s adapter_服务端_59


k8s 容器没有apt k8s adapter_服务端_60

配置server-csr.json

k8s 容器没有apt k8s adapter_k8s 容器没有apt_61


k8s 容器没有apt k8s adapter_初始化_62

因为证书是颁发给edct的。edct又安装在这几个服务器下的。所以ip改成这几个服务器的

自建证书

k8s 容器没有apt k8s adapter_k8s 容器没有apt_63


k8s 容器没有apt k8s adapter_k8s 容器没有apt_64

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

k8s 容器没有apt k8s adapter_服务器_65

这时候应该有4个证书

到此颁发证书完毕