2019/08/05 kubernetes集群部署(04)

2019/08/05 kubernetes集群部署(04)_第1张图片
想在集群外部访问集群内部服务该如何,在k8s集群内部,pod对整个集群都是可见的,但是跨越集群步可以没因为是私有地址,
在k8s上可以定义一种ingress组件,入站请求组件,把url映射出去,/tomcat
2019/08/05 kubernetes集群部署(04)_第2张图片
尝试去部署一个k8s集群,三个节点

2019/08/05 kubernetes集群部署(04)_第3张图片
kubernetes_installation.pdfa安装文档
69扮演三个角色,etcd,master,registry私有仓库,,chrony server集群中的时间需要同步

**node3 当master **2019/08/05 kubernetes集群部署(04)_第4张图片
做一下免密登录
把文件复制过去,名称解析,时间同步都ok了,确保每个节点都配置extras仓库2019/08/05 kubernetes集群部署(04)_第5张图片
确保防火墙关闭,并且开机不自启动
etcd其实就是kv store存储2019/08/05 kubernetes集群部署(04)_第6张图片2019/08/05 kubernetes集群部署(04)_第7张图片
leader election 领导选举
centralized locking 中心锁 ,分布式锁
仅用于服务注册和服务发现的,airbnbmsmartstack,netflix的eureka,bitly的nsq lookupd serf,skydns
2019/08/05 kubernetes集群部署(04)_第8张图片
简单来讲,etcd就是一个开源的键值存储,支持服务发现,支持leader选举功能
etcd使用go语言研发,类似zookeeper,访问接口是http+json格式的API。,rusltfull风格的api接口
在这里插入图片描述2019/08/05 kubernetes集群部署(04)_第9张图片2019/08/05 kubernetes集群部署(04)_第10张图片2019/08/05 kubernetes集群部署(04)_第11张图片
配置文件
unit file
etcd。service
2019/08/05 kubernetes集群部署(04)_第12张图片
输出的是api,就需要编程交互,也有客户端工具,etcdctl
etcd默认监听在2379和2380的tcp
2379用于向客户端提供存取服务的
2380用来实现集群间协调服务的
(redis也是,客户端服务一个端口,集群服务一个端口)
2019/08/05 kubernetes集群部署(04)_第13张图片
这些其实都是传递给etcd命令的各种参数
可以改成当前节点的名称
在这里插入图片描述在这里插入图片描述
通过哪一个地址和端口向客户端提供服务
在这里插入图片描述
集群交互式监听的地址和端口,集群协作时,我们现在就一个
在这里插入图片描述
集群相关配置段
在这里插入图片描述
向外通告,用哪个url接收用户请求,应该跟之前定义的监听端口保持一致在这里插入图片描述
协调集群事务时通过哪个url进行
在这里插入图片描述
与上面的保持一致,如果启用
在这里插入图片描述
有三个节点,每个主机各自有两个端口,一个是用来接收客户端请求的,一个用来协调集群事务的
每一个对应端口需要通告给集群中的每一个节点
先通告哪一个端口是用来接收客户端请求的
2019/08/05 kubernetes集群部署(04)_第14张图片
**作为集群成员要listen peer urls,也是对外的地址,
inital advertise peer urls 通告的地址 **在这里插入图片描述2019/08/05 kubernetes集群部署(04)_第15张图片2019/08/05 kubernetes集群部署(04)_第16张图片
访问应该使用这个端点来访问etcd在这里插入图片描述
可以用etcdctl来测试
指明向哪个节点发出请求
在这里插入图片描述2019/08/05 kubernetes集群部署(04)_第17张图片
集群当前健康与否
在这里插入图片描述
动态添加节点2019/08/05 kubernetes集群部署(04)_第18张图片
ls查看目录,mkdir创建目录,rmdir删除目录
set设定键值
get获取键值
rm删除键
watch监控键的改变
user添加用户授权
backup备份
mk赋予键值对
2019/08/05 kubernetes集群部署(04)_第19张图片
get获取值,set修改设定值
rmdir删除目录可以递归

删除非空目录,需要使用rm -r递归
单机性能大概一秒10000的键存进去,做成集群性能可能更高点

部署master2019/08/05 kubernetes集群部署(04)_第20张图片
master只要安装master
node只需要安装node


三个unitfile
apiserver 真正监听用户请求
controller-manager
scheduler
配置文件 。etc/
config统一公共配置
2019/08/05 kubernetes集群部署(04)_第21张图片
有众多子命令
2019/08/05 kubernetes集群部署(04)_第22张图片

非安全协议监听的地址,用的http
在这里插入图片描述
默认的是监听api端口是8080
在这里插入图片描述
**每个kubelet通信的端口,默认10250
**在这里插入图片描述
逗号隔开的etcd集群列表
在这里插入图片描述
k8s会运行很多服务,服务有很多静态地址在哪个范围内,默认是10.254的B类网络地址在这里插入图片描述
默认控制策略,名称空间,生命周期,名称空间存在,资源限制limitranger
securitycontextdeny 安全上下文
serviceaccount 服务账户(启动了,访问服务,没有账号都无法访问)
resourcequota资源配额
在这里插入图片描述
自定义选项
在这里插入图片描述在这里插入图片描述
不想要默认值添加即可2019/08/05 kubernetes集群部署(04)_第23张图片在这里插入图片描述2019/08/05 kubernetes集群部署(04)_第24张图片在这里插入图片描述
统一配置
对应日志发往标准错误输出,
在这里插入图片描述
日志级别
在这里插入图片描述
要不要允许node节点允许特权容器在这里插入图片描述
默认监听就是8080,你的master地址在这里插入图片描述2019/08/05 kubernetes集群部署(04)_第25张图片2019/08/05 kubernetes集群部署(04)_第26张图片在这里插入图片描述
10251,10252用于其他主机通信的地址2019/08/05 kubernetes集群部署(04)_第27张图片
安装私有registry,默认端口5000,为了支持更多链接可以用nginx反代2019/08/05 kubernetes集群部署(04)_第28张图片2019/08/05 kubernetes集群部署(04)_第29张图片
node1,2安装docker2019/08/05 kubernetes集群部署(04)_第30张图片2019/08/05 kubernetes集群部署(04)_第31张图片
add redistry指向私有的master仓库
这里使用insecure registry

另外主机配置文件一样复制过去2019/08/05 kubernetes集群部署(04)_第32张图片
启动node1,2docker2019/08/05 kubernetes集群部署(04)_第33张图片
pull一个镜像推送上本地
修改标签,推送上去随后其他节点都可以用 了
2019/08/05 kubernetes集群部署(04)_第34张图片
现在节点准备好,镜像也push上去了
现在要成为k8s的node
安装配置,指明主节点是什么

都安装-node2019/08/05 kubernetes集群部署(04)_第35张图片
公共配置文件2019/08/05 kubernetes集群部署(04)_第36张图片
各自的
在这里插入图片描述
unitfile
在这里插入图片描述
编辑配置文件
2019/08/05 kubernetes集群部署(04)_第37张图片2019/08/05 kubernetes集群部署(04)_第38张图片
自己监听的地址
在这里插入图片描述
监听的端口,默认10250
在这里插入图片描述
当前节点的主机名,为空就是本机的主机名
在这里插入图片描述
master的apiserver地址
在这里插入图片描述
指明pod的基础架构容器
在这里插入图片描述
自定义选项
在这里插入图片描述

公共配置
2019/08/05 kubernetes集群部署(04)_第39张图片
改一下master即可2019/08/05 kubernetes集群部署(04)_第40张图片2019/08/05 kubernetes集群部署(04)_第41张图片在这里插入图片描述
复制配置文件到node2
可以启动服务了

在这里插入图片描述
node2的主机名需要进行修改2019/08/05 kubernetes集群部署(04)_第42张图片
地址服务ok
1.3以后,cAdivisor作为一个插件被直接整合进来,4194就是他的端口
2019/08/05 kubernetes集群部署(04)_第43张图片
kubectl命令可以探查2019/08/05 kubernetes集群部署(04)_第44张图片
基础命令
部署命令
在这里插入图片描述
集群管理命令
2019/08/05 kubernetes集群部署(04)_第45张图片
排错的命令
2019/08/05 kubernetes集群部署(04)_第46张图片
高级命令
在这里插入图片描述
设置命令
在这里插入图片描述
其他命令
api-version api接口版本号是什么
在这里插入图片描述
batch批处理,autoscaling伸缩的2019/08/05 kubernetes集群部署(04)_第47张图片
get可以知道运行了多少个pod
在这里插入图片描述
x详细信息
在这里插入图片描述
attach和exec与docker的非常相似
在这里插入图片描述
获取更多信息可以用dump2019/08/05 kubernetes集群部署(04)_第48张图片
获取节点有哪些get2019/08/05 kubernetes集群部署(04)_第49张图片
没有跑任何pod
2019/08/05 kubernetes集群部署(04)_第50张图片
基于镜像启动容器,一个容器必须属于一个pod

在这里插入图片描述
需要run一个容器
pull一个镜像下来
2019/08/05 kubernetes集群部署(04)_第51张图片
–dry-run干跑
replicas打算跑几个副本=2
在这里插入图片描述
真实跑一下试试,不允许使用下划线
names就是部署名
期望有2个pod,启动了2个
2019/08/05 kubernetes集群部署(04)_第52张图片
kube scheduler调度的结果,node2一个,node1一个2019/08/05 kubernetes集群部署(04)_第53张图片

去node1和node2各自看一下,现在容器还没起来在这里插入图片描述
因为默认允许在shell,shell一启动就中止了2019/08/05 kubernetes集群部署(04)_第54张图片在这里插入图片描述
-t附加一个终端,不然shell一启动就结束了,-h查看帮助
把刚才部署好没用的容器删除,删除一个centos7的部署
再启动一个pod

2019/08/05 kubernetes集群部署(04)_第55张图片
现在已经在容器内部了
查看日志调度到node2了2019/08/05 kubernetes集群部署(04)_第56张图片
ctrl+p + ctrl+q,一样使用在这里插入图片描述
可以重新链接2019/08/05 kubernetes集群部署(04)_第57张图片
在kubernetes上这不是容器是pod
get查看,自动给你随机生成的名称,期望1个/ready1个 状态running
2019/08/05 kubernetes集群部署(04)_第58张图片
把整个容器停了应该会自动调度的2019/08/05 kubernetes集群部署(04)_第59张图片
23秒之前恢复运行,确保一直运行
不要了,就用delete删除,terminating正在中止中2019/08/05 kubernetes集群部署(04)_第60张图片
现在就没有 了在这里插入图片描述
如何让两个容器彼此互相通信

waiting for是要pull镜像的
在这里插入图片描述
调度到node1上了2019/08/05 kubernetes集群部署(04)_第61张图片2019/08/05 kubernetes集群部署(04)_第62张图片.都是172.17。0.2两个容器都是这个地址就没办法通信,因此这种网络方式不符合我们期望的

把刚才的pod删除,开始配置kubernetes使用flannel网络,需要都安装flannel包,也需要把网络配置存到etcd中,所以要告诉它etcd在何处
node1,node2都需要安装,etcd是错误的在这里插入图片描述
配置文件
运行时的数据
*在这里插入图片描述
主程序
在这里插入图片描述
启动服务
在这里插入图片描述在这里插入图片描述
2019/08/05 kubernetes集群部署(04)_第63张图片
在etcd上找个根目录/atomic.io,子目录下network,在找个子目录下找个网段即可
给kubernetest集群用的网段,这个网段地址需要自己手动设置,但是要求网段地址放在这个子目录下

在这里插入图片描述
复制到另外的节点上,启动之前需要做一个配置在这里插入图片描述
需要用etcdctl做一个设置
-C表示连接到哪个服务器上,mk创建一个键,键名时config,键值对是{}
2019/08/05 kubernetes集群部署(04)_第64张图片
创建完成会在命令行显示一遍在这里插入图片描述
三个节点都需要启动在这里插入图片描述
启动以后随便找个节点看status2019/08/05 kubernetes集群部署(04)_第65张图片
隧道桥,地址很诡异2019/08/05 kubernetes集群部署(04)_第66张图片
docker0桥需要改变2019/08/05 kubernetes集群部署(04)_第67张图片在这里插入图片描述
docker0桥的地址,不再是172了
在这里插入图片描述
重启docker,docker会自动读取这个文件在这里插入图片描述
node1,node2重启docker2019/08/05 kubernetes集群部署(04)_第68张图片现在两个节点获得的容器应该地址不一样,但是另个应该可以互相直接通信的,基于隧道网络,用的是pod
手动启动一个docker试试
2019/08/05 kubernetes集群部署(04)_第69张图片
能ping通2019/08/05 kubernetes集群部署(04)_第70张图片
在也 不用nat了,pod和pod就可以直接在平面下通信
从10.7.91.0.对10.。7。42
2019/08/05 kubernetes集群部署(04)_第71张图片
其实是发给隧道的
源地址目标地址,改成,0来进行通信的
2019/08/05 kubernetes集群部署(04)_第72张图片
在另外一侧应该是另外的结果2019/08/05 kubernetes集群部署(04)_第73张图片
依然是从网络地址到主机地址的通信2019/08/05 kubernetes集群部署(04)_第74张图片
ping目标以后i,源地址是一个网络地址,这个网络地址是你的大的子网,地址是10.7.0,子网网络之间进行通信时通畅,因为时基于隧道转发的

隧道的捕获报文其实时两层ip,内存ip地址时91.2,目标地址时4.2,respon地址是172,2,0.68,勾联之后生成的隧道

你可能感兴趣的:(第48)