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

上海公司牌照价格河南网站seo地址

上海公司牌照价格,河南网站seo地址,购物网站首页界面设计,水泥公司网站建设Service四层代理 一、Service概念原理1.1、为什么要有Service1.2、Service概述1.3、工作原理1.4、三类IP地址【1】Node Network#xff08;节点网络#xff09;【2】Pod network#xff08;pod 网络#xff09;【3】Cluster Network#xff08;服务网络#xff09; 二、S… Service四层代理 一、Service概念原理1.1、为什么要有Service1.2、Service概述1.3、工作原理1.4、三类IP地址【1】Node Network节点网络【2】Pod networkpod 网络【3】Cluster Network服务网络 二、Service资源创建2.1、service资源字段2.2、service的spec字段定义2.3、Service端口2.4、Service类型【1】ClusterIP类型【2】NodePort类型【3】ExternalName类型 三、k8s最佳实践映射外部服务案例分享四、Service服务发现coredns组件详解4.1、DNS是什么4.2、CoreDNS是什么4.3、验证CoreDNS 一、Service概念原理 1.1、为什么要有Service 在kubernetes中Pod是有生命周期的如果Pod重启它的IP很有可能会发生变化。如果我们的服务都是将Pod的IP地址写死Pod挂掉或者重启和刚才重启的pod相关联的其他服务将会找不到它所关联的Pod. 为了解决这个问题在kubernetes中定义了service资源对象Service 定义了一个服务访问的入口客户端通过这个入口即可访问服务背后的应用集群实例service是一组Pod的逻辑集合这一组Pod能够被Service访问到通常是通过Label Selector实现的。 pod ip经常变化service是pod的代理我们客户端访问只需要访问service就会把请求代理到Podpod ip在k8s集群之外无法访问所以需要创建service这个service可以在k8s集群外访问的。 1.2、Service概述 service是一个固定接入层客户端可以通过访问service的ip和端口访问到service关联的后端pod。这个service工作依赖于在kubernetes集群之上部署的一个附件就是kubernetes的dns服务不同kubernetes版本的dns默认使用的也是不一样的1.11之前的版本使用的是kubeDNs较新的版本使用的是corednsservice的名称解析是依赖于dns附件的因此在部署完k8s之后需要再部署dns附件kubernetes要想给客户端提供网络功能需要依赖第三方的网络插件flannelcalico等。每个K8s节点上都有一个组件叫做kube-proxykube-proxy这个组件将始终监视着apiserver中有关service资源的变动信息需要跟master之上的apiserver交互随时连接到apiserver上获取任何一个与service资源相关的资源变动状态这种是通过kubernetes中固有的一种请求方法watch监视来实现的一旦有service资源的内容发生变动如创建删除kube-proxy都会将它转化成当前节点之上的能够实现service资源调度把我们请求调度到后端特定的pod资源之上的规则这个规则可能是iptables也可能是ipvs取决于service的实现方式。 1.3、工作原理 k8s在创建Service时会根据标签选择器selector(lable selector)来查找Pod据此创建与Service同名的endpoint对象当Pod 地址发生变化时endpoint也会随之发生变化service接收前端client请求的时候就会通过endpoint找到转发到哪个Pod进行访问的地址。(至于转发到哪个节点的Pod由负载均衡kube-proxy决定) 1.4、三类IP地址 【1】Node Network节点网络 物理节点或者虚拟节点的网络如ens33接口上的网路地址 [rootmaster ~]# ip a 1: lo: LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever 2: ens32: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:9d:0d:9f brd ff:ff:ff:ff:ff:ffinet 10.32.1.147/24 brd 10.32.1.255 scope global noprefixroute ens32valid_lft forever preferred_lft foreverinet6 fe80::bdc4:94e0:2ba5:e504/64 scope link noprefixroutevalid_lft forever preferred_lft forever【2】Pod networkpod 网络 创建的Pod具有的IP地址 [rootmaster ~]# kubectl get pods -A -o wide NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kube-system calico-kube-controllers-6744f6b6d5-4vnx4 1/1 Running 0 27h 10.244.196.129 node01 none none kube-system calico-node-c7hdk 1/1 Running 0 27h 10.32.1.147 master none none kube-system calico-node-v8lg8 1/1 Running 0 27h 10.32.1.148 node01 none none kube-system calico-node-w8tkz 1/1 Running 0 27h 10.32.1.149 node02 none noneNode Network和Pod network这两种网络地址是我们实实在在配置的其中节点网络地址是配置在节点接口之上而pod网络地址是配置在pod资源之上的因此这些地址都是配置在某些设备之上的这些设备可能是硬件也可能是软件模拟的 【3】Cluster Network服务网络 集群地址也称为service network 这个地址是虚拟的地址virtual ip没有配置在某个接口上只是出现在service的规则当中。 [rootmaster ~]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 none 443/TCP 28h二、Service资源创建 2.1、service资源字段 [rootmaster1 ~]# kubectl explain service KIND: Service VERSION: v1 DESCRIPTION:Service is a named abstraction of software service (for example, mysql)consisting of local port (for example 3306) that the proxy listens on, andthe selector that determines which pods will answer requests sent throughthe proxy. FIELDS:apiVersion string # service资源使用的api组kind string # 创建的资源类型metadata Object # 定义元数据spec Object 2.2、service的spec字段定义 [rootxianchaomaster1 ~]# kubectl explain service.spec KIND: Service VERSION: v1 RESOURCE: spec Object DESCRIPTION:Spec defines the behavior of a service.https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-statusServiceSpec describes the attributes that a user creates on a service. FIELDS:allocateLoadBalancerNodePorts booleanclusterIP string # 动态分配的地址也可以自己在创建的时候指定创建之后就改不了了clusterIPs []string externalIPs []stringexternalName stringexternalTrafficPolicy stringhealthCheckNodePort integeripFamilies []stringipFamilyPolicy stringloadBalancerIP stringloadBalancerSourceRanges []stringports []Object # 定义service端口用来和后端pod建立联系publishNotReadyAddresses booleanselector map[string]string # 通过标签选择器选择关联的pod有哪些sessionAffinity stringsessionAffinityConfig Object # service在实现负载均衡的时候还支持sessionAffinity # sessionAffinity什么意思 # 会话联系默认是none随机调度的基于iptables规则调度的如果我们定义sessionAffinity的client ip那就表示把来自同一客户端的IP请求调度到同一个pod上topologyKeys []stringtype string #定义service的类型2.3、Service端口 kubectl explain service.spec.ports 可以查看端口相关内容 nodePort service在物理机映射的端口默认在 30000-32767 之间 port service的端口这个是k8s集群内部服务可访问的端口 targetPort targetPort是pod上的端口从port和nodePort上来的流量经过kube-proxy流入到后端pod的targetPort上最后进入容器。 2.4、Service类型 kubectl explain service.spec.type可以查看service有那几种类型 【1】ClusterIP类型 [rootmaster 9]# cat pod_test.yaml apiVersion: apps/v1 kind: Deployment metadata:name: my-nginx spec:selector:matchLabels:run: my-nginxreplicas: 2template:metadata:labels:run: my-nginxspec:containers:- name: my-nginximage: nginximagePullPolicy: IfNotPresentports:- containerPort: 80 #pod中的容器需要暴露的端口startupProbe:periodSeconds: 5initialDelaySeconds: 60timeoutSeconds: 10httpGet:scheme: HTTPport: 80path: /livenessProbe:periodSeconds: 5initialDelaySeconds: 60timeoutSeconds: 10httpGet:scheme: HTTPport: 80path: /readinessProbe:periodSeconds: 5initialDelaySeconds: 60timeoutSeconds: 10httpGet:scheme: HTTPport: 80path: /# 更新资源清单文件 [rootmaster 9]# kubectl apply -f pod_test.yaml # 查看pod ip [rootmaster 9]# kubectl get pods -l runmy-nginx -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES my-nginx-fc8c7b6c4-7j6hx 1/1 Running 0 2m12s 10.244.196.136 node01 none none my-nginx-fc8c7b6c4-h7xg6 1/1 Running 0 2m12s 10.244.140.79 node02 none none # curl ip 可以访问对应的pod以上pod如果被删除就会重新生成podpod ip也会变化所以需要在pod前端加一个固定接入层。接下来创建Service # 查看pod标签 [rootmaster ~]# kubectl get pods --show-labels NAME READY STATUS RESTARTS AGE LABELS my-nginx-fc8c7b6c4-7j6hx 1/1 Running 0 4h53m pod-template-hashfc8c7b6c4,runmy-nginx my-nginx-fc8c7b6c4-h7xg6 1/1 Running 0 4h53m pod-template-hashfc8c7b6c4,runmy-nginx # 创建Service [rootmaster 9]# cat service_test.yaml apiVersion: v1 kind: Service metadata:name: my-nginxlabels:run: my-nginx spec:type: ClusterIPports:- port: 80 #service的端口暴露给k8s集群内部服务访问protocol: TCPtargetPort: 80 #pod容器中定义的端口selector:run: my-nginx #选择拥有runmy-nginx标签的pod上述yaml文件将创建一个 Service具有标签runmy-nginx的Pod目标TCP端口 80并且在一个抽象的Service端口targetPort容器接收流量的端口port抽象的 Service 端口可以使任何其它 Pod访问该 Service 的端口上暴露。 [rootmaster 9]# kubectl apply -f service_test.yaml service/my-nginx created [rootmaster 9]# kubectl get svc -l runmy-nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-nginx ClusterIP 10.102.168.76 none 80/TCP 10s # 在k8s控制节点访问service的ip:端口就可以把请求代理到后端pod [rootmaster 9]# curl 10.102.168.76:80通过上面可以看到请求service IP:port跟直接访问pod ip:port看到的结果一样这就说明service可以把请求代理到它所关联的后端pod 注意上面的10.102.168.76:80地址只能是在k8s集群内部可以访问在外部无法访问比方说我们想要通过浏览器访问那么是访问不通的如果想要在k8s集群之外访问是需要把service type类型改成nodePort的。 [rootmaster ~]# kubectl describe svc my-nginx Name: my-nginx Namespace: default Labels: runmy-nginx Annotations: none Selector: runmy-nginx Type: ClusterIP IP Family Policy: SingleStack IP Families: IPv4 IP: 10.102.168.76 IPs: 10.102.168.76 Port: unset 80/TCP TargetPort: 80/TCP Endpoints: 10.244.140.79:80,10.244.196.136:80 Session Affinity: None Events: none [rootmaster ~]# kubectl get ep my-nginx NAME ENDPOINTS AGE my-nginx 10.244.140.79:80,10.244.196.136:80 22mservice可以对外提供统一固定的ip地址并将请求重定向至集群中的pod。其中“将请求重定向至集群中的pod”就是通过endpoint与selector协同工作实现。 selector是用于选择pod由selector选择出来的pod的ip地址和端口号将会被记录在endpoint中。endpoint便记录了所有pod的ip地址和端口号。当一个请求访问到service的ip地址时就会从endpoint中选择出一个ip地址和端口号然后将请求重定向至pod中。具体把请求代理到哪个pod需要的就是kube-proxy的轮询实现的。service不会直接到podservice是直接到endpoint资源就是地址加端口再由endpoint再关联到pod。 service只要创建完成我们就可以直接解析它的服务名每一个服务创建完成后都会在集群dns中动态添加一个资源记录添加完成后我们就可以解析了资源记录格式是 SVC_NAME.NS_NAME.DOMAIN.LTD. 服务名.命名空间.域名后缀 集群默认的域名后缀是svc.cluster.local. 就像我们上面创建的my-nginx这个服务它的完整名称解析就是 my-nginx.default.svc.cluster.local [rootmaster ~]# kubectl exec -it my-nginx-fc8c7b6c4-7j6hx /bin/bash kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead. rootmy-nginx-fc8c7b6c4-7j6hx:/# curl my-nginx.default.svc.cluster.local !DOCTYPE html html head titleWelcome to nginx!/title style html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } /style /head body h1Welcome to nginx!/h1 pIf you see this page, the nginx web server is successfully installed and working. Further configuration is required./ppFor online documentation and support please refer to a hrefhttp://nginx.org/nginx.org/a.br/ Commercial support is available at a hrefhttp://nginx.com/nginx.com/a./ppemThank you for using nginx./em/p /body /html【2】NodePort类型 [rootmaster 9]# cat pod_nodeport.yaml apiVersion: apps/v1 kind: Deployment metadata:name: my-nginx-nodeport spec:selector:matchLabels:run: my-nginx-nodeportreplicas: 2template:metadata:labels:run: my-nginx-nodeportspec:containers:- name: my-nginx-nodeport-containerimage: nginximagePullPolicy: IfNotPresentports:- containerPort: 80 [rootmaster 9]# kubectl apply -f pod_nodeport.yaml deployment.apps/my-nginx-nodeport created [rootmaster 9]# kubectl get pods -l runmy-nginx-nodeport -owide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES my-nginx-nodeport-7776f84758-5nxmb 1/1 Running 0 22s 10.244.196.137 node01 none none my-nginx-nodeport-7776f84758-qlr5z 1/1 Running 0 22s 10.244.140.80 node02 none none [rootmaster 9]# cat service_nodeport.yaml apiVersion: v1 kind: Service metadata:name: my-nginx-nodeportlabels:run: my-nginx-nodeport spec:type: NodePortports:- port: 80protocol: TCPtargetPort: 80nodePort: 30380selector:run: my-nginx-nodeport [rootmaster 9]# kubectl apply -f service_nodeport.yaml service/my-nginx-nodeport created [rootmaster 9]# kubectl get svc -l runmy-nginx-nodeport NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-nginx-nodeport NodePort 10.107.198.159 none 80:30380/TCP 6s [rootmaster 9]# curl 10.107.198.159 !DOCTYPE html html head titleWelcome to nginx!/title style html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } /style /head body h1Welcome to nginx!/h1 ......注意 10.107.198.159是k8s集群内部的service ip地址只能在k8s集群内部访问在集群外无法访问。 在集群外访问servicecurl 10.107.198.159:30380 数据转发流程 客户端请求http://10.32.1.147:30380 -docker0虚拟网卡:172.17.0.1:30380 -10.244.140.80:80,10.244.196.137:80 [rootmaster 9]# ipvsadm -Ln IP Virtual Server version 1.2.1 (size4096) Prot LocalAddress:Port Scheduler Flags- RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.17.0.1:30380 rr # 172.17.0.1是docker0 网卡地址- 10.244.140.80:80 # pod1 ip Masq 1 0 0- 10.244.196.137:80 # pod2 ip Masq 1 0 0 TCP 10.32.1.147:30380 rr- 10.244.140.80:80 Masq 1 0 0- 10.244.196.137:80 Masq 1 0 0 ......【3】ExternalName类型 应用场景跨名称空间访问 需求default名称空间下的client 服务想要访问nginx-ns名称空间下的nginx-svc服务 步骤 1、创建名为nginx的pod 指定命名空间nginx-ns # 在线拉取镜像node节点上要操作 [rootnode01 ~]# ctr images pull docker.io/library/busybox:latest [rootnode01 ~]# ctr image ls|grep busy docker.io/library/busybox:latest application/vnd.docker.distribution.manifest.list.v2json sha256:1ceb872bcc68a8fcd34c97952658b58086affdcb604c90c1dee2735bde5edc2f 2.1 MiB linux/386,linux/amd64,linux/arm/v5,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/mips64le,linux/ppc64le,linux/riscv64,linux/s390x - You have new mail in /var/spool/mail/root[rootmaster 9]# kubectl create ns nginx-ns namespace/nginx-ns created [rootmaster 9]# cat server_nginx.yaml apiVersion: apps/v1 kind: Deployment metadata:name: nginxnamespace: nginx-ns spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginximagePullPolicy: IfNotPresent [rootmaster 9]# kubectl apply -f server_nginx.yaml deployment.apps/nginx created [rootmaster 9]# kubectl get pods -n nginx-ns NAME READY STATUS RESTARTS AGE nginx-6fb6c59b65-56sxx 1/1 Running 0 4s2、创建名为nginx-svc的svc指定命名空间nginx-ns # 创建名为nginx-svc的svc [rootmaster 9]# cat nginx_svc.yaml apiVersion: v1 kind: Service metadata:name: nginx-svcnamespace: nginx-ns spec:selector:app: nginxports:- name: httpprotocol: TCPport: 80targetPort: 80 [rootmaster 9]# kubectl apply -f nginx_svc.yaml service/nginx-svc created [rootmaster 9]# kubectl get svc -n nginx-ns NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-svc ClusterIP 10.104.157.106 none 80/TCP 24s3、创建名为client的pod [rootmaster 9]# cat client.yaml apiVersion: apps/v1 kind: Deployment metadata:name: client spec:replicas: 1selector:matchLabels:app: busyboxtemplate:metadata:labels:app: busyboxspec:containers:- name: busyboximage: busyboximagePullPolicy: IfNotPresentcommand: [/bin/sh,-c,sleep 36000] [rootmaster 9]# kubectl apply -f client.yaml4、创建名为client-svc的svc # 创建名为client-svc的svc [rootmaster 9]# cat client_svc.yaml apiVersion: v1 kind: Service metadata:name: client-svc spec:type: ExternalName# 这里使用到了nginx-svc 的软链让使用者感觉就好像调用自己命名空间的服务一样。externalName: nginx-svc.nginx-ns.svc.cluster.localports:- name: httpport: 80targetPort: 80 [rootmaster 9]# kubectl apply -f client_svc.yaml service/client-svc created[rootmaster 9]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE client-svc ExternalName none nginx-svc.nginx-ns.svc.cluster.local 80/TCP 5h4m kubernetes ClusterIP 10.96.0.1 none 443/TCP 2d5h my-nginx ClusterIP 10.102.168.76 none 80/TCP 18h my-nginx-nodeport NodePort 10.107.198.159 none 80:30380/TCP 17h5、登录client pod [rootmaster 9]# kubectl exec -it client-568955849b-vglmj /bin/sh kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead. / # / # wget -q -O - client-svc.default.svc.cluster.local !DOCTYPE html html head titleWelcome to nginx!/title ...... / # wget -q -O - nginx-svc.nginx-ns.svc.cluster.local !DOCTYPE html html head titleWelcome to nginx!/title ...... # 上面两个请求的结果一样三、k8s最佳实践映射外部服务案例分享 k8s集群引用外部的mysql数据库 在node02节点上安装mysql数据库 [rootnode02 ~]# yum install mariadb-server.x86_64 -y [rootnode02 ~]# systemctl start mariadb [rootmaster 9]# cat mysql_service.yaml apiVersion: v1 kind: Service metadata:name: mysql spec: # 这里没有标签选择器是不会关联到任何pod的type: ClusterIPports:- port: 3306 [rootmaster 9]# kubectl apply -f mysql_service.yaml service/mysql created [rootmaster 9]# kubectl get svc | grep mysql mysql ClusterIP 10.104.34.181 none 3306/TCP 6s [rootmaster 9]# kubectl describe svc mysql Name: mysql Namespace: default Labels: none Annotations: none Selector: none Type: ClusterIP IP Family Policy: SingleStack IP Families: IPv4 IP: 10.104.34.181 IPs: 10.104.34.181 Port: unset 3306/TCP TargetPort: 3306/TCP Endpoints: none # 没有endpoint Session Affinity: None Events: none接下来我想做的是创建endpoint通过访问maysql的域名或ip能代理node2节点上的mysql # 创建endpoint资源 [rootmaster 9]# cat mysql_endpoint.yaml apiVersion: v1 kind: Endpoints metadata:name: mysql # 名字必须和要关联的svc名字一致 subsets: # subsets是一个对象列表所有后面的子内容要加 - - addresses:- ip: 10.32.1.149ports:- port: 3306 [rootmaster 9]# kubectl apply -f mysql_endpoint.yaml endpoints/mysql created [rootmaster 9]# kubectl get ep NAME ENDPOINTS AGE kubernetes 10.32.1.147:6443 4d1h my-nginx 10.244.140.79:80,10.244.196.136:80 2d14h my-nginx-nodeport 10.244.140.80:80,10.244.196.137:80 2d13h mysql 10.32.1.149:3306 43h [rootmaster 9]# kubectl describe svc mysql Name: mysql Namespace: default Labels: none Annotations: none Selector: none Type: ClusterIP IP Family Policy: SingleStack IP Families: IPv4 IP: 10.104.34.181 IPs: 10.104.34.181 Port: unset 3306/TCP TargetPort: 3306/TCP Endpoints: 10.32.1.149:3306 # 这个就是定义的外部数据库 Session Affinity: None Events: none上面配置就是将外部IP地址和服务引入到k8s集群内部由service作为一个代理来达到能够访问外部服务的目的。 四、Service服务发现coredns组件详解 4.1、DNS是什么 DNS全称是Domain Name System域名系统是整个互联网的电话簿它能够将可被人理解的域名翻译成可被机器理解IP地址使得互联网的使用者不再需要直接接触很难阅读和理解的IP地址。 域名系统在现在的互联网中非常重要因为服务器的 IP 地址可能会经常变动如果没有了 DNS那么可能 IP 地址一旦发生了更改当前服务器的客户端就没有办法连接到目标的服务器了如果我们为 IP 地址提供一个『别名』并在其发生变动时修改别名和 IP 地址的关系那么我们就可以保证集群对外提供的服务能够相对稳定地被其他客户端访问。 DNS 其实就是一个分布式的树状命名系统它就像一个去中心化的分布式数据库存储着从域名到 IP 地址的映射。 4.2、CoreDNS是什么 CoreDNS 其实就是一个 DNS 服务而 DNS 作为一种常见的服务发现手段所以很多开源项目以及工程师都会使用 CoreDNS 为集群提供服务发现的功能Kubernetes 就在集群中使用 CoreDNS 解决服务发现的问题。 作为一个加入 CNCFCloud Native Computing Foundation的服务 CoreDNS 的实现非常简单。 4.3、验证CoreDNS Service完整的名称组成 servicename.namespace.svc.cluster.local 那么k8s集群内部的服务就可以通过FQDN访问 [rootmaster 9]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE client-svc ExternalName none nginx-svc.nginx-ns.svc.cluster.local 80/TCP 2d1h kubernetes ClusterIP 10.96.0.1 none 443/TCP 4d2h my-nginx ClusterIP 10.102.168.76 none 80/TCP 2d14h my-nginx-nodeport NodePort 10.107.198.159 none 80:30380/TCP 2d14h mysql ClusterIP 10.104.34.181 none # 比如这里的client # 完整的FQDN client-svc.default.svc.class.local【1】导入镜像运行pod # 把dig.tar.gz上传到xianchaonode2和xianchaonode1机器上手动解压 [rootnode01 ~]# ctr -nk8s.io images import dig.tar.gz [rootnode02 ~]# ctr -nk8s.io images import dig.tar.gz [rootmaster 9]# cat dig.yaml apiVersion: v1 kind: Pod metadata:name: dignamespace: default spec:containers:- name: digimage: xianchao/dig:latest # 这个镜像其实就提供了一个命令imagePullPolicy: IfnotPresentcommand:- sleep- 3600imagePullPolicy: IfNotPresentrestartPolicy: Always [rootmaster 9]# kubectl apply -f dig.yaml【2】dns解析 # 查看默认名称空间的kubernetes服务 [rootmaster 9]# kubectl get svc | grep kubernetes kubernetes ClusterIP 10.96.0.1 none 443/TCP 4d2h # 查看默认名称空间的client服务 [rootmaster 9]# kubectl get svc | grep client client-svc ExternalName none nginx-svc.nginx-ns.svc.cluster.local 80/TCP 2d2h# 解析dns如有以下返回说明dns安装成功 [rootmaster 9]# kubectl exec -it dig -- nslookup kubernetes Server: 10.96.0.10 # kube-dns这个svc的ip Address: 10.96.0.10#53 # 说明用的是对应cordns的pod进行域名解析Name: kubernetes.default.svc.cluster.local # 域名 Address: 10.96.0.1 # ip[rootmaster 9]# kubectl exec -it dig -- nslookup client-svc Server: 10.96.0.10 Address: 10.96.0.10#53client-svc.default.svc.cluster.local canonical name nginx-svc.nginx-ns.svc.cluster.local. Name: nginx-svc.nginx-ns.svc.cluster.local # 域名 Address: 10.104.157.106 # ip
http://www.huolong8.cn/news/331377/

相关文章:

  • 江门网站定制多少钱制作手机端网站开发
  • 全媒体网站的建设牡丹江网站建设定制开发
  • 做网站哪个比较好网络营销对企业的优势
  • 百度站长工具排名吉林平台网站建设多少钱
  • 要加强分院网站建设网站获取qq号码 原理
  • 网站建设产品分类广州代注册公司哪家好
  • 做网站的软件名字全拼网络安全设计方案
  • 外包优化网站免费简单网页制作成品
  • 企业网站内容运营方案案例网络品牌营销案例
  • 什么叫seo网站推广mip网站实例
  • 上海建企业网站重庆怎么推广企业网站
  • 搭建论坛网站的流程青岛网景互联网站建设公司
  • 网站模板内容页做可视化的网站
  • 南宁网站建设电话163企业邮箱注册入口
  • win7主机做网站宜兴淘宝网站建设
  • 百度收录网站左侧图片汉川做网站
  • 扬州做网站哪家好什么是wordpress静态化
  • 太平洋在线建站系统网站建设公司的问答营销案例
  • 公司网站备案必须是企业信息么建设银行融信通网站
  • 免费行情软件app网站mnw直食品包装设计开题报告
  • 广州市官网网站建设价格潍坊网站建设收费标准
  • 品牌网站建设 蝌蚪小7seo推广培训费用
  • 网站做app设计logo网站免费横屏纯色
  • 概述网站建设的流程做旅游网站
  • 做生意的网站上海公司网站建设电话
  • 律师怎样做网站优化设计四年级下册语文答案
  • 潍坊建设网站1688黄页网女性
  • wordpress 企业整站源码百度语音合成wordpress
  • 广东高职一流专业建设专题网站网站建设与管理试卷A
  • 网站开发大学有哪些现在网络推广有哪些平台