2020/05/05 企业部署实战2

2.17 安装部署主控节点服务–etcd

在这里插入图片描述
现在安装k8s master节点服务,首先要安装ETCD
在这里插入图片描述
在12,21,22上安装
在这里插入图片描述
做etcd前,先签发证书,因为etcd本身通信也要ssl。
在200上创建基于根证书的config配置文件

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
peer段是互相通信,服务端找客户端需要证书,客户端找服务端也需要证书/。client段就是客户端找服务器要证书,服务器找客户端不需要。server段,启动server段要配置证书,client链接server要给证书。peer两端都需要
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
还需要创建etcd证书请求的文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最主要是host段,其余跟ca一样,host段,是etcd要部署在哪些主机上,不支持网段,只能用ip。可以把csr文件修改,就重新签发,它会把文件弄到启动文件里重启

在这里插入图片描述
etcd3个节点要互相通信,所以用-profile=peer
在这里插入图片描述
一样也是管道给生成文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

现在12上安装etcd
在这里插入图片描述
首先需要创建一个用户
在这里插入图片描述
下载etcd

在这里插入图片描述
在这里插入图片描述
建议使用比较稳定的3.1版本etcd
在这里插入图片描述
解压到opt
在这里插入图片描述
改名版本号,创建软连接,方便以后升级etcd
在这里插入图片描述
最重要的就这两个文件,启动工具和命令行工具

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

先创建三个目录,然后把certs拷贝过来,启动etcd需要三个证书,CA证书,etcd-peer私钥,etcd-peer证书
在这里插入图片描述
拷贝etcd-peer

在这里插入图片描述
在这里插入图片描述
私钥的权限是600,证书可以看,私钥绝对不能给人看
在这里插入图片描述
cert弄好了就要创建etcd启动文件,有一个etcd-server-setup脚本
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
etcd数据放在哪

在这里插入图片描述
内部互相通信2380
在这里插入图片描述
外面的人和你通信用2379在这里插入图片描述
后端客户端配额
在这里插入图片描述
证书地址
在这里插入图片描述
需要验证证书
在这里插入图片描述
给一个执行权限
在这里插入图片描述
修改所属所主

在这里插入图片描述
要把etcd作为一个后台进程,就需要依赖一个软件supervisor,是管理后台进程的软件
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

创建supervisord启动文件
在这里插入图片描述
创建这个配置文件
在这里插入图片描述
类似msql的my.cnf

在这里插入图片描述
执行的命令

在这里插入图片描述
用一个进程即可

在这里插入图片描述
自动启动,自动重启

在这里插入图片描述
进程启动多长时间才起来
在这里插入图片描述
判定三次重启

在这里插入图片描述
异常退出状态码

在这里插入图片描述
停止信号

在这里插入图片描述
配置标注错误输出,标准输出重定向到文件里
在这里插入图片描述
在这里插入图片描述
起来了可以查看日志

在这里插入图片描述
在这里插入图片描述
现在就起来了

在这里插入图片描述
必须监听了2379和2380两个端口才算成功

在这里插入图片描述
现在开始安装21
在这里插入图片描述
解压到opt目录
在这里插入图片描述
useradd -M是不加目录
在这里插入图片描述
把ca证书拷贝过来
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在去创建etcd的启动文件
在这里插入图片描述
修改成21

在这里插入图片描述

创建一些目录
在这里插入图片描述
修改权限
在这里插入图片描述
安装supervisor
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意这里是21

在这里插入图片描述
在这里插入图片描述
现在就监听起来了

在这里插入图片描述
做下一台22
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建用户
在这里插入图片描述
创建目录,拷贝证书
在这里插入图片描述
在这里插入图片描述

记得改成22
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
修改属主和属组
在这里插入图片描述
21上的状态是running

在这里插入图片描述
任意节点可以用etcdctl检测集群的健康状态
在这里插入图片描述
在这里插入图片描述
还有一种检查方法,isleader代表7-12是leader,其他都死跟班
在这里插入图片描述
在这里插入图片描述

2.18 安装部署主控节点服务–apiserver

在这里插入图片描述
下面安装k8S主控节点的apiserver,根据计划是安装在21和22
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个是go语言源码需要编译,要go环境编译成包
在这里插入图片描述
不想下载源码就点击这里

在这里插入图片描述
去下载这个,但是需要科学上网的方式

在这里插入图片描述
现在21上安装,获取k8s 1.15.2
在这里插入图片描述
k8s本身并不大,打完包才400M

在这里插入图片描述
解压,重命名,制作软连接

在这里插入图片描述
这里面就是go语言的源码包,可以删除

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
tar是docker镜像
在这里插入图片描述
不用kubeadmin,这些镜像是不要的,可以删除
在这里插入图片描述
在这里插入图片描述
暂时用到的就这些
在这里插入图片描述
部署kube-apiserver,也需要签发证书,这个client证书就是apiserver和etcd通信要用到的证书,在这个通信中,apiserver是client端,etcd是server端
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
签发证书的命令是cfssl gencert
在这里插入图片描述
client证书就做出来了,apiserver链接etcd需要证书

在这里插入图片描述
要给apiserver签发一个server证书,server证书是apiserver对外提供服务的,也要走ssl,要做一个csr,证书签发请求文件
在这里插入图片描述

在这里插入图片描述
有一个vip,7.10

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
client是我要拿这个client证书找你通信。,etcd签发是peer,现在apiserver作为client端要和etcd通信,所以签发一个client证书和etcd通信。
还需要签发server证书,因为server启动的时候需要把证书加载进来,别人拿客户端证书找你通信

在这里插入图片描述
现在有两套证书,client,apiserver。
apiserver要和etcd通信,需要client证书,apiserver自己启动要apiserver证书

在这里插入图片描述
注意没s

在这里插入图片描述
在这里插入图片描述
把证书拷贝到21
在这里插入图片描述
6张证书和私钥

在这里插入图片描述
然后创建k8s apiserver启动的配置文件
在这里插入图片描述
要把审计的配置文件放进来,这是k8s资源配置清单,专门给k8s做日志审计用的,是apiserver启动必须带的配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本身就是二进制执行文件

在这里插入图片描述
–help有很多参数
在这里插入图片描述
所以也跟etcd一样,给一个启动脚本
在这里插入图片描述

在这里插入图片描述
apiserver启动文件
在这里插入图片描述

apiserver的数量
在这里插入图片描述
日志审计的policy规则
在这里插入图片描述
健全模式RBAC,基于角色的访问控制
在这里插入图片描述
在这里插入图片描述
如果对某一行不明白可以查帮助,比如target-ram-mb
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建apiserver启动文件

在这里插入图片描述
在这里插入图片描述
不创建目录启动会有问题
在这里插入图片描述
在这里插入图片描述

现在开始装22

现在就起来了,顺便下载k8s-server软件包
在这里插入图片描述
在这里插入图片描述
修改名字,制作软连接
在这里插入图片描述
在这里插入图片描述
删除不必要的镜像
在这里插入图片描述
创建cert和conf,把证书拷贝到cert
在这里插入图片描述

在这里插入图片描述
这是日志审计配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
**配置好了,就去创建k8s的apiserver的启动文件 **
在这里插入图片描述
在这里插入图片描述
加上执行权限

在这里插入图片描述
在这里插入图片描述
这里需要换成22

在这里插入图片描述
创建目录才能启动

在这里插入图片描述
21起来了
在这里插入图片描述
22也起来了
在这里插入图片描述
apiserver是用root起的,etcd是用普通用户启动的

在这里插入图片描述
在这里插入图片描述

2.19 安装部署主控节点L4反代服务

现在要做这一步,把proxy起来做4层反向代理
在这里插入图片描述
之前的apiserver监听是在本地回环地址8080端口,一个是监听6443端口

在这里插入图片描述
所以要做一个代理节点,keepalived 跑vip,用10.4.7.10的7443端口,vip反代apiserver的6443端口
在这里插入图片描述
在这里插入图片描述
在11 和12上安装nginx
在这里插入图片描述

在这里插入图片描述
安装好nginx后,配置4层反向代理
配置主控文件
在这里插入图片描述
在这里插入图片描述
stream是4层反代,不能放在http段里

在这里插入图片描述
放在最后

在这里插入图片描述
12也是一样
在这里插入图片描述
在这里插入图片描述
现在可以把nginx启动了,-t检查下配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后安装keeepalived,调整好vip,7443在两个节点飘起来
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
做一个keepalived分清监控的脚本

在这里插入图片描述
自己keepalied,监听脚本,如果7443端口宕机了,再去飘vip
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

执行权限
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

创建一个脚本,把7443传进来

在这里插入图片描述
在这里插入图片描述
配置文件略有区别

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7443没了才去飘vip
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
vip跑到12这里了

在这里插入图片描述
就出来了
在这里插入图片描述
在这里插入图片描述
上面nginx停了,vip就会飘到这里来
在这里插入图片描述
在这里插入图片描述
nopreempt这个是非抢占式,因为在生产商网络短路的原因,探测7443端口不存在,vip只要在生产上动一次事故,就是重大安全事故,所以非抢断机制

在这里插入图片描述
两个都重启后就是11
在这里插入图片描述

2.20 安装部署主控节点控制器/调度器服务

安装主节点两个重要服务主控节点控制器/调度器服务,controller-manager/kube-scheduler

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建目录
在这里插入图片描述
在这里插入图片描述
加上执行权限
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里改一下22
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

update
在这里插入图片描述
在这里插入图片描述
部署kube-scheduler,跟controller-manager一样,启动脚本
在这里插入图片描述
这里是找本机所以不要ssl证书,21和22主控节点三个节点是一个整体,因为他们之间没有ssl证书的,这是生产上的经验,不用scheduler和controller-manager找apiserver,直接找本机即可,主控节点在三个不同的机器上就 需要通信上绕过这个证书
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
controller-manager起来了
在这里插入图片描述
在这里插入图片描述
要去检查集群健康状态,需要用到kubectl工具,做一个软链接
在这里插入图片描述
在这里插入图片描述
kubectl get cs 是检查集群的健康状态
在这里插入图片描述

2.21 安装部署运算节点服务–kubelet

部署最复杂的服务,运算节点上的kubelet服务
在这里插入图片描述
第一件事,签发证书

在这里插入图片描述
kubelet本身也对外提供https服务,apiserver找它主动问节点上的一些信息,所以它自己要签发一套server证书,kubelet要签发一套自己server的证书,要把kubelet有可能用到的节点全列上
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在把证书请求文件做出来了,然后把证书做出来-bare 前缀是kubelet

在这里插入图片描述
前缀是kubelet

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
把kubelet的证书拷贝过来
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
要给kublet创建config文件,需要四步,setcluster,setcredentials,3.setcontext,4.usecontext
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建的kublet.kuberconfig都是在conf下,是相对路径

在这里插入图片描述
第一个指的是CA跟证书,指定进来
embed-certs是一个承载式证书。
跟apiserver通信 的时候,就可以走vip 10.4.7.10:7443。配置的目的就是给kubelet做一个k8s用户,k8s用户体系比较复杂,普通用户,服务用户。普通用户和apiserver的时候需要一个接入点就是10.4.7.10:7443.
kubelet去找vip或者找apiserver

在这里插入图片描述
二进制部署安装就需要这么做
在这里插入图片描述
这个ca进来了

在这里插入图片描述
其实经过base64编码
在这里插入图片描述
可以比较下
在这里插入图片描述
在这里插入图片描述
其实就是把CA证书嵌入到config配置文件里了,启动kubelet的时候,要指明config,重启kubelet就好了,
在这里插入图片描述
第二步,把client-key.pem和client.pem进来了,apiserver是服务端, 拿客户端秘钥去和你通讯,client证书通用,因为不管是client证书和ca镇湖这么数据长,因为都是一套签发来的了
client证书实际上通用少,一般因为一套ca证书签发来的,都可以使用
*

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
set-context有个比较重要 ,–user=k8s-node,然后切换context上下文
在这里插入图片描述
要给这个k8s-node,用rpc规则设定执行权限,具有集群里作为运算节点的权限
在这里插入图片描述
现在要做角色绑定
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
rpc鉴权也是一种资源,有roleref和subjects,
在这里插入图片描述
做了集群角色绑定
在这里插入图片描述
让k8s-node这个用户,具有集群角色绑定,这个集群角色叫system:node。
创建了一个k8s用户,叫做k8snode,在k8snode上授予一个集群权限,让这个用户k8snode成为运算节点的节点,具有运算节点的权限

在这里插入图片描述
在这里插入图片描述

定义了一个clusterrolebinding,一个集群角色绑定的资源,k8s的一切皆资源,定义了资源 名字叫node,给k8s-node的集群用户绑定了一个集群角色clusterrole,这个集群角色叫system:node,意思是绑定了集群角色,让k8s-node用户具备成为这个集群里运算节点的权限
在这里插入图片描述
创建一个k8s的资源,放在etcd里了,不管是在哪个节点起来,就已经把这个资源创建出来,所以创建一遍就可以了,
在这里插入图片描述
在这里插入图片描述
不然还需要重来4遍,setcluster,setcredentials,3.setcontext,4.usecontext,所以现在方便就拷贝过来
在这里插入图片描述
做了两件事,第一件事做了一个kubeconfig的配置文件,第二就是create集群资源,这个集群资源已经在etcd里了,所以只需要一次创建资源的事情,set的过程就是做文件的过程,直接scp复制就好

如果再去create 就告诉你已经存在了
在这里插入图片描述
证书配置好了就可以做kubelet启动脚本
在这里插入图片描述
在这里插入图片描述
准备一个pause的镜像,kubelet启动的时候需要一个基础镜像来帮助我们启动pod。kubelet干脏活累活,是接收请求,scheduler调度后,调用docker引擎把容器pod拉起来,,拉容器的时候,必须有一个基础镜像。跟车模式,server是一个小镜像,kubelet能控制小镜像先于业务容器起来,帮业务容器去设置UTS,NET,IPC,小容器先把名称空间占着,以后业务容器起来的时候,pod的ip已经分配好了,所以需要一个pause基础镜像
在这里插入图片描述
在这里插入图片描述
打一个标签
在这里插入图片描述
在这里插入图片描述
私有仓库就有了,kubelet在启动的时候指定镜像,让所有业务容器启动的时候,这个pause容器,先于你的业务容器起来,因为你的pause太小了,只负责给业务容器初始化uts,net,ipc

在这里插入图片描述
下面可以启动kubelet服务
在这里插入图片描述
在这里插入图片描述
不允许匿名登录
在这里插入图片描述
docker是systemd,要跟docker的cgroup-driver保持一致
在这里插入图片描述
kubelet起来的时候默认把运算节点上的swap关闭
在这里插入图片描述
这就是根证书
在这里插入图片描述
k8s作为服务端,需要的k8s证书和私钥
在这里插入图片描述
kubelet要用到这个镜像
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建supervisor的ini配置文件
在这里插入图片描述
创建ini文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
加到supervisortl里

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
现在去node节点看看有没有加到集群里,roles现在是空的
在这里插入图片描述
要用name名字
在这里插入图片描述
既做主节点又做运算节点在这里插入图片描述
在这里插入图片描述
label只是一个标签,k8s可以根据标签来管理(加入生产,主控节点和运算节点,必须分开)主控节点装了kubelet,不想让主控节点运行kubelet,这时标签选择器给主控集结点,打一个污点,让别的容器访问u了
在这里插入图片描述

2.22 安装部署运算节点服务–kube-proxy

kube-proxy的用途主要是连结pod网络和集群网络,部署kube-proxy服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先做签发证书的请求文件
在这里插入图片描述
在这里插入图片描述
签发证书,这个kube-proxy签发的client证书跟之前的并不通用
在这里插入图片描述
-bare前缀
在这里插入图片描述
安装一次k8s签发6套证书

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
CN对应的是K8S里的角色
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
**两种方式,要么你的cn的名字随便定,k8s-node的cn和system:node做binding。
现在cn里用的是角色名称,system:nod 和system:kube-proxy都是k8s里的角色。通过签发证书,默认kube-proxy用户拥有system:kube-proxy这个角色
**
在这里插入图片描述
在这里插入图片描述
复制到22上
在这里插入图片描述
创建配置,4个步骤
kubeconfig就是k8s用户的配置文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
复制到22上
在这里插入图片描述
在这里插入图片描述
创建启动脚本
在这里插入图片描述
kube-proxy有三种调度模式:userspace废弃,iptables,建议用ipvs

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述现在就把ipvs相关模块加载进来了
在这里插入图片描述
这样kubeproxy就能用到ipvs调度方法了
在这里插入图片描述

在这里插入图片描述
ipvs加载了很多算法

在这里插入图片描述
加权轮循

在这里插入图片描述
加权最少链接
在这里插入图片描述
4个静态,6个动态

在这里插入图片描述
这4种在CDN服务上用的比较多
在这里插入图片描述
最长用的sed

在这里插入图片描述
nq基于sed算法之下,永不排队

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
创建目录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
默认启用ipvs proxier
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ipvsadm可以看到反代的地址,把clusterip和node ip绑定了

在这里插入图片描述
在这里插入图片描述
kube-proxy就维护了这三台关系
在这里插入图片描述
看到ipvs结果就看到组件成功了

在这里插入图片描述
在这里插入图片描述

2.23 验证集群

验证集群使用一个nginx服务
在这里插入图片描述
创建一个资源配置清单,使用之前的harbor有Nginx镜像,去给这个集群创建daemonset型的装饰器,去看看集群是否正常
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
能访问1但是2访问不到,原因是docker跨宿主机不能通信,需要flannel来解决
在这里插入图片描述
在这里插入图片描述
这样才算完成
在这里插入图片描述

2.24 课程总结收尾

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值