国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

深圳網(wǎng)站建設(shè)sumaart精準(zhǔn)粉絲引流推廣

深圳網(wǎng)站建設(shè)sumaart,精準(zhǔn)粉絲引流推廣,wordpress環(huán)境需求,一學(xué)一做教育視頻網(wǎng)站在 Kubernetes 中,一個(gè)重要的概念就是 Pod(豆英),Kubernetes 并不是直接管理容器的,他的最小管理單元叫做 Pod。 一、什么是 Pod。 Pod 是一個(gè)或多個(gè)容器的組合。這些容器共享存儲(chǔ)、網(wǎng)絡(luò)和命名空間,以及運(yùn)行規(guī)范。在 Pod中&…

在 Kubernetes 中,一個(gè)重要的概念就是 Pod(豆英),Kubernetes 并不是直接管理容器的,他的最小管理單元叫做 Pod。

一、什么是 Pod。

Pod 是一個(gè)或多個(gè)容器的組合。這些容器共享存儲(chǔ)、網(wǎng)絡(luò)和命名空間,以及運(yùn)行規(guī)范。在 Pod中,所有容器都被統(tǒng)一安排和調(diào)度,并運(yùn)行在共享的上下文中。對(duì)于具體應(yīng)用而言,Pod 是它們的邏輯主機(jī),Pod 包含業(yè)務(wù)相關(guān)的多個(gè)應(yīng)用容器。所以,Pod 是一組具有共享命名空間、IP 地址和端口的容器的集合。

備注:

共享上下文是一種基于線程的內(nèi)存位置

1:從使用的角度來看


在實(shí)際的使用時(shí),單個(gè)容器是無法單獨(dú)來支撐我們的應(yīng)用的,往往需要很多微服務(wù)才能組成一個(gè)系統(tǒng),并且還會(huì)存在A服務(wù)依賴B服務(wù),B服務(wù)需要和C服務(wù)共用某個(gè)目錄。另外,在使用裸容器時(shí),很難實(shí)現(xiàn)對(duì)容器內(nèi)進(jìn)行健康檢査以及橫向擴(kuò)容等操作,而 Pod 可以輕松解決這些問題。

2:從 Kubernetes 的角度來看


Docker 只是容器 Runtime(運(yùn)行時(shí))的一種們還有很多容器 Runtime,比如 Rkt、CRI-0等,而 Kubernetes 作為目前最流行的容器編排工具,需要支持各個(gè) Runtime 并且不依賴于底層Runtime 的實(shí)現(xiàn)技術(shù),于是就抽象出了 Pod 這個(gè)概念,用于管理多個(gè)緊密相連的符合 CRI 標(biāo)準(zhǔn)的容器。

Pod 可以簡單的理解為一組、一個(gè)或多個(gè)容器,每個(gè) Pod 還包含一個(gè) Pause 容器,Pause 容器是 Pod 的父容器,主要負(fù)責(zé)僵尸進(jìn)程的回收管理。同時(shí),通過 Pause 容器可以使同一個(gè) Pod里面的不同容器共享存儲(chǔ)、網(wǎng)絡(luò)、PID、IPC 等,容器之間可以使用 Localhost:Port 的方式相瓦訪問,可以使用 volume 實(shí)現(xiàn)數(shù)據(jù)共享。根據(jù) Docker 的構(gòu)造,Pod 可以被創(chuàng)建為一組具有共享命名空卷、IP 地址和端口的容器。

Pod 有兩個(gè)必須知道的特點(diǎn):

網(wǎng)絡(luò):每一個(gè) Pod 都會(huì)被指派一個(gè)唯一的 Ip 地址,在 Pod 中的每一個(gè)容器共享網(wǎng)絡(luò)命名空間,包括 Ip 地址和網(wǎng)絡(luò)端口。在同一個(gè) Pod 中的容器可以同 1ocahost 進(jìn)行互相通信。當(dāng) Pod中的容器需要與 Pod 外的實(shí)體進(jìn)行通信時(shí),則需要通過端口等共享的網(wǎng)絡(luò)資源。
存儲(chǔ):Pod 能夠被指定共享存儲(chǔ)卷的集合,在Pod中所有的容器能夠訪問共享存儲(chǔ)卷,允許這些容器共享數(shù)據(jù)。存儲(chǔ)卷也允許在一個(gè) Pod 持久化數(shù)據(jù),以防止其中的容器需要被重啟。


3:Pod 的狀態(tài)


(1)kubectl 命令創(chuàng)建 pod


kubectl run nginx--image=nginx:1.7.9 --labels="app=nginx"

(2)查看 pod


kubectlget pods -n default

NAME??READY??STATUS??RESTARTS??AGE

nginx??1/1??Running???0??78s

(3)顯示 Pod的更多信息


kubectl get pod nginx -o wide

NAME??READY??STATUS??RESTARTS AGE??Ip??NODE??NOMINATED NODE??READINESS GATES?

nginx??1/1??Running??0??54s??10.244.58.195??k8s-node02??<none>??<none>

(4)查看 pod日志


curl 10.244.58.195

kubectl logs nginx

(5)以yaml格式顯示 Pod 詳細(xì)信息


kubectl get pod nginx -o yaml

(6)顯示資源的詳細(xì)描述信息


kubectl describe pod nginx

備注:

kubectl get:常用于査看同一資源類型的一個(gè)或多個(gè)資源對(duì)象,可以使用-0 參數(shù)自定義輸出格式。
kubectl describe:側(cè)重于描述指定資源的各方面的詳細(xì)信息,不僅會(huì)返回節(jié)點(diǎn)信息,還會(huì)返回在其上運(yùn)行的 Pod 的摘要、節(jié)點(diǎn)事件等信息。


(7)在 Pod 的容器中執(zhí)行命令


kubectl exec nginxc nginx-- date

備注:

-c:指定 Pod 中容器的名字


(8)登錄到 Pod 中的容器中


kubectl exec -it nginx-c nginx -- bash

備注:

kubectl exec -it nginx --bash

如果登錄的時(shí)候不指定容器,就登錄到 Pod 中的第一個(gè)容器中。

(9)在線編輯運(yùn)行中的資源對(duì)象


kubectl edit pod nginx

(10)將 pod 的端口映射到宿主機(jī)


kubectl port-forward --address 0.0.0.0 pod/nginx 8080:80

Forwarding from 0.0.0.0:8080->80

其他主機(jī)訪問測試:

curl 192.168.10.101:8080

注意:

此命令會(huì)在前臺(tái)運(yùn)行,此時(shí)就可以在其他客戶端用該 k8s 主機(jī)的 IP 地址和 8080 的端口號(hào)進(jìn)行訪問了,Ctr1+c停止,但停止后就沒有這個(gè)映射了。

(11)在宿主機(jī)和 Pod 的容器之間拷貝文件


kubectl cp nginx:etc/fstab /opt/aaa.txt

kubectl cp /opt/aaa.txt nginx:etc/bbb.txt

(12)Pod 的狀態(tài)


kubectl get pods -n default

NAME??READY??STATUS??RESTARTS??AGE

nginx??1/1??Running??0??29m

可以看到此時(shí)的 Pod 的狀態(tài)是 Running,Pod 的狀態(tài)不僅僅只有 Running,常見的其他狀態(tài)如表所示:

狀態(tài)

說明

Pending(掛起)

Pod 已經(jīng)被 Kubernetes 系統(tǒng)接收,但是仍有一個(gè)或多個(gè)容器未被創(chuàng)建,可以通過 kubectl describe 查看處于Pending 狀態(tài)的原因。

Running(運(yùn)行中)

Pod 已經(jīng)被綁定到一個(gè)節(jié)點(diǎn)上,并且所有的容器都已經(jīng)被創(chuàng)建,而且至少有一個(gè)是運(yùn)行的狀態(tài)、正在啟動(dòng)或者重啟,可以通過 kubectl logs 查看 Pod 的日志。

Succeeded

所有容器執(zhí)行成功,并終止,并且不會(huì)再次重啟,可以通過kubectl logs 査看 Pod 的日志

Failed(失敗)

所有容器都已終止,并且至少一個(gè)容器以失敗的方式終止,也就是說這個(gè)容器要么以非零狀態(tài)退出,要么被系統(tǒng)終止,可以通過 logs 和 describe 査看 Pod 的日志和狀態(tài)

Unknown(未知)

通常是由于通信問題造成的無法獲得 Pod 的狀態(tài)

ImagePullBackOff

ErrImagePull

鏡像拉取失敗,一般是由于鏡像不存在、網(wǎng)絡(luò)不通或者需要登錄認(rèn)證引起的,可以使用 describe 命令查看具體的原因

CrashLoopBackoff

容器啟動(dòng)失敗,可以通過 logs 命令查看具體的原因,一般為啟動(dòng)命令不正確、健康檢査不通過等原因

OOMKilled

容器內(nèi)存溢出,一般是容器的內(nèi)存 Limit 設(shè)置的過小,或者程序本身有內(nèi)存溢出,可以通過 logs 查看程序的啟動(dòng)日志

Terminating

Pod 正在被刪除,可以通過 describe 查看狀態(tài)

SysctlForbiden

Pod 自定義了內(nèi)核配置,但 kubect1 沒有添加內(nèi)核配置或配置的內(nèi)核參數(shù)不支持,可以通過 describe 查看具體原因

Completed

容器內(nèi)部主進(jìn)程退出,一般計(jì)劃任務(wù)執(zhí)行結(jié)束會(huì)顯示該該狀態(tài),此時(shí)可以通過 logs 查看容器日志

ContainerCreating

Pod 正在創(chuàng)建,一般正在下載鏡像,或者有配置不當(dāng)?shù)牡胤娇梢酝ㄟ^ describe 查看具體原因

(13)刪除 Pod


kubectl delete pod nginx

二、Pod 探針


在生產(chǎn)環(huán)境中,進(jìn)程正常啟動(dòng)并不代表應(yīng)用能正常處理請(qǐng)求,所以合理的設(shè)計(jì)應(yīng)用的健康檢查尤其重要。在使用裸機(jī)或裸容器部署時(shí),一般很難對(duì)應(yīng)用做很完善的健康檢査,而 Pod 提供的探針可以很方便的用來檢測容器的應(yīng)用是否正常。目前探針有3種檢測方式,可以根據(jù)不同的場景選擇合適的健康檢查方式。檢查方式如表所示:

上述的檢查方式可以被周期性的執(zhí)行,每次檢查容器后可能得到的容器狀態(tài)如表所示:

Pod 探針有三類,分別是:livenessProbe(存活探針)、readinessProbe(就緒探針)、startupProbe(啟動(dòng)探針)。

livenessProbe (存活探針):判斷容器是否正常運(yùn)行,如果失敗則殺掉容器(不是 pod),再根據(jù)重啟策略決定是否重啟容器
readinessProbe(就緒探針):判斷容器是否能夠進(jìn)入ready 狀態(tài),探針失敗則進(jìn)入noready 狀態(tài),并從service 的endpoints 中剔除此容器
startupProbe(啟動(dòng)探針): 判斷容器內(nèi)的應(yīng)用是否啟動(dòng)成功,在 success 狀態(tài)前,其它探針都處于無效狀態(tài)


三、Pod 鏡像拉取策略和重啟策略


在發(fā)布應(yīng)用或者更改控制器配置時(shí),會(huì)觸發(fā)Pod 的滾動(dòng)更新,此時(shí)針對(duì)容器的鏡像有不同的拉取方式。如表所示:

指定拉取策略:

kubectl run nginx --image=nginx:1.7.9 --labels="app=nginx" --image-pull-policy=Never

Pod 進(jìn)行部署或者運(yùn)行時(shí),難免會(huì)出現(xiàn)故障,對(duì)于故障。,Pod也有不同的處理方式,如表所示:

指定重啟策略:

kubectl delete pod nginx

kubectl run nginx --image=nginx:1.7.9 --labels="app=nginx" --restart=OnFailure

四、創(chuàng)建一個(gè)簡單的 Pod


1:編寫一個(gè)簡單的 Pod


vim nginx-pod.yaml

apiVersion: v1

kind: Pod

metadata:

??name: nginx

??labels:

????name: nginx

spec:

??containers:

??- name: nginx

????image: nginx:1.7.9

????ports:

????- containerPort: 80

2:編寫 Pod 配置文件 frontend-localredis-pod.yaml


cat <<E0F>frontend-localredis-pod.yam1

apiVersion: v1

kind: Pod

metadata:

??name: redis-php

??labels:

?????name: redis-php

spec:

??containers:

??- name: frontend

?????image: kubeguide/guestbook-php-frontend:localredis

?????imagePullPolicy: IfNotPresent

?????livenessProbe:

???????tcpSocket:

???????port: 80

?????initialDelaySeconds: 1

?????periodSeconds: 3

?????timeoutSeconds: 1

???ports:

???- containerPort: 80

?- name: redis

???image: kubeguide/redis-master

???imagePullPolicy: IfNotPresent

???ports:

???- containerPort: 6379

??restartPolicy: OnFailure

EOF

備注:

##必選,版本號(hào)apiVersion:v1

kind: Pod##必選,資源類型

metadata:##必選,元數(shù)據(jù)

name: redis-php##必選,Pod 名稱

labels :##自定義的 pod 標(biāo)簽列表

##標(biāo)簽值name:redis-php

##必選,Pod 中容器的詳細(xì)信息spec:

##必選,Pod 中的容器列表containers:

##必選,自定義的容器名稱- name:frontend

image:kubeguide/guestbook-php-frontend:localredis##必選,容器的鏡像名稱

imagePullPolicy:IfNotPresent##鏡像拉取策略

設(shè)置存活探針livenessProbe:

tcpsocket:##測試某端口是否可以連接

##指定要測試的端口port:80

initialDelaySeconds:1 #指定 kubelet 在執(zhí)行第一次探測前應(yīng)該等待1秒,即第一次探測是在容器啟動(dòng)后的第2秒才開始執(zhí)行。默認(rèn)是0秒,最小值是0

periodseconds:3#指定了 kubelet 應(yīng)該每 3 秒執(zhí)行一次存活探測。默認(rèn)是 10 秒。最小值是 1

timeoutSeconds:1##當(dāng)探測失敗時(shí),Kubernetes 將在放棄之前重試的次數(shù)。存活探測情況下的放棄就意味著重新啟動(dòng)容器。就緒探測情況下的放棄Pod 會(huì)被打上未就緒的標(biāo)簽。默認(rèn)值是 3。最小值是 1

##需要暴露的端口號(hào)列表ports:

##容器需要監(jiān)聽的端口號(hào)-containerPort:80

name:redis##另一個(gè)容器的名字

image:kubeguide/redis-master##另一個(gè)容器的鏡像

##需要暴露的另一個(gè)容器的端口列表ports:

containerPort:6379##容器需要監(jiān)聽的端口號(hào)

##重啟策略restartPolicy:onFailure

3:Pod 文件語法


(1)Pod 文件的一級(jí)屬性
一級(jí)屬性主要包含5部分:

apiVersion<string>版本,由 kubernetes 內(nèi)部定義,版本號(hào)必須可以用 kubectlapi-versions 查詢到
kind<string>類型,由 kubernetes 內(nèi)部定義,版本號(hào)必須可以用 kubect1api-resources 查詢到
metadata<Object>元數(shù)據(jù),主要是資源標(biāo)識(shí)和說明,常用的有 name、namespace、labels
spec<Object>描述,這是配置中最重要的一部分,里面是對(duì)各種資源配置的詳細(xì)述
status<Object>狀態(tài)信息,里面的內(nèi)容不需要定義,由kubernetes 自動(dòng)生成


(2)spec(規(guī)格)屬性
在一級(jí)屬性中,spec是研究的重點(diǎn),它的常見子屬性有:

containers<[]Object>容器列表,用于定義容器的詳細(xì)信息
nodeName<String>根據(jù) nodeName 的值將 pod 調(diào)度到指定的 Node 節(jié)點(diǎn)上
nodeselector <map[]>根據(jù) Nodeselector 中定義的信息選擇將該 Pod 調(diào)度到包含這些label的Node 上
hostNetwork<boolean〉是否使用主機(jī)網(wǎng)絡(luò)模式,默認(rèn)為 false,如果設(shè)置為 true,表示使用宿主機(jī)網(wǎng)絡(luò)
volumes<[]0bject>存儲(chǔ)卷,用于定義 Pod 上面掛在的存儲(chǔ)信息
restartPolicy<string>重啟策略,表示 Pod 在遇到故障的時(shí)候的處理策略


(3)通過 kubectl explain 命令來查看每種資源的可配置項(xiàng)


kubectl explain pod

kubectl explain deployment

kubectl explain service

kubectl explain pod.metadata

kubectl explain pod.spec.containers

備注:

查看某種資源可以配置的一級(jí)屬性

# kubectl explain 資源類型

查看屬性的子屬性

# kubectl explain 資源類型,屬性

4:運(yùn)行 kubectl create 命令創(chuàng)建此 Pod


kubectl create -f frontend-localredis-pod.yaml

5:查看已經(jīng)創(chuàng)建的 Pod


kubectl get pods

NAME??READY??STATUS??RESTARTS??AGE

redis-php??2/2??Running??0??119s

6:查看 pod 詳細(xì)創(chuàng)建信息


kubectl describe pod redis-php

7:刪除 pod


kubectl delete -f frontend-localredis-pod.yaml

五、Pod 的基本用法


1:編寫 pod 文件,將兩個(gè)容器放在同一個(gè) pod 中
cat <<EOF>nginx-php.yaml

apiVersion: v1

kind: Pod

metadata:

?name: nginx-php

?labels:

???name: nginx-php

spec:

?containers:

?- name: nginx-app

???image: nginx:1.7.9

???ports:

???- containerPort: 80

?- name: php-app

???image: bitnami/php-fpm

???imagePullPolicy: Never

???ports:

???- containerPort: 9000

EOF

2:部署 nginx的 pod 文件


kubectl apply -f nginx-php.yaml

kubectl get pods

NAME??READY??STATUS??RESTARTS??AGE

nginx-php??2/2??Running??0??28s

備注:

此時(shí)可以看到 pod 中有兩個(gè)容器處于 running 狀態(tài)中

3:查看 pod 的詳細(xì)信息


kubectl describe pod nginx-php

4:暴露端口


kubectl?expose pod nginx-php --port=8080 --target-port=80 --type=NodePort --name=nginx-php

5:查看端口映射


kubectl get pod,svc nginx-php -o wide

NAME??READY??STATUS??RESTARTS??AGE??IP??NODE???NOMINATED NODE????READINESS GATES??NAME??TYPE??CLUSTER-IP??EXTERNAL-IP??PORT(S)??AGE???SELECTOR

pod/nginx-php??2/2??Running??0??2m35s??172.25.244.199??k8s-master01 <none>??<none>??service/nginx-php???NodePort??10.99.26.98?

<none>??8080:32598/TcP??2m24s??name=nginx-php

6:測試訪問


用外部主機(jī),訪問master 的ip 地址:映射的端口

http://192.168.10.101:32598/

7:刪除 pod
kubectl delete -f nginx-php.yaml

六、靜態(tài) pod


靜態(tài) Pod 是由 kubelet 進(jìn)行管理的僅存在于各個(gè) Node 上的 Pod。他們不能通過 API Server進(jìn)行管理,無法于 Replicationcontroller、Deployment 或者 Daemonset 進(jìn)行關(guān)聯(lián),并且kubelet 無法對(duì)他們進(jìn)行健康檢査。靜態(tài) Pod 總是由 kubelet 創(chuàng)建的,并且總在 kubelet 所在的 Node 上運(yùn)行。

1:編寫 yamal 文件
cat<<E0F>/etc/kubernetes/manifests/nginx-pod.yaml

apiVersion:v1

kind: Pod

metadata:

?name: nginx

?labels:

???name: nginx

spec:

?containers:

?- name: nginx

???image: nginx:1.7.9

???ports:

???- containerPort: 80

EOF

2:不需執(zhí)行部署命令,過一會(huì),查看 pod
kubectl get pod

NAME??READY??STATUS??RESTARTS??AGE

nginx-php??2/2??Running??4(18m ago)20m

static-web-k8s-master01??1/1??Running 0??20s

3:刪除靜態(tài) pod 的方法


rm -rf /etc/kubernetes/manifests/nginx-pod.yaml

備注:

不能用如下語句刪除

kubectl delete pod static-web-k8s-master01

這樣刪除,會(huì)讓 pod 處于 pending 狀態(tài),但無法刪除

七、Pod 啟動(dòng)階段(相位 phase)


Pod 創(chuàng)建完之后,一直到持久運(yùn)行起來,中間有很多步驟,也就有很多出錯(cuò)的可能,因此會(huì)有很多不同的狀態(tài)

1:pod 的啟動(dòng)過程包含的步驟
調(diào)度到某臺(tái) node 上。kubernetes 根據(jù)一定的優(yōu)先級(jí)算法選擇一臺(tái) node 節(jié)點(diǎn)將其作為Pod 運(yùn)行的 node
拉取鏡像
掛載存儲(chǔ)配置等
運(yùn)行起來。如果有健康檢查,會(huì)根據(jù)檢查的結(jié)果來設(shè)置其狀態(tài)


2:phase 的可能狀態(tài)
Pending:表示 APIServer 創(chuàng)建了 Pod 資源對(duì)象并已經(jīng)存入了 etcd 中,但是它并未被調(diào)度完成(比如還沒有調(diào)度到某臺(tái) node 上),或者仍然處于從倉庫下載鏡像的過程中
Running:Pod 已經(jīng)被調(diào)度到某節(jié)點(diǎn)之上,并且 Pod 中所有容器都已經(jīng)被 kubelet 創(chuàng)建至少有一個(gè)容器正在運(yùn)行,或者正處于啟動(dòng)或者重啟狀態(tài)(也就是說 Running 狀態(tài)下的 Pod 不一定能被正常訪問)
Succeeded:有些 pod 不是長久運(yùn)行的,比如 job、cronjob,一段時(shí)間后 Pod 中的所有容器都被成功終止,并且不會(huì)再重啟。需要反饋任務(wù)執(zhí)行的結(jié)果
Failed:Pod 中的所有容器都已終止了,并且至少有一個(gè)容器是因?yàn)槭〗K止。也就是說,容器以非0狀態(tài)退出或者被系統(tǒng)終止,比如command 寫的有問題
Unknown:表示無法讀取 Pod 狀態(tài),通常是 kube-controller-manager 無法與 Pod 通信


八、故障排除步驟


査看 Pod 事件
kubectl describe TYPE NAME PREFIX

査看 Pod 日志(Failed 狀態(tài)下)
kubectl logs <POD NAME>[-c Container NAME]

進(jìn)入 Pod(狀態(tài)為running,但是服務(wù)沒有提供)
kubectl exec it <POD NAME> bash

查看集群信息
kubectl get nodes

發(fā)現(xiàn)集群狀態(tài)正常
kubectl cluster-info

査看 kubelet 日志發(fā)現(xiàn)
journalctl -xefu kubelet
?

http://aloenet.com.cn/news/47331.html

相關(guān)文章:

  • eclipse做網(wǎng)站表格百度競價(jià)推廣教程
  • 個(gè)人頁網(wǎng)址seo研究中心教程
  • 中央廣播電視總臺(tái)2024網(wǎng)絡(luò)春晚seo網(wǎng)站優(yōu)化推廣費(fèi)用
  • flash軟件做的網(wǎng)站最后需要用dreamweaver調(diào)整廣州seo公司如何
  • 如何在網(wǎng)站上做網(wǎng)上亮照常用的seo工具的是有哪些
  • asp.net建網(wǎng)站2023年8月疫情恢復(fù)
  • 做國內(nèi)貿(mào)易的網(wǎng)站網(wǎng)站推廣技術(shù)
  • 儀器儀表網(wǎng)站制作搜索軟件使用排名
  • 關(guān)于 公司網(wǎng)站建設(shè)的通知營銷頁面
  • 網(wǎng)站SEO做點(diǎn)提升流量象客下載百度極速版免費(fèi)安裝
  • 在線制作簡歷網(wǎng)站卡點(diǎn)視頻免費(fèi)制作軟件
  • 能被百度收錄的建站網(wǎng)站網(wǎng)站建設(shè)方案推廣
  • 做營銷策劃的上哪個(gè)網(wǎng)站好鄭州網(wǎng)絡(luò)推廣大包
  • 固安做網(wǎng)站的免費(fèi)發(fā)布推廣信息的平臺(tái)有哪些
  • 江門網(wǎng)站優(yōu)化公司seo優(yōu)化排名技術(shù)百度教程
  • 鶴山做網(wǎng)站公司seo推廣優(yōu)化官網(wǎng)
  • 網(wǎng)站開發(fā)員工保密協(xié)議網(wǎng)絡(luò)營銷的成功案例分析
  • 哪些公司做網(wǎng)站競價(jià)排名的優(yōu)缺點(diǎn)
  • 做企業(yè)網(wǎng)站要用什么軟件谷歌chrome官網(wǎng)
  • 做網(wǎng)站是不是要學(xué)編程外包公司怎么賺錢
  • ofbiz做的網(wǎng)站網(wǎng)絡(luò)輿情監(jiān)控
  • 網(wǎng)站備案很麻煩嗎網(wǎng)站模板圖片
  • 有哪些做普洱茶網(wǎng)站的seo關(guān)鍵詞優(yōu)化
  • 招標(biāo)采購導(dǎo)航網(wǎng)蘇州吳中區(qū)seo關(guān)鍵詞優(yōu)化排名
  • 兼職做問卷調(diào)查的網(wǎng)站個(gè)人網(wǎng)站設(shè)計(jì)內(nèi)容
  • 網(wǎng)絡(luò)營銷推廣方法是什么和什么的合理利用百度seo按天計(jì)費(fèi)
  • 做商城網(wǎng)站需要什么超級(jí)外鏈發(fā)布
  • 如今做哪些網(wǎng)站能致富長沙seo就選智優(yōu)營家
  • 網(wǎng)站路徑優(yōu)化怎么做淘寶運(yùn)營一般要學(xué)多久
  • 專門做汽車動(dòng)力性測試的網(wǎng)站seo站長綜合查詢工具