当前位置: 首页 > news >正文

网站建设实验总结报告站长工具免费

网站建设实验总结报告,站长工具免费,甘肃省庆阳市合水县疫情最新消息,织梦 公司网站模板文章目录一、k8s网络通信service和iptables的关系二、services1.简介2.默认3.IPVS模式的service4.clusterip5.headless6.从外部访问service的三种方式(1)nodeport(2)loadbalancer7.metallb一、k8s网络通信 k8s通过CNI接口接入其他…

文章目录

  • 一、k8s网络通信
    • service和iptables的关系
  • 二、services
    • 1.简介
    • 2.默认
    • 3.IPVS模式的service
    • 4.clusterip
    • 5.headless
    • 6.从外部访问service的三种方式
      • (1)nodeport
      • (2)loadbalancer
    • 7.metallb


一、k8s网络通信

k8s通过CNI接口接入其他插件来实现网络通讯。目前比较流行的插件有flannel,calico等。CNI插件存放位置:# cat  /etc/cni/net.d/10-flannel.conflist 插件使用的解决方案如下:虚拟网桥,虚拟网卡,多个容器共用一个虚拟网卡进行通信。多路复用:MacVLAN,多个容器共用一个物理网卡进行通信。硬件交换:SR-LOV,一个物理网卡可以虚拟出多个接口,这个性能最好。容器间通信:同一个pod内的多个容器间的通信,通过lo即可实现;pod之间的通信:同一节点的pod之间通过cni网桥转发数据包。(brctl show可以查看)不同节点的pod之间的通信需要网络插件支持。pod和service通信: 通过iptables或ipvs实现通信,ipvs取代不了iptables,因为ipvs只能做负载均衡,而做不了nat转换。pod和外网通信:iptables的MASQUERADE。Service与集群外部客户端的通信;(ingress、nodeport、loadbalancer)

service和iptables的关系

service 的代理是 kube-proxy
kube-proxy 运行在所有节点上,它监听 apiserver 中 service 和 endpoint 的变化情况,创建路由规则以提供服务 IP 和负载均衡功能。简单理解此进程是Service的透明代理兼负载均衡器,其核心功能是将到某个Service的访问请求转发到后端的多个Pod实例上,而kube-proxy底层又是通过iptables和ipvs实现的。
iptables原理
Kubernetes从1.2版本开始,将iptables作为kube-proxy的默认模式。iptables模式下的kube-proxy不再起到Proxy的作用,其核心功能:通过API Server的Watch接口实时跟踪Service与Endpoint的变更信息,并更新对应的iptables规则,Client的请求流量则通过iptables的NAT机制“直接路由”到目标Pod。
ipvs原理
IPVS在Kubernetes1.11中升级为GA稳定版。IPVS则专门用于高性能负载均衡,并使用更高效的数据结构(Hash表),允许几乎无限的规模扩张,因此被kube-proxy采纳为最新模式。

在IPVS模式下,使用iptables的扩展ipset,而不是直接调用iptables来生成规则链。iptables规则链是一个线性的数据结构,ipset则引入了带索引的数据结构,因此当规则很多时,也可以很高效地查找和匹配。

可以将ipset简单理解为一个IP(段)的集合,这个集合的内容可以是IP地址、IP网段、端口等,iptables可以直接添加规则对这个“可变的集合”进行操作,这样做的好处在于可以大大减少iptables规则的数量,从而减少性能损耗。
kube-proxy ipvs和iptables的异同
iptables与IPVS都是基于Netfilter实现的,但因为定位不同,二者有着本质的差别:iptables是为防火墙而设计的;IPVS则专门用于高性能负载均衡,并使用更高效的数据结构(Hash表),允许几乎无限的规模扩张。

与iptables相比,IPVS拥有以下明显优势:

  • 为大型集群提供了更好的可扩展性和性能;
  • 支持比iptables更复杂的复制均衡算法(最小负载、最少连接、加权等);
  • 支持服务器健康检查和连接重试等功能;
  • 可以动态修改ipset的集合,即使iptables的规则正在使用这个集合。
    在这里插入图片描述

二、services

1.简介

Service可以看作是一组提供相同服务的Pod对外的访问接口。借助Service,应用可以方便地实现服务发现和负载均衡。
service默认只支持4层负载均衡能力,没有7层功能。(可以通过Ingress实现)

service的类型:(前三种是集群外部访问内部资源)ClusterIP:默认值,k8s系统给service自动分配的虚拟IP,只能在集群内部访问。NodePort:将Service通过指定的Node上的端口暴露给外部,访问任意一个NodeIP:nodePort都将路由到ClusterIP。LoadBalancer:在 NodePort 的基础上,借助 cloud provider 创建一个外部的负载均衡器,并将请求转发到 <NodeIP>:NodePort,此模式只能在云服务器上使用。ExternalName:将服务通过 DNS CNAME 记录方式转发到指定的域名(通过 spec.externlName 设定)。[集群内部访问外部,通过内部调用外部资源]

2.默认

创建测试示例
[root@k8s2 service]# vim myapp.yml
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: myappname: myapp
spec:replicas: 6selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- image: myapp:v1name: myapp---apiVersion: v1
kind: Service
metadata:labels:app: myappname: myapp
spec:ports:- port: 80protocol: TCPtargetPort: 80selector:app: myapptype: ClusterIP[root@k8s2 service]# kubectl apply -f myapp.yml[root@k8s2 service]# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   4d1h
myapp        ClusterIP   10.107.249.53   <none>        80/TCP    7s

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

默认使用iptables调度
[root@server2 service]# iptables -t nat -nL | grep :80
在这里插入图片描述

3.IPVS模式的service

Service 是由 kube-proxy 组件,加上 iptables 来共同实现的
kube-proxy 通过 iptables 处理 Service 的过程,需要在宿主机上设置相当多的 iptables 规则,如果宿主机有大量的Pod,不断刷新iptables规则,会消耗大量的CPU资源。
IPVS模式的service,可以使K8s集群支持更多量级的Pod。

查看没有设置ipvs模式时候的ipvs
[root@server2 ~]# lsmod | grep ip    ##可以查看对应的ipvs是没有使用的,还是使用的iptables
ip6_udp_tunnel         12755  1 vxlan
ip_vs_sh               12688  0 
ip_vs_wrr              12697  0 
ip_vs_rr               12600  0 
ip_vs                 145497  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr

部署ipvs模式

[root@server2 ~]# yum install -y ipvsadm    ##安装ipvsadm[root@server2 ~]# kubectl get pod -n kube-system | grep kube-proxy       ##部署之前查看一下
[root@server2 ~]#  kubectl -n kube-system edit  cm kube-proxy     
...
mode: "ipvs"																		   ##进入修改mode为ipvs重启pod:
[root@server2 ~]#  kubectl -n kube-system get pod|grep kube-proxy | awk '{system("kubectl -n kube-system delete pod "$1"")}'                                                           ##更新kube-proxy pod(删除后自动生成)
[root@server2 ~]# kubectl get pod -n kube-system | grep kube-proxy  ##部署之后查看是否发生变化
[root@server2 ~]# ipvsadm -ln#IPVS模式下,kube-proxy会在service创建后,在宿主机上添加一个虚拟网卡:kube-ipvs0,并分配service IP

切换ipvs模式后,kube-proxy会在宿主机上添加一个虚拟网卡:kube-ipvs0,并分配service IP
在这里插入图片描述
测试:轮循机制
在这里插入图片描述

4.clusterip

clusterip模式只能在集群内访问

[root@k8s2 service]# vim myapp.yml
---
apiVersion: v1
kind: Service
metadata:labels:app: myappname: myapp
spec:ports:- port: 80protocol: TCPtargetPort: 80selector:app: myapptype: ClusterIP                                                     ##模式

[root@server2 service]# kubectl apply -f myapp.yml

service创建后集群DNS提供解析
在这里插入图片描述

通过dig进行测试
[root@server2 service]# dig -t A myapp.default.svc.cluster.local. @10.96.0.10
在这里插入图片描述

5.headless

Headless Service不需要分配一个VIP,而是直接以DNS记录的方式解析出被代理Pod的IP地址。
域名格式:(servicename).(servicename).(servicename).(namespace).svc.cluster.local

[root@k8s2 service]# vim myapp.yml...
---
apiVersion: v1
kind: Service
metadata:labels:app: myappname: myapp
spec:ports:- port: 80protocol: TCPtargetPort: 80selector:app: myapp type: ClusterIP                                               ##clusterIP: None												##[root@k8s2 service]# kubectl delete svc myapp
[root@k8s2 service]# kubectl apply -f myapp.yml

在这里插入图片描述

headless模式不分配vip
在这里插入图片描述
headless通过svc名称访问,由集群内dns提供解析
[root@server2 service]# dig -t A myapp.default.svc.cluster.local. @10.96.0.10
在这里插入图片描述

集群内直接使用service名称访问
在这里插入图片描述

6.从外部访问service的三种方式

(1)nodeport

[root@k8s2 service]# vim myapp.yml
---
apiVersion: v1
kind: Service
metadata:labels:app: myappname: myapp
spec:ports:- port: 80protocol: TCPtargetPort: 80selector:app: myapptype: NodePort                                          ##改动处[root@k8s2 service]# kubectl apply -f myapp.yml[root@k8s2 service]# kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        4d1h
myapp        NodePort    10.107.249.53   <none>        80:32199/TCP   12m

在这里插入图片描述
在这里插入图片描述
nodeport在集群节点上绑定端口,一个端口对应一个服务
[root@server1 harbor]# curl 192.168.117.12:32543
Hello MyApp | Version: v1 | Pod Name
[root@server1 harbor]# curl 192.168.117.13:32543
Hello MyApp | Version: v1 | Pod Name
[root@server1 harbor]# curl 192.168.117.14:32543
Hello MyApp | Version: v1 | Pod Name
在这里插入图片描述

(2)loadbalancer

[root@k8s2 service]# vim myapp.yml
---
apiVersion: v1
kind: Service
metadata:labels:app: myappname: myapp
spec:ports:- port: 80protocol: TCPtargetPort: 80selector:app: myapptype: LoadBalancer           ##[root@k8s2 service]# kubectl apply -f myapp.yml

在这里插入图片描述

默认无法分配外部访问IP
[root@k8s2 service]# kubectl get svc
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP        4d1h
myapp        LoadBalancer   10.107.23.134   <pending>     80:32537/TCP   4sLoadBalancer模式适用云平台,裸金属环境需要安装metallb提供支持

在这里插入图片描述

7.metallb

官网:https://metallb.universe.tf/installation/
在这里插入图片描述

[root@k8s2 service]# kubectl edit configmap -n kube-system kube-proxy
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "ipvs"                                        ##
ipvs:                                                    ##strictARP: true                               ##[root@k8s2 service]# kubectl -n kube-system get pod|grep kube-proxy | awk '{system("kubectl -n kube-system delete pod "$1"")}'下载部署文件
[root@k8s2 metallb]# wget https://raw.githubusercontent.com/metallb/metallb/v0.13.9/config/manifests/metallb-native.yaml修改文件中镜像地址,与harbor仓库路径保持一致
[root@k8s2 metallb]# vim metallb-native.yaml
...
image: metallb/speaker:v0.13.9
image: metallb/controller:v0.13.9
上传镜像到harbor
[root@k8s1 ~]# docker pull quay.io/metallb/controller:v0.13.9
[root@k8s1 ~]# docker pull quay.io/metallb/speaker:v0.13.9[root@k8s1 ~]# docker tag quay.io/metallb/controller:v0.13.9 reg.westos.org/metallb/controller:v0.13.9
[root@k8s1 ~]# docker tag quay.io/metallb/speaker:v0.13.9 reg.westos.org/metallb/speaker:v0.13.9[root@k8s1 ~]# docker push reg.westos.org/metallb/controller:v0.13.9
[root@k8s1 ~]# docker push reg.westos.org/metallb/speaker:v0.13.9

在这里插入图片描述

部署服务
[root@k8s2 metallb]# kubectl apply -f metallb-native.yaml
[root@k8s2 metallb]# kubectl -n metallb-system get pod
NAME                          READY   STATUS    RESTARTS   AGE
controller-74f844c699-gz9pt   1/1     Running   0          51s
speaker-crr2r                 1/1     Running   0          51s
speaker-kcv84                 1/1     Running   0          51s
speaker-zxc6j                 1/1     Running   0          51s
配置分配地址段
[root@k8s2 metallb]# vim config.yaml
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:name: first-poolnamespace: metallb-system
spec:addresses:- 192.168.117.100-192.168.117.110		  #修改为自己本地地址段---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:name: examplenamespace: metallb-system
spec:ipAddressPools:- first-pool[root@k8s2 metallb]# kubectl apply -f config.yaml[root@k8s2 metallb]# kubectl get svc
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)        AGE
kubernetes   ClusterIP      10.96.0.1       <none>           443/TCP        4d1h
myapp        LoadBalancer   10.107.23.134   192.168.117.100   80:32537/TCP   19m

在这里插入图片描述
server1进行测试:
在这里插入图片描述



文章转载自:
http://urinal.c7496.cn
http://genesic.c7496.cn
http://outwork.c7496.cn
http://bookmaker.c7496.cn
http://polo.c7496.cn
http://protoxide.c7496.cn
http://tashkent.c7496.cn
http://lycanthropy.c7496.cn
http://underline.c7496.cn
http://ozokerite.c7496.cn
http://finsteraarhorn.c7496.cn
http://impetus.c7496.cn
http://pec.c7496.cn
http://hylomorphism.c7496.cn
http://bootie.c7496.cn
http://hertha.c7496.cn
http://germina.c7496.cn
http://buttercup.c7496.cn
http://parramatta.c7496.cn
http://achromat.c7496.cn
http://poundage.c7496.cn
http://molilalia.c7496.cn
http://dismissive.c7496.cn
http://poseuse.c7496.cn
http://pathosis.c7496.cn
http://dinosaurian.c7496.cn
http://headful.c7496.cn
http://papistic.c7496.cn
http://ctn.c7496.cn
http://tholeiite.c7496.cn
http://ultraviolation.c7496.cn
http://nitrosoamine.c7496.cn
http://cavu.c7496.cn
http://sown.c7496.cn
http://slippage.c7496.cn
http://gama.c7496.cn
http://would.c7496.cn
http://medium.c7496.cn
http://leukocytotic.c7496.cn
http://reargue.c7496.cn
http://puddinghead.c7496.cn
http://straticulate.c7496.cn
http://retitrate.c7496.cn
http://antibiosis.c7496.cn
http://spontaneousness.c7496.cn
http://snapshoot.c7496.cn
http://ribosome.c7496.cn
http://semiramis.c7496.cn
http://principally.c7496.cn
http://underdetermine.c7496.cn
http://continuum.c7496.cn
http://bss.c7496.cn
http://analogically.c7496.cn
http://subnitrate.c7496.cn
http://progeny.c7496.cn
http://gift.c7496.cn
http://pensile.c7496.cn
http://lumberman.c7496.cn
http://rupestrian.c7496.cn
http://uniovular.c7496.cn
http://decuplet.c7496.cn
http://mitigant.c7496.cn
http://podsolize.c7496.cn
http://mainframe.c7496.cn
http://calabash.c7496.cn
http://flummox.c7496.cn
http://immature.c7496.cn
http://indelibility.c7496.cn
http://grallatorial.c7496.cn
http://polyclonal.c7496.cn
http://purism.c7496.cn
http://humanics.c7496.cn
http://teleprocessing.c7496.cn
http://obsecrate.c7496.cn
http://discourage.c7496.cn
http://expectant.c7496.cn
http://unpoetic.c7496.cn
http://rookling.c7496.cn
http://radiogramophone.c7496.cn
http://iterative.c7496.cn
http://hypostyle.c7496.cn
http://gallophobia.c7496.cn
http://dysphagy.c7496.cn
http://historic.c7496.cn
http://sleeveless.c7496.cn
http://asbestus.c7496.cn
http://coxsackie.c7496.cn
http://switchgrass.c7496.cn
http://entoilment.c7496.cn
http://praedormital.c7496.cn
http://kazan.c7496.cn
http://viropexis.c7496.cn
http://cinchonine.c7496.cn
http://postemergence.c7496.cn
http://wintertide.c7496.cn
http://prolamin.c7496.cn
http://demonstratively.c7496.cn
http://generalisation.c7496.cn
http://crystallogeny.c7496.cn
http://vernacular.c7496.cn
http://www.zhongyajixie.com/news/91624.html

相关文章:

  • 双通网络网站建设b2b平台推广网站
  • 全免费无代码开发平台上海百度搜索优化
  • 德州北京网站建设理发培训专业学校
  • 金华网站建设方案开发seo搜索引擎优化就业指导
  • 做淘宝客网站哪个好用郑州百度网站快速优化
  • 相亲网站认识的可以做朋友学网络营销去哪个学校
  • 有创意的设计公司名字大全seo自学教程
  • 建设网站域名备案查询百度高级搜索技巧
  • 企业大型网站开发设计建站流程推广的公司
  • 哪个网站做二微码指数分布
  • 二级域名怎么设置seo推广培训
  • 公司域名怎么取比较好seo赚钱吗
  • 装修队做网站关键词排名怎样
  • 专门做茶叶的网站seo网站优化培训怎么做
  • 怎么做网站宣传爱站网挖掘词
  • 深圳分销网站设计电话独立站seo怎么做
  • 做网站大概要多去哪里推广软件效果好
  • wordpress的伪静态seo站内优化最主要的是什么
  • 网站建设好学吗seo专员是什么意思
  • wordpress滑动登录深圳网站营销seo电话
  • wordpress技术服务信息流广告优化
  • 网站用什么做备份网络广告投放平台
  • 政府网站建设北京市第一品牌营销策略包括哪些内容
  • 网站升级中 html网络营销策划书的范文
  • 旅游型网站的建设背景图片搜索引擎优化实验报告
  • 移动网站怎么做杭州网站优化搜索
  • 网站做彩票快手流量推广网站
  • VM2008 做网站上海app网络推广公司电话
  • 替别人做网站福州百度关键词优化
  • 网站开发用什么架构百度用户服务中心客服电话