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

建设网站制作哪家好pc网站接入微信支付

建设网站制作哪家好,pc网站接入微信支付,宣城市政建设集团有限公司网站,集美那里有教网站建设一、概述 服务发现是 K8s 的一项很重要的功能。K8s 的服务发现有两种方式#xff0c;一种是将 svc 的 ClusterIP 以环境变量的方式注入到 pod 中#xff1b;一种就是 DNS#xff0c;从 1.13 版本开始#xff0c;coreDNS 就取代了 kube dns 成为了内置的 DNS 服务器。 Cor…一、概述 服务发现是 K8s 的一项很重要的功能。K8s 的服务发现有两种方式一种是将 svc 的 ClusterIP 以环境变量的方式注入到 pod 中一种就是 DNS从 1.13 版本开始coreDNS 就取代了 kube dns 成为了内置的 DNS 服务器。 CoreDNS的kubernetes插件的具体实现遵循k8s官方提供的标准指南Kubernetes DNS-Based Service Discovery Specification这也是它能够替代kube-dns成为kubebernetes中默认的DNS的重要原因。 二、pod DNS策略 Kubernetes 中 Pod 的 DNS 策略有四种类型。 DefaultPod 继承所在主机上的 DNS 配置ClusterFirstK8s 的默认设置先在 K8s 集群配置的 coreDNS 中查询查不到的再去继承自主机的上游 nameserver 中查询 dnsPolicy: ClusterFirst ClusterFirstWithHostNet对于网络配置为 hostNetwork 的 Pod 而言其 DNS 配置规则与 ClusterFirst 一致None忽略 K8s 环境的 DNS 配置只认 Pod 的 dnsConfig 设置。 dnsPolicy: NonednsConfig:nameservers:- 114.114.114.114searches:- default.svc.test.comoptions:- name: ndotsvalue: 5 ###默认为5以下讲解主要以Clusterfirst为例 三、CoreDns解析规则 在部署 pod 的时候 kubelet 在起容器的时候会将其 DNS 解析配置初始化成集群内的配置。因此在每个pod里面都会有/etc/resolv.conf文件通过修改其中的配置可以更改DNS的查询规则 如下启动一个pod查看/etc/resolv.conf配置 [rootmypod /]# cat etc/resolv.conf search default.svc.test.com svc.test.com test.com nameserver 169.254.25.10 ####我的环境中使用了nodelocaldns,这个地址是nodelocaldns的地址 options ndots:5 [rootmypod /]# 在集群中 pod 之间互相用 svc name 访问的时候会根据 resolv.conf 文件的 DNS 配置来解析域名nameserver集群中的DNS服务器IP一般来说就是CoreDNS的ClusterIPsearch需要搜索的域默认情况下会从该pod所属的namespace开始逐级补充 解析域名的时候将要访问的域名依次带入 search 域进行 DNS 查询。 例如在pod 中访问一个域名为 nginx 的服务其进行的 DNS 域名查询的顺序是nginx.default.svc.test.com. - nginx.svc.test.com. - nginx.test.com.按照上述顺序直到查到为止options ndots触发上面的search的域名点数’.在K8S中默认为5上限15例如test.com这个域名的ndots是1test.com.这个域名的ndots才是2需要注意所有域名其实都有一个根域.因此test.com的全称应该是test.com.。如果dnots 指定查询的域名包含的点 “.” 小于 5则先走 search 域再用绝对域名如果查询的域名包含点数大于或等于 5则先用绝对域名再走 search 域。 例如当ndots大于等于5时访问的是 a.b.c.e.f.g 那么域名查找的顺序如下 a.b.c.e.f.g. - a.b.c.e.f.g.default.svc.test.com. - a.b.c.e.f.g.svc.test.com. - a.b.c.e.f.g.test.com.例如当ndots小于5时访问的是 a.b.c.e. 那么域名查找的顺序如下 a.b.c.e.default.svc.test.com. - a.b.c.e.svc.test.com. - a.b.c.e.test.com. - a.b.c.e.四、pod之间通信 通过svc的方式通信 在 K8s 中Pod 之间通过 svc 访问的时候会经过 DNS 域名解析再拿到 ip 通信。而 K8s 的域名全称为 service-name.namespace.svc.test.com通常只需将 svc name 当成域名就能访问到 pod。 1:使用deploy启动一个nginx的podsvc名称为nginx-svc,如下 --- apiVersion: apps/v1 kind: Deployment metadata:name: nginxlabels:app: nginx spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: docker.io/library/nginx:latestimagePullPolicy: IfNotPresentports:- containerPort: 80--- apiVersion: v1 kind: Service metadata:name: nginx-svc spec:selector:app: nginxports:- port: 80protocol: TCPtargetPort: 80type: ClusterIP查看pod中/etc/resolv.conf配置如下 rootnginx-5977dc5756-lcmwq:/# cat etc/resolv.conf search default.svc.test.com svc.test.com test.com nameserver 169.254.25.10 options ndots:5 rootnginx-5977dc5756-lcmwq:/# 2:使用另外一个pod访问nginx-svc这个域名如下 [rootnode1 yaml]# kubectl exec -it mypod bash kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead. [rootmypod /]# ping nginx-svc PING nginx-svc.default.svc.test.com (10.233.23.221) 56(84) bytes of data. 64 bytes from nginx-svc.default.svc.test.com (10.233.23.221): icmp_seq1 ttl64 time0.152 ms 64 bytes from nginx-svc.default.svc.test.com (10.233.23.221): icmp_seq2 ttl64 time0.143 ms 64 bytes from nginx-svc.default.svc.test.com (10.233.23.221): icmp_seq3 ttl64 time0.114 ms ^C --- nginx-svc.default.svc.test.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev 0.114/0.136/0.152/0.018 ms [rootmypod /]# ############################# 返回的nginx-svc的地址为10.233.23.221此地址为nginx-svc的地址如下 [rootnode1 yaml]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-svc ClusterIP 10.233.23.221 none 80/TCP 2d17h [rootnode1 yaml]# ############################# 如果要访问其他ns的svc需要带上ns name即可如下 [rootnode1 yaml]# kubectl exec -it mypod bash kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead. [rootmypod /]# ping harbor-core ping: harbor-core: Name or service not known ###不添加ns的话无法解析habor-core[rootmypod /]# ping harbor-core.harbor PING harbor-core.harbor.svc.test.com (10.233.30.184) 56(84) bytes of data. 64 bytes from harbor-core.harbor.svc.test.com (10.233.30.184): icmp_seq1 ttl64 time0.095 ms 64 bytes from harbor-core.harbor.svc.test.com (10.233.30.184): icmp_seq2 ttl64 time0.130 ms 64 bytes from harbor-core.harbor.svc.test.com (10.233.30.184): icmp_seq3 ttl64 time0.165 ms ^C --- harbor-core.harbor.svc.test.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev 0.095/0.130/0.165/0.028 ms [rootmypod /]# 通过hostname和subdomain通信 在 K8s 中如果不指定 pod 的 hostname其默认为 pod.metadata.name通过 spec.hostname 字段可以自定义另外还可以给 pod 设置 subdomain通过 spec.subdomain 字段。如下 1:启动pod如下 --- apiVersion: v1 kind: Pod metadata:name: nginxlabels:app: web spec:hostname: nginx ####设置hostnam为nginxsubdomain: subdomain-test ####containers:- name: nginximage: docker.io/library/nginx:latestimagePullPolicy: IfNotPresent--- apiVersion: v1 kind: Service metadata:name: subdomain-test spec:selector:app: webports:- port: 80targetPort: 80protocol: TCP启动pod查看/etc/hosts文件 [rootnode1 yaml]# kubectl get po -owide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx 1/1 Running 0 6s 10.233.92.25 node3 none none [rootnode1 yaml]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE subdomain-test ClusterIP 10.233.7.174 none 80/TCP 15s [rootnode1 yaml]# [rootnode1 yaml]# kubectl exec -it nginx bash kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead. rootnginx:/# cat etc/hosts # Kubernetes-managed hosts file. 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet fe00::0 ip6-mcastprefix fe00::1 ip6-allnodes fe00::2 ip6-allrouters 10.233.92.25 nginx.subdomain-test.default.svc.test.com nginx rootnginx:/# 可以看到pod的ip对应的域名为nginx.subdomain-test.default.svc.test.com如果不设置subdomain,默认pod ip对应为pod的hostname#################################### 通过其他pod 访问nginx.subdomain,如下 [rootnode1 yaml]# kubectl exec -it mypod bash kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead. [rootmypod /]# [rootmypod /]# [rootmypod /]# ping nginx.subdomain-test PING nginx.subdomain-test.default.svc.test.com (10.233.92.25) 56(84) bytes of data. 64 bytes from nginx.subdomain-test.default.svc.test.com (10.233.92.25): icmp_seq1 ttl62 time1.91 ms 64 bytes from nginx.subdomain-test.default.svc.test.com (10.233.92.25): icmp_seq2 ttl62 time0.902 ms 64 bytes from nginx.subdomain-test.default.svc.test.com (10.233.92.25): icmp_seq3 ttl62 time1.01 ms ^C --- nginx.subdomain-test.default.svc.test.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev 0.902/1.278/1.914/0.452 ms如上返回的地址为pod本身的ip地址五、CoreDns Corefile 文件 CoreDNS 实现了应用的插件化用户可以选择所需的插件编译到可执行文件中CoreDNS 的配置文件是 Corefile 形式的以下是CoreDns的configmap的配置 [rootnode1 yaml]# kubectl -n kube-system get cm coredns -oyaml apiVersion: v1 data:Corefile: |.:53 {errorshealth {lameduck 5s}readykubernetes test.com in-addr.arpa ip6.arpa {pods insecurefallthrough in-addr.arpa ip6.arpattl 30}prometheus :9153forward . /etc/resolv.conf {max_concurrent 1000}cache 30loopreloadloadbalance} kind: ConfigMap metadata:creationTimestamp: 2023-04-08T17:18:27Zname: corednsnamespace: kube-systemresourceVersion: 224uid: ccf7598d-8b5c-48db-9230-7a539d6c7e98 [rootnode1 yaml]# 文件分析 第一部分 errorshealth {lameduck 5s}coredns内部插件错误日志以及健康监测等其他插件可以参考https://coredns.io/plugins/kubernetes/第二部分 kubernetes test.com in-addr.arpa ip6.arpa {pods insecurefallthrough in-addr.arpa ip6.arpattl 30} 指明 test.com 后缀的域名都是 kubernetes 内部域名coredns 会监听 service 的变化来维护域名关系test.com 相关域名都在这里解析。ttl 30设置标准的DNS域名TTL默认值为 5 秒。允许的最小 TTL 为 0 秒最大值为 3600 秒。将 TTL 设置为 0 将防止记录被缓存。pods insecure总是从请求中返回带有 IP 的 A 记录不检查 k8s即查询域名1-2-3-4.ns.pod.cluster.local.的时候不论是否存在一个IP地址为1.2.3.4的pod都返回这个结果给客户端。如果与通配符 SSL 证书一起被恶意使用此选项很容易被滥用。提供此选项是为了向后兼容 kube-dns。fallthrough in-addr.arpa ip6.arpa正常情况下一个客户端对CoreDNS发起了一个DNS查询如果该记录不存在那么就会直接返回一个NXDOMAIN的响应。第三部分 forward . /etc/resolv.conf {max_concurrent 1000}指 coredns 中没有找到记录则去 /etc/resolv.conf 中的 nameserver 请求解析而 coredns 容器中的 /etc/resolv.conf 是继承自宿主机的。实际是如果不是 k8s 内部域名就会去默认的 dns 服务器请求解析并返回给 coredns 的请求者。第四部分 prometheusCoreDNS 的监控地址为 http://localhost:9153/metrics 满足 Prometheus 的格式。 cache允许缓存 loop如果找到循环则检测简单的转发循环并停止 CoreDNS 进程。 reload允许 Corefile 的配置自动更新。在更改 ConfigMap 后两分钟修改生效 loadbalance这是一个循环 DNS 负载均衡器可以在答案中随机化 AAAAA 和 MX 记录的顺序。第五部分 当某个域名服务不在集群内部时为了让pod可以访问可以在corefile中添加host选项如下 hosts {192.168.10.10 edu.comfallthrough }
http://www.dnsts.com.cn/news/247946.html

相关文章:

  • 商城模板湛江seo建站
  • 南京网站改版深圳网站建设 百度一下
  • 昆明云南微网站制作wordpress hq
  • 深圳电商公司排行榜兰州网络优化seo
  • 学做网站要会哪些wordpress怎么选择中文版
  • 电影网站怎么做友情链接建网站需要多少钱和什么条件才能建
  • 大连网站推广工具怎样安装字体到wordpress
  • 常德网站建设求职简历网站做会员用什么源码
  • 网站建设服务费怎么记账做视频网站需要什么空间吗
  • 个人做外贸网站平台网站更新提示怎末做
  • 新网站为什么做的这么难wordpress点击创建配置文件没反应
  • 企业网站模板下载需谨慎建立wordpress显示数据库错误
  • 苏州市吴江太湖新城建设局网站it网站模板
  • 邢台建网站找谁网页设计与制作教程第二版张晓蕾课后答案
  • 用凡科做网站有自己的域名网站镜像 动态
  • 网站类型怎么分个人备案 网站名
  • 苏州市住房和城乡建设局网站网站设计 佛山
  • 网站建设服务市场企业网站建站系统
  • 彩票网站开发系统如何搭建网站设计规划教学设计
  • 铁岭网站seo安徽省建设工程质量与安全协会官网
  • 企业网站建设一般要素包括Wordpress xml 格式
  • 怎么做网站填内容扬州网站建设费用
  • 网站开发前后端分工电子政务 和网站建设总结
  • 禹城市网站建设怎样退订3d卫星街景会员费用
  • 购物网站的前台功能柯桥网站建设
  • 旅游网站模板html5wordpress主题分享博客
  • 网站建设维护学什么科目腾讯邮箱企业邮箱登录入口
  • 公司移动端的网站模板下载百度推广代理商查询
  • 山西建站推广做网站好的网站建设公司哪家好
  • 铜仁市建设招投标网站模版网站商城