亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

容器DNS怎么創建

發布時間:2021-12-16 10:21:45 來源:億速云 閱讀:235 作者:iii 欄目:云計算

這篇文章主要介紹“容器DNS怎么創建”,在日常操作中,相信很多人在容器DNS怎么創建問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”容器DNS怎么創建”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

DNS簡介

DNS服務是域名系統的縮寫, 英文全稱:Domain Name System,將域名和IP地址相互映射。在容器環境中,DNS至關重要,例如在Kubernetes集群中,通常一組Pod由一個Service負載,但是Service的IP地址有可能需要變動,那么就可以讓Pod通過域名的方式去訪問Service,Pod無需理會IP地址的變化。

Docker DNS

Docker link

Docker link是一個遺留的特性,在新版本的Docker中,一般不推薦使用。簡單來說Docker link就是把兩個容器連接起來,容器可以使用容器名進行通信,而不需要依賴ip地址(其實就是在容器的/etc/hosts文件添加了host記錄,原本容器之間的IP就是通的,只是我們增加了host記錄,可以不用IP去訪問)

創建容器centos-1:

[root@host1 ~]# docker run -itd --name centos-1  registry.cn-shanghai.aliyuncs.com/public-namespace/cr7-centos7-tool:v2

創建容器centos-2,使用--link name:alias,name就是要訪問的目標機器,alias就是自定義的別名。

[root@host1 ~]# docker run -itd --name centos-2  --link centos-1:centos-1-alias  registry.cn-shanghai.aliyuncs.com/public-namespace/cr7-centos7-tool:v2

查看容器centos-2的/etc/hosts文件:

[root@host1 ~]# docker exec centos-2 cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.18.0.2      centos-1-alias 9dde6339057a centos-1  #容器centos-1的host記錄
172.18.0.3      f1a7e5fa3d96  #容器centos-2自身的host記錄

意味著centos-2可以用centos-1-alias,9dde6339057a,centos-1來訪問原先創建的容器。centos-1是不可以通過hostname訪問centos-2的。

[root@host1 ~]# docker exec centos-2 ping centos-1-alias
PING centos-1-alias (172.18.0.2) 56(84) bytes of data.
64 bytes from centos-1-alias (172.18.0.2): icmp_seq=1 ttl=64 time=0.174 ms
^C
[root@host1 ~]# docker exec centos-2 ping centos-1
PING centos-1-alias (172.18.0.2) 56(84) bytes of data.
64 bytes from centos-1-alias (172.18.0.2): icmp_seq=1 ttl=64 time=1.37 ms
64 bytes from centos-1-alias (172.18.0.2): icmp_seq=2 ttl=64 time=0.523 ms
^C
[root@host1 ~]# docker exec centos-2 ping 9dde6339057a
PING centos-1-alias (172.18.0.2) 56(84) bytes of data.
64 bytes from centos-1-alias (172.18.0.2): icmp_seq=1 ttl=64 time=2.59 ms
64 bytes from centos-1-alias (172.18.0.2): icmp_seq=2 ttl=64 time=3.75 ms

Embedded DNS

從Docker 1.10開始,Docker提供了一個內置的DNS服務器,當創建的容器屬于自定義網絡時,容器的/etc/resolv.conf會使用內置的DNS服務器(地址永遠是127.0.0.11)來解析相同自定義網絡內的其他容器。

容器DNS怎么創建

為了向后兼容,default bridge網絡的DNS配置沒有改變,默認的docker網絡使用的是宿主機的/etc/resolv.conf的配置。

創建一個自定義網絡:

[root@host1 ~]# docker network create my-network

#bridge,host,none為docker默認創建的網絡
[root@host1 ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
2115f17cd9d0        bridge              bridge              local
19accfa096cf        host                host                local
a23c8b371c7f        my-network          bridge              local
0a33edc20fae        none                null                local

分別創建兩個容器屬于自定義網絡my-network中:

[root@host1 ~]# docker run -itd --name centos-3 --net my-network  registry.cn-shanghai.aliyuncs.com/public-namespace/cr7-centos7-tool:v2 
[root@host1 ~]# docker run -itd --name centos-4 --net my-network  registry.cn-shanghai.aliyuncs.com/public-namespace/cr7-centos7-tool:v2

查看容器centos-4的/etc/hosts和/etc/resolv.conf,可以看到nameserver添加的IP為127.0.0.11的Embedded DNS:

#/etc/hosts中沒有配置對方的host記錄
[root@host1 ~]# docker exec centos-4 cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.19.0.3      555281f37ea3

#/etc/resolv.conf配置了dns服務器127.0.0.11
[root@host1 ~]# docker exec centos-4 cat /etc/resolv.conf
nameserver 127.0.0.11
options ndots:0

此時centos-3和centos-4可以互相解析:

[root@host1 ~]# docker exec centos-4 ping centos-3
PING centos-3 (172.19.0.2) 56(84) bytes of data.
64 bytes from centos-3.my-network (172.19.0.2): icmp_seq=1 ttl=64 time=0.128 ms
64 bytes from centos-3.my-network (172.19.0.2): icmp_seq=2 ttl=64 time=0.078 ms
64 bytes from centos-3.my-network (172.19.0.2): icmp_seq=3 ttl=64 time=0.103 ms
^C

[root@host1 ~]# docker exec centos-3 ping centos-4
PING centos-4 (172.19.0.3) 56(84) bytes of data.
64 bytes from centos-4.my-network (172.19.0.3): icmp_seq=1 ttl=64 time=0.087 ms
64 bytes from centos-4.my-network (172.19.0.3): icmp_seq=2 ttl=64 time=0.101 ms
64 bytes from centos-4.my-network (172.19.0.3): icmp_seq=3 ttl=64 time=0.076 ms
^C

Docker DNS配置

方式一:docker run (針對單個容器)
FlagDescription
--dns指定DNS服務器地址,如果容器不能訪問指定的所有ip地址,則會使用8.8.8.8作為DNS服務器地址(Docker默認定義的)
--dns-search當容器訪問一個不包括完全域名的主機名時,在該主機名后面添加dns-search指定的域名后綴,例如容器訪問centos-1,dns-search配置的是example.com,則會解析成centos-1.example.com
--dns-optoptions ndots:5的含義是當查詢的域名字符串內的點字符數量大于等于ndots值(5)時,則認為是完整域名,直接解析,不會走 search 域
--hostname指定容器hostname
方式二:daemon.json

nameserver只針對docker默認網絡所有容器,dns-search和dns-opts針對所有網絡容器。

{
     "dns": ["114.114.114.114","223.5.5.5"],
     "dns-opts":["ndots:5"],
     "dns-search":["example.com"]
}

Kubernetes DNS

容器DNS怎么創建

在kubernetes中,有以下4中DNS策略,可以通過dnsPolicy指定:

  • Default: Pod從運行所在的節點繼承名稱解析配置,就是該 Pod 的 DNS 配置會跟宿主機完全一致。。 Default 不是默認的 DNS 策略。 如果未明確指定dnsPolicy,則使用 ClusterFirst。

  • ClusterFirst: 它會預先把 kube-dns(或 CoreDNS)的信息當作預設參數寫入到該 Pod 內的 DNS 配置。不過ClusterFirst 還有一個沖突,如果你的 Pod 設置了 HostNetwork=true,則 ClusterFirst 就會被強制轉換成 Default。

  • ClusterFirstWithHostNet: 對于與 hostNetwork(網絡接口使用的是宿主機的) 一起運行的 Pod,應顯式設置其DNS策略 ClusterFirstWithHostNet,他將同時解決default和ClusterFirst的DNS解析。如果不加上dnsPolicy: ClusterFirstWithHostNet ,Pod默認使用所在宿主主機使用的DNS,這樣也會導致容器內不能通過service name 訪問k8s集群中其他Pod。

  • None: 表示會清除 Pod 預設的 DNS 配置,當 dnsPolicy 設置成這個值之后,Kubernetes 不會為 Pod 預先載入任何自身邏輯判斷得到的 DNS 配置。因此若要將 dnsPolicy 的值設為 None,為了避免 Pod 里面沒有配置任何 DNS參數,至少需要在dnsConfig中設置nameservers的參數。

在 Kubernetes 1.11 及其以后版本中,推薦使用 CoreDNS, kubeadm 默認會安裝 CoreDNS。當Pod向CoreDNS發起DNS解析請求時,CoreDNS先會自己嘗試解析,如果無法解析該域名,會將DNS請求交給CoreDNS的Pod所在的宿主機,讓宿主機嘗試解析。

本次實驗kubernetes集群中coredns service的地址是10.247.3.10。

? kubectl get svc -n kube-system
NAME      TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                  AGE
coredns   ClusterIP   10.247.3.10   <none>        53/UDP,53/TCP,8080/TCP   13d

宿主機的/etc/resolv.conf文件如下:

[root@cr7-k8s-85091-ydy99 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search openstacklocal
nameserver 100.125.1.250
nameserver 100.125.64.250
options single-request-reopen

CluterFirst

CluterFirst是kubernetes集群中默認的DNS策略,這里是一個普通的Pod yaml文件,沒有指定dnsPolicy。

apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - image: busybox:1.28
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
    name: busybox
  restartPolicy: Always

創建Pod后,進入該Pod查看/etc/resolv.conf配置,可以看到nameserver為CoreDNS的service的地址。

/ # cat /etc/resolv.conf
nameserver 10.247.3.10
search default.svc.cluster.local svc.cluster.local cluster.local openstacklocal
options single-request-reopen timeout:2 ndots:5

如果在Pod的yaml文件中指定了DNS參數,會和默認的ClusterFirst的配置疊加:

apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - image: busybox:1.28
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
    name: busybox
  restartPolicy: Always
  dnsConfig:
    nameservers:
      - 1.2.3.4
    searches:
      - ns1.svc.cluster-domain.example
      - my.dns.search.suffix
    options:
      - name: ndots
        value: "2"
      - name: edns0
/ # cat /etc/resolv.conf
nameserver 10.247.3.10
nameserver 1.2.3.4
search default.svc.cluster.local svc.cluster.local cluster.local openstacklocal ns1.svc.cluster-domain.example my.dns.search.suffix
options timeout:2 ndots:2 edns0 single-request-reopen

Default

dnsPolicy為Default模式時,Pod使用的是宿主機的DNS配置:

apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - image: busybox:1.28
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
    name: busybox
  restartPolicy: Always
  dnsPolicy: Default
/ # cat /etc/resolv.conf
nameserver 100.125.1.250
nameserver 100.125.64.250
search openstacklocal
options single-request-reopen timeout:2

ClusterFirstWithHostNet

當Pod使用了hostNetwork模式時,Pod使用的是宿主機的網卡:

#進入pod后查看
/ # ifconfig
......
eth0      Link encap:Ethernet  HWaddr FA:16:3E:6D:14:9B
          inet addr:192.168.0.8  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::f816:3eff:fe6d:149b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:44239432 errors:0 dropped:0 overruns:0 frame:0
          TX packets:47841007 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:19884749467 (18.5 GiB)  TX bytes:34713001649 (32.3 GiB)
......

當Pod使用hostNetwork模式,并且未指定dnsPolicy為ClusterFirstWithHostNet時,Pod會使用的宿主機的DNS:

apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - image: busybox:1.28
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
    name: busybox
  restartPolicy: Always
  hostNetwork: true

此時Pod無法通過域名訪問Kubernetes集群內部:

#hostNetwork模式如果不指定dnsPolicy則使用default模式,使用的宿主機的DNS
/ # cat /etc/resolv.conf
nameserver 100.125.1.250
nameserver 100.125.64.250
search openstacklocal
options single-request-reopen timeout:2

#pod可以通過域名訪問外網,但是無法通過域名訪問kubernetes集群內部
/ # ping baidu.com
PING baidu.com (39.156.69.79): 56 data bytes
64 bytes from 39.156.69.79: seq=0 ttl=49 time=29.193 ms
64 bytes from 39.156.69.79: seq=1 ttl=49 time=29.104 ms
^C
--- baidu.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 29.104/29.148/29.193 ms
/ # ping nginx
ping: bad address 'nginx'

如果Pod在hostNetwork模式下要通過域名的方式訪問kubernetes集群內的服務,需要指定dnsPolicy為ClusterFirstWithHostNet:

apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - image: busybox:1.28
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
    name: busybox
  restartPolicy: Always
  hostNetwork: true
  dnsPolicy: ClusterFirstWithHostNet

此時查看Pod的DNS配置,可以看到nameserver使用的是CoreDNS:

#ClusterFirstWithHostNet模式DNS使用的是coredns的地址,
/ # cat /etc/resolv.conf
nameserver 10.247.3.10
search default.svc.cluster.local svc.cluster.local cluster.local openstacklocal
options single-request-reopen timeout:2 ndots:5

#可以通過域名訪問外網,也通過域名訪問集群內部
/ # nslookup baidu.com
Server:    10.247.3.10
Address 1: 10.247.3.10 coredns.kube-system.svc.cluster.local

Name:      baidu.com
Address 1: 39.156.69.79
Address 2: 220.181.38.148
/ #
/ # nslookup nginx
Server:    10.247.3.10
Address 1: 10.247.3.10 coredns.kube-system.svc.cluster.local

Name:      nginx
Address 1: 10.247.60.222 nginx.default.svc.cluster.local
/ #

None

當設置dnsPolicy為None時,不會使用Kubernetes集群和宿主機的 DNS 策略,但是必須自己配置dnsConfig。

apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - image: busybox:1.28
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
    name: busybox
  restartPolicy: Always
  dnsPolicy: None
  dnsConfig:
    nameservers:
      - 1.2.3.4
/ # cat /etc/resolv.conf
nameserver 1.2.3.4
options single-request-reopen timeout:2

StatefulSet 和 Service

  • StatefulSet Pod 具有唯一的標識,該標識包括順序標識、穩定的網絡標識和穩定的存儲。該標識和 Pod 是綁定的,不管它被調度在哪個節點上。

  • StatefulSet 中的每個 Pod 根據 StatefulSet 的名稱和 Pod 的序號派生出它的主機名。組合主機名的格式為$(StatefulSet 名稱)-$(序號)。下例將會創建三個名稱分別為 web-0、web-1、web-2 的 Pod。 StatefulSet 可以使用 Headless Service(無頭服務)控制它的 Pod 的網絡域。管理域的這個服務的格式為: $(服務名稱).$(命名空間).svc.cluster.local,其中 cluster.local 是集群域。 一旦每個 Pod 創建成功,就會得到一個匹配的 DNS 子域,格式為:$(pod 名稱).$(所屬服務的 DNS 域名),其中所屬服務由 StatefulSet 的 serviceName 域來設定。

容器DNS怎么創建

  • 通過域名去訪問Headless Service負載的Pod是不走iptables的,通過域名去訪問ClusterIP負載的Pod要走Iptables。

  • 下面給出一些選擇集群域、服務名、StatefulSet 名、及其怎樣影響 StatefulSet 的 Pod 上的 DNS 名稱的示例:

Cluster DomainService (ns/name)StatefulSet (ns/name)StatefulSet DomainPod DNSPod Hostname
cluster.localdefault/nginxdefault/webnginx.default.svc.cluster.localweb-{0..N-1}.nginx.default.svc.cluster.localweb-{0..N-1}
cluster.localfoo/nginxfoo/webnginx.foo.svc.cluster.localweb-{0..N-1}.nginx.foo.svc.cluster.localweb-{0..N-1}
kube.localfoo/nginxfoo/webnginx.foo.svc.kube.localweb-{0..N-1}.nginx.foo.svc.kube.localweb-{0..N-1}

Headless Service

首先我們將StatefulSet和Headless Service結合使用,(通常情況下是這么做的):

apiVersion: v1
kind: Service
metadata:
  name: headless-nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx 
  serviceName: headless-nginx
  replicas: 3 
  template:
    metadata:
      labels:
        app: nginx 
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
          name: web

查看創建的StatefulSet的Pod,命名是有規律的按照0,1,2的順序遞增。

root@master01:~/yaml/service# kubectl get pod -o wide
NAME                     READY   STATUS    RESTARTS   AGE     IP               NODE       NOMINATED NODE   READINESS GATES
web-0                    1/1     Running   0          6s      192.168.5.59     worker01   <none>           <none>
web-1                    1/1     Running   0          5s      192.168.30.117   worker02   <none>           <none>
web-2                    1/1     Running   0          3s      192.168.5.58     worker01   <none>           <none>

查看創建的Headless Service,可以看到ClusterIP為None:

root@master01:~/yaml/service# kubectl get svc
NAME              TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)   AGE
headless-nginx    ClusterIP      None             <none>          80/TCP    15m

找一個相同namespace的Pod來解析該Headless Service:

root@master01:~/yaml/service# kubectl exec busybox1 -- nslookup headless-nginx
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

#解析出來的ip地址為3個StatefulSet的pod的ip
Name:      headless-nginx
Address 1: 192.168.30.117 web-1.headless-nginx.default.svc.cluster.local
Address 2: 192.168.5.59 web-0.headless-nginx.default.svc.cluster.local
Address 3: 192.168.5.58 web-2.headless-nginx.default.svc.cluster.local

查看default命名空間下的Pod的/etc/resolv.conf配置:

root@master01:~/yaml/service# kubectl exec busybox1 -- cat /etc/resolv.conf           
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

在不同的 namespace 下的 Pod 通過 Service 訪問的時候,需要在 Service name 后面加上 .<namespace名字>。

root@master01:~/yaml/service# kubectl exec busybox2 -n kube-system  -- nslookup  headless-nginx.default  
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      headless-nginx.default.svc.cluster.local
Address 1: 192.168.5.58 web-2.headless-nginx.default.svc.cluster.local
Address 2: 192.168.5.59 web-0.headless-nginx.default.svc.cluster.local
Address 3: 192.168.30.117 web-1.headless-nginx.default.svc.cluster.local

查看kube-system命名空間下的Pod的/etc/resolv.conf配置:

root@master01:~/yaml/service# kubectl exec busybox2 -n kube-system  -- cat /etc/resolv.conf             nameserver 10.96.0.10
search kube-system.svc.cluster.local svc.cluster.local cluster.local 
options ndots:5

ClusterIP Service

現在我們將StatefulSet和ClusterIP Service結合使用:

apiVersion: v1
kind: Service
metadata:
  name: clusterip-nginx
  labels:
    app: nginx
#ClusterIP不為None則表示該Service有ClusterIP    
spec:
  ports:
  - port: 80
    name: web
  selector:
    app: nginx

查看創建的Service:

root@master01:~/yaml/service# kubectl get svc
NAME              TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)   AGE
clusterip-nginx   ClusterIP      10.110.176.201   <none>          80/TCP    13s

此時用Pod解析域名只能得到ClusterIP地址,無法得到Pod的IP地址:

root@master01:~/yaml/service# kubectl exec busybox1 -- nslookup clusterip-nginx
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      clusterip-nginx
Address 1: 10.110.176.201 clusterip-nginx.default.svc.cluster.local

Pod 的 hostname 與 subdomain

在 Kubernetes 中,如果不指定 Pod 的 hostname,其默認為 pod.metadata.name,通過 spec.hostname 字段可以自定義;另外還可以給 Pod 設置 subdomain,通過 spec.subdomain 字段。比如下面這個例子:

創建一個Nginx Pod,指定Pod的hostname和subdomain:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    name: nginx
spec:
  hostname: domain-test
  subdomain: subdomain-test
  containers:
  - image: nginx
    name: nginx
---
apiVersion: v1
kind: Service
metadata:
  name: subdomain-test
spec:
  selector:
    name: nginx
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP

可以查看這個 Pod 的 hostname 和 hosts 文件:

[root@localhost ~]# kubectl get po -o wide
NAME                           READY   STATUS    RESTARTS   AGE     IP             NODE           NOMINATED NODE   READINESS GATES
busybox-5bbb5d7ff7-dh78j       1/1     Running   0          112m    10.244.1.246   172-16-105-2   <none>           <none>
nginx                          1/1     Running   0          2m      10.244.1.253   172-16-105-2   <none>           <none>
[root@localhost ~]# kubectl exec -it nginx bash
root@domain-test:/# 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.244.1.253	domain-test.subdomain-test.default.svc.cluster.local	domain-test
root@domain-test:/#

在 busybox 容器中通過域名訪問這個Pod:

[root@localhost ~]# kubectl exec -it busybox-5bbb5d7ff7-dh78j sh
/ # wget domain-test.subdomain-test
Connecting to domain-test.subdomain-test (10.244.1.253:80)
saving to 'index.html'
index.html           100% |*****************************************************|   612  0:00:00 ETA
'index.html' saved

到此,關于“容器DNS怎么創建”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

恩施市| 聂拉木县| 衡东县| 长乐市| 武川县| 大田县| 宁武县| 鲁甸县| 吉安县| 双柏县| 苏州市| 营山县| 乌拉特前旗| 黔西县| 大厂| 弋阳县| 马尔康县| 新疆| 客服| 本溪市| 漳平市| 桃源县| 渝北区| 信宜市| 太康县| 将乐县| 巴林左旗| 库伦旗| 曲麻莱县| 大埔区| 韶关市| 云霄县| 甘肃省| 绿春县| 盘山县| 哈巴河县| 陆河县| 象山县| 西安市| 蒙山县| 阜平县|