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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_42227818/article/details/98499530

在这里插入图片描述
想在集群外部访问集群内部服务该如何,在k8s集群内部,pod对整个集群都是可见的,但是跨越集群步可以没因为是私有地址,
在k8s上可以定义一种ingress组件,入站请求组件,把url映射出去,/tomcat
在这里插入图片描述
尝试去部署一个k8s集群,三个节点

在这里插入图片描述
kubernetes_installation.pdfa安装文档
69扮演三个角色,etcd,master,registry私有仓库,,chrony server集群中的时间需要同步

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

部署master在这里插入图片描述
master只要安装master
node只需要安装node

在这里插入图片描述
三个unitfile
apiserver 真正监听用户请求
controller-manager
scheduler
配置文件 。etc/
config统一公共配置
在这里插入图片描述
有众多子命令
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
非安全协议监听的地址,用的http
在这里插入图片描述
默认的是监听api端口是8080
在这里插入图片描述
**每个kubelet通信的端口,默认10250
**在这里插入图片描述
逗号隔开的etcd集群列表
在这里插入图片描述
k8s会运行很多服务,服务有很多静态地址在哪个范围内,默认是10.254的B类网络地址在这里插入图片描述
默认控制策略,名称空间,生命周期,名称空间存在,资源限制limitranger
securitycontextdeny 安全上下文
serviceaccount 服务账户(启动了,访问服务,没有账号都无法访问)
resourcequota资源配额
在这里插入图片描述
自定义选项
在这里插入图片描述在这里插入图片描述
不想要默认值添加即可在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
统一配置在这里插入图片描述
对应日志发往标准错误输出,在这里插入图片描述
日志级别
在这里插入图片描述
要不要允许node节点允许特权容器在这里插入图片描述
默认监听就是8080,你的master地址在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
10251,10252用于其他主机通信的地址在这里插入图片描述
安装私有registry,默认端口5000,为了支持更多链接可以用nginx反代在这里插入图片描述在这里插入图片描述
node1,2安装docker在这里插入图片描述在这里插入图片描述
add redistry指向私有的master仓库
这里使用insecure registry
在这里插入图片描述
另外主机配置文件一样复制过去在这里插入图片描述
启动node1,2docker在这里插入图片描述
pull一个镜像推送上本地
修改标签,推送上去随后其他节点都可以用 了
在这里插入图片描述
现在节点准备好,镜像也push上去了
现在要成为k8s的node
安装配置,指明主节点是什么

都安装-node在这里插入图片描述
公共配置文件在这里插入图片描述
各自的在这里插入图片描述
unitfile在这里插入图片描述
编辑配置文件在这里插入图片描述在这里插入图片描述
自己监听的地址在这里插入图片描述
监听的端口,默认10250
在这里插入图片描述
当前节点的主机名,为空就是本机的主机名
在这里插入图片描述
master的apiserver地址
在这里插入图片描述
指明pod的基础架构容器在这里插入图片描述
自定义选项
在这里插入图片描述

公共配置在这里插入图片描述
改一下master即可在这里插入图片描述在这里插入图片描述在这里插入图片描述
复制配置文件到node2
可以启动服务了

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

在这里插入图片描述
需要run一个容器
pull一个镜像下来
在这里插入图片描述
–dry-run干跑
replicas打算跑几个副本=2
在这里插入图片描述
真实跑一下试试,不允许使用下划线
names就是部署名
期望有2个pod,启动了2个
在这里插入图片描述
kube scheduler调度的结果,node2一个,node1一个在这里插入图片描述
在这里插入图片描述
去node1和node2各自看一下,现在容器还没起来在这里插入图片描述
因为默认允许在shell,shell一启动就中止了在这里插入图片描述在这里插入图片描述
-t附加一个终端,不然shell一启动就结束了,-h查看帮助
把刚才部署好没用的容器删除,删除一个centos7的部署
再启动一个pod

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

waiting for是要pull镜像的
在这里插入图片描述
调度到node1上了在这里插入图片描述在这里插入图片描述.都是172.17。0.2两个容器都是这个地址就没办法通信,因此这种网络方式不符合我们期望的

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

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

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

猜你喜欢

转载自blog.csdn.net/qq_42227818/article/details/98499530
今日推荐