| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Linux企业运维##Kubernetes(六)service -> 正文阅读 |
|
[系统运维]Linux企业运维##Kubernetes(六)service |
目录 一、service简介Service可以看作是一组提供相同服务的Pod对外的访问接口。借助Service,应 Service的类型:
二、IPVS模式
1.开启kube-proxy的ipvs模式(1)所有节点先安装IPVS
(2)修改kube-proxy模式为ipvs模式
(3)更新kube-proxy pod:删除之前的pod后控制器会自动重建,重建后的pod会生效刚才修改的配置
(6)查看当前ipvs模块中记录的连接 kube-proxy通过linux的IPVS模块,以rr轮询方式调度service中的Pod? 三、集群内部通信1.ClusterIP方式(1)test1上开启harbor仓库,test2编辑deploy.yml,将副本数置为6,设置标签为app=myapp 读取应用该文件,现在有6个pod,可看到标签为app=myapp (2)新建文件夹service,编辑clusterip.yml,selector下设置app为myapp 应用配置,可以看到新创建了一个名为web-service的service (3)查看web-service的详细信息,可看到后端pod有6个,即步骤(1)创建的6个标签app=myapp的pod web-service的访问地址是10.98.243.46? (4)查看当前连接情况,可以看到kube-proxy通过linux的IPVS模块,以rr轮询方式调度service中的Pod。 (5)测试访问该服务 可以看到每次访问以轮询的方式分配给每一个pod (6)进入容器中并查看web-service服务的dns解析
可知web-service服务的dns解析来自service 10.96.0.10(kube-system内的kube-dns服务) 2.Headless无头服务以DNS记录的方式解析出被代理Pod的IP地址,不需要通过Ip地址访问,可直接访问服务名称 (1)删除已有service,编辑clusterip.yml 应用配置,可以看到新创建了一个web-service的服务,且cluster-ip为None (2)测试访问 (3)安装dig插件用以查看解析的A记录 (4)查看kube-system空间内的service,可看到微服务kube-dns的ip为10.96.0.10 kube-dns服务有两个后端pod,就是kube-system空间内的两个coredns? ?(5)输入命令查看10.96.0.10服务的A记录,有6个应答ip
(6)查看kube-system中coredns的ip地址 输入命令查看coredns地址的服务的A记录 四、实现外部访问1.NodePort方式(1)删除已有service,编辑clusterip.yml 应用配置,可以看到新创建了一个web-service的服务,且cluster-ip为10.111.201.206,类型为NodePort,开放的端口是31565 (2)查看当前连接情况,可以看到kube-proxy通过linux的IPVS模块,以rr轮询方式调度service中的Pod (3)使用宿主机访问服务,可以看到来自6个后端轮询应答 2.LoadBalancer模式适用于公有云上的Kubernetes 服务。 (1)编辑微服务web-service,设置类型为LoadBalancer(也可使用yml文件设置)
(2)更改kube-proxy配置,设置strictARP为true
删除之前的kube-proxy,控制器会自动重建kube-proxy使更改生效
(3)新建metallb目录并在目录内下载metallb.yaml和namespace.yaml
(4)使用namespace.yaml新建一个命为metallb-system的namespace (5)查看metallb.yaml中所需的镜像 (6)在harbor仓库中新建metallb项目 ?(7)在test1(作为harbor仓库的主机)上拉取这两个镜像并上传到harbor仓库中
(8)修改metallb.yaml配置文件中speaker和controller的镜像路径为harbor仓库 (9)完成配置并应用metallb.yaml文件 查看metallb-system空间的pod信息,看到一个controller和三个speaker (10)编辑configmap.yaml文件,指定分配的IP地址范围 (11)配置完成并应用,查看服务,可以看到external-ip地址在configmap.yaml文件指定的范围之中 (12)真实主机测试访问,可以看到负载均衡 3.ExternalName方式externalName Service是k8s中一个特殊的service类型,它不需要指定selector去选择哪些pods实例提供服务,而是使用DNS CNAME机制把自己CNAME到你指定的另外一个域名上,可以提供集群内的名字,也可以指定外部真实域名。 (1)编辑ex-svc.yaml文件并应用 可以看到my-service的类型为ExternalName,外部地址为test.westos.org (2)通过dig命令查看一下解析过程
当查找服务时,群集DNS服务返回 CNAME 记录,其值为 test.westos.org。 访问 my-service 的方式与其他服务的方式相同,但主要区别在于重定向发生在 DNS 级别,而不是通过代理或转发。 (3)重新编辑ex-svc.yaml文件,将externalName改为www.baidu.com,应用文件 ?? 外部地址为www.baidu.com (4)再使用dig查看解析,看到CNAME记录变成www.baidu.com 4.手动分配公网IP方式(1)编辑ex-ip.yml文件,设置标签app为myapp,外部ip为172.25.73.111 ? (2)查看标签app=myapp的pod (3)应用ex-ip.yml文件,生成名为ex-ip的svc,其中包含6个标签app=myapp的pod 外部ip为172.25.73.111 (4)集群内部测试访问,可看到负载均衡,此时其他主机无法访问到172.25.73.111 (5)手动将ip172.25.73.111加到网卡接口上、
此时便可实现从外部访问172.25.73.111 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 7:34:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |