本文共 3641 字,大约阅读时间需要 12 分钟。
想在集群外部访问集群内部服务该如何,在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语言研发,类似zookeeper,访问接口是http+json格式的API。,rusltfull风格的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,勾联之后生成的隧道转载地址:http://hckgn.baihongyu.com/