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

网站建设的技术标准网站建设规范方案

网站建设的技术标准,网站建设规范方案,.net网站开发优点,北京汇云世纪网络科技有限公司做网站怎么样目录 一、K8S集群搭建1.1 部署方式1.2 了解kubeadm1.3 部署流程1.3.1 初始化配置1.3.2 安装容器运行时1.3.3 安装K8S软件包1.3.4 创建集群 二、集群高可用1.1 集群高可用-堆叠1.2 集群高可用-集群外etcd 三、Pod运维3.1 Pod运维3.2 Pod的生命周期3.3 Pod状况3.4 Pod阶段3.5 容器… 目录 一、K8S集群搭建1.1 部署方式1.2 了解kubeadm1.3 部署流程1.3.1 初始化配置1.3.2 安装容器运行时1.3.3 安装K8S软件包1.3.4 创建集群 二、集群高可用1.1 集群高可用-堆叠1.2 集群高可用-集群外etcd 三、Pod运维3.1 Pod运维3.2 Pod的生命周期3.3 Pod状况3.4 Pod阶段3.5 容器状态3.6 Pod调度3.7 Pod排错3.8 Pod状态 四、Node运维五、Etcd运维六、Corndns运维七、Ingress-controller运维八、Calico运维九、证书更新 一、K8S集群搭建 1.1 部署方式 kubeadm Kubeadm是一个K8s部署工具提供kubeadm init和kubeadm join用于快速部署Kubernetes集群二进制 从github下载发行版的二进制包手动部署每个组件组成Kubernetes集群 1.2 了解kubeadm kubeadm 通过执行必要的操作来启动和运行一个最小可用的集群。它被故意设计为只关心启动集群而不是准备节点环境的工作 kubeadm init 启动一个 Kubernetes 主节点kubeadm join 启动一个 Kubernetes 工作节点并且将其加入到集群kubeadm upgrade 更新一个 Kubernetes 集群到新版本kubeadm config 管理集群的配置kubeadm token 使用 kubeadm join 来管理令牌kubeadm reset 还原之前使用 kubeadm init 或者 kubeadm join 对节点产生的改变kubeadm version 打印出 kubeadm 版本kubeadm alpha 预览一组可用的新功能以便从社区搜集反馈 1.3 部署流程 v1.25搭建直通车 下文的流程只是参考并不是可实操的文档若需要部署请使用上文。 1.3.1 初始化配置 关闭防火墙、selinux、swap #关闭防火墙 systemctl stop firewalld systemctl disable firewalld #关闭 SELinux getenforce setenforce 0 sed -i s/enforcing/disabled/ /etc/selinux/config #关闭 swap 分区 free -h swapoff -a sed -ri s/.*swap.*/#/ /etc/fstab设置主机名 #设置主机名 hostnamectl set-hostname hostname 挂载存储 etcd盘 docker盘 kubelet盘内核参数调优 将桥接的 IPv4 流量传递到 iptables 的链 net.bridge.bridge-nf-call-ip6tables 1 net.bridge.bridge-nf-call-iptables 1 其他参数 net.ipv4.tcp_tw_reuse 1 net.ipv4.tcp_tw_recycle 0 net.ipv4.ip_local_port_range 40000 60000 vm.swappiness 0 kernel.pid_max 655350时间同步 手动同步 ntpdate chrony1.3.2 安装容器运行时 安装CRI wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum -y imstall docker-ce/containerd 调整cgroups驱动 $ cat /etc/docker/daemon.json EOF {registry-mirrors: [https://b9pmyelo.mirror.aliyuncs.com],exec-opts: [native.cgroupdriversystemd] } EOF启动并开机自启 systemctl enable docker systemctl start docker1.3.3 安装K8S软件包 添加K8S的yum源 cat /etc/yum.repos.d/kubernetes.repo EOF [kubernetes] nameKubernetes baseurlhttps://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled1 gpgcheck0 repo_gpgcheck0 gpgkeyhttps://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF安装kubeadm、kubelet、kubectl dnf install -y kubelet-1.25.7 kubeadm-1.25.7 kubectl-1.25.7 \--disableexcludeskubernetes设置开机自启 systemctl enable --now kubelet1.3.4 创建集群 初始化控制平面节点 kubeadm init \--apiserver-advertise-address192.168.100.10 \--image-repositoryregistry.cn-hangzhou.aliyuncs.com/google_containers \--kubernetes-versionv1.25.7 \--service-cidr10.96.0.0/16 \--pod-network-cidr10.244.0.0/16 \--token-ttl0 # 如果不设置为 0 默认的 token 有效期是 24 小时拷贝配置文件 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG/etc/kubernetes/admin.conf加入节点 kubeadm join 10.10.102.224:6443 --token mu567i.b2e80ic54vhr13yl \ --discovery-token-ca-cert-hash sha256:f812c6b9e157ee6c0bd11d85f59252fd8b33f349af30167738aa766442d77e33 #重新生成token kubeadm token create --print-join-command部署网络插件 wget https://projectcalico.docs.tigera.io/v3.25/manifests/calico.yaml kubectl apply -f calico.yaml kubectl get pods -n kube-system 二、集群高可用 1.1 集群高可用-堆叠 1.2 集群高可用-集群外etcd 三、Pod运维 3.1 Pod运维 3.2 Pod的生命周期 3.3 Pod状况 简介 可以通过查看Pod的Condition列表了解更多信息pod的Condition指示pod是否已达到某个状态以及为什么会这样与状态相反一个Pod同时具有多个Conditions pod的条件表 Pod Condition描述PodScheduled表示pod是否已调度到节点InitializedPod的 init容器都已成功完成ContainersReadyPod 中所有容器都已就绪ReadyPod 可以为请求提供服务并且应该被添加到对应服务的负载均衡池中 显示Pod的状况 kubectl describe po pod-name -n namespace | grep Conditions: -A53.4 Pod阶段 简介 Pod 的阶段Phase是 Pod 在其生命周期中所处位置的简单宏观概述。 该阶段并不是对容器或 Pod 状态 的综合汇总也不是为了成为完整的状态机。 pod的条件表 显示Pod的阶段 kubectl get po pod-name -n namespace -o yaml | grep phase:3.5 容器状态 3.6 Pod调度 影响Pod调度 3.7 Pod排错 排错过程中常用命令 查看 Pod 状态: kubectl get pod pod-name -n namespace -o wide 查看 Pod 的 yaml 配置: kubectl get pod pod-name -n namespace -o yaml 查看 Pod 事件: kubectl describe pod pod-name -n namespace 查看容器日志: kubectl logs -f pod-name [-c container-name] -n namespace --tail10 查看上一个退出容器日志kubectl logs pod-name [-c container-name] -n namespace -p3.8 Pod状态 Pod状态-Pending Pod状态- ContainerCreating 或Waiting Pod状态-CrashLoopBackOff Pod状态-ImagePullBackOff 四、Node运维 主机上线 主机下线 主机重命名 备份节点yaml文件 kubectl get node -o yaml nodename.yaml节点下线清理数据 清理iptables/IPVS表 iptables:iptables -F iptables -t nat -F iptables -t mangle -F iptables -X ipvs:ipvsadm -C 清理calico数据 rm -rf /var/lib/calico设置节点名称加入集群 kubeadm join xxx恢复节点标签和污点信息 kubectl edit node 主机标签污点管理 标签管理 查看主机标签kubectl get node --show-labels 添加主机标签kubectl label node keyvalue 移除主机标签kubectl label node key- 污点管理 查看主机污点kubectl describe node 添加主机污点kubectl taint node keyvalue:污点策略 移除主机污点kubectl taint node key- 污点策略 NoSchedule : 一定不被调度 PreferNoSchedule 尽量不被调度 NoExecute : 不会调度并且还会驱逐Node已有Pod 主机常规处理 内存清理 在当前节点上使用命令free -g 查看内存使用情况 使用命令清理echo 1 /proc/sys/vm/drop_caches 主机重启 优先做POD驱逐如果驱逐不了直接停止该节点上的kubelet和docker。 kubectl drain nodename systemctl stop kubelet systemctl stop docker 然后使用命令reboot 主机镜像清理 docker image prune -a CPU异常 查看主机使用情况top 查看各个进程CPU使用情况 查看异常进程具体执行命令判断异常进程属于哪个服务执行命 令cat /proc/异常进程的PID/cmdline 反馈进程相关方 主机僵尸进程查看主机僵尸是否存在 在当前节点上使用命令 top 查看主机僵尸 如果存在僵尸进程找到相关进程ps -e | grep defunct 查看主机僵尸 尝试找到僵尸进程的父进程如果不是父进程Pid不为1通过kill掉父进程执行命令kill -9 父进程Pid从而处理僵尸 进程但僵尸进程的父进程若为1或者没有父进程需要重启问题机器 主机不可用 查看异常节点 kubectl get node -owide | grep NotReady 查看节点异常信息 kubectl describe node 查看主机相关组件状态 systemctl status docker/kubelet 查看主机相关组件日志 journalctl -u docker/kubelet -f tail -f /var/log/message 五、Etcd运维 etcd命令一 设置v版本的API export ETCDCTL_API3 查看ETCD高可用集群健康状态 etcdctl --cacert/etc/kubernetes/pki/etcd/ca.crt --cert/etc/kubernetes/pki/etcd/peer.crt – key/etc/kubernetes/pki/etcd/peer.key --write-outtable --endpoints:2379,:2379, :2379 endpoint health 查看etcd高可用集群列表 etcdctl --cacert/etc/kubernetes/pki/etcd/ca.crt --cert/etc/kubernetes/pki/etcd/peer.crt – key/etc/kubernetes/pki/etcd/peer.key --write-outtable --endpoints:2379,:2379, :2379 member list etcd命令二 查看etcd高可用集群leader etcdctl --cacert/etc/kubernetes/pki/etcd/ca.crt --cert/etc/kubernetes/pki/etcd/peer.crt – key/etc/kubernetes/pki/etcd/peer.key --write-outtable --endpoints:2379,:2379, :2379 endpoint status 删除成员 etcdctl --cacert/etc/kubernetes/pki/etcd/ca.crt --cert/etc/kubernetes/pki/etcd/peer.crt – key/etc/kubernetes/pki/etcd/peer.key --write-outtable --endpoints:2379,:2379, :2379 member remove MEMBER_ID 添加成员 etcdctl --cacert/etc/kubernetes/pki/etcd/ca.crt --cert/etc/kubernetes/pki/etcd/peer.crt – key/etc/kubernetes/pki/etcd/peer.key --write-outtable --endpoints:2379,:2379, :2379 member add etcd_name etcd_http_port etcd命令三 Etcd集群性能检查 etcdctl --cacert/etc/kubernetes/pki/etcd/ca.crt --cert/etc/kubernetes/pki/etcd/peer.crt – key/etc/kubernetes/pki/etcd/peer.key --write-outtable --endpoints:2379,:2379, :2379 check perf 检查结果 执行返回failed表示集群状况不佳 Etcd 数据备份 数据备份 backpath/data/etcdbackup/ respath/var/lib/etcd/ mkdir -p /data/etcdbackup/ etcdendpoints“localhost:2379” backupfile“$now.snapshot.db” export ETCDCTL_API3 etcdctl --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/peer.crt --key /etc/kubernetes/pki/etcd/peer.key --endpoints $etcdendpoints snapshot save b a c k p a t h / backpath/ backpath/backupfile Etcd 数据恢复 停etcd服务 mv /etc/kubernetes/manifests/etcd.yaml /etc/kubernetes/ 备份数据 mv /var/lib/etcd /var/lib/etcd.bak 恢复数据 etcdctl --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/peer.crt --key /etc/kubernetes/pki/etcd/peer.key snapshot restore 备份文件 --name --initial-clusterhttps://:2380, https://:2380,https://:2380 --initialadvertise-peer-urlshttps://:2380 --data-dir/var/lib/etcd –data-dir表示etcd数据目录 –name表示etcd集群节点名一般为主机名也可以是其他不冲突即可 –initial-advertise-peer-urls表示当前节点ip地址 –initial-cluster表示集群各个节点信息 恢复etcd服务 mv /etc/kubernetes/etcd.yaml /etc/kubernetes/manifests/etcd.yaml 六、Corndns运维 k8s DNS运维 Kubernetes 中 Pod 的 DNS 策略有四种类型。 1.DefaultPod 继承所在主机上的 DNS 配置 2.ClusterFirstK8s 的默认设置先在 K8s 集群配置的 coreDNS 中查询查不到的再去继承自主机的上游 nameserver 中查询 3.ClusterFirstWithHostNet对于网络配置为 hostNetwork 的 Pod 而言其 DNS 配置规则与 ClusterFirst 一致 4.None忽略 K8s 环境的 DNS 配置只认 Pod 的 dnsConfig 设置。 resolv.conf 在部署 pod 的时候如果用的是 K8s 集群的 DNS那么 kubelet 在起 pause 容器的时候会将其 DNS 解析配置初始化成集群内的配置。 coredns 常见问题添加自定义host 编辑configmap:kubectl edit cm coredns -n kube-system 添加集群外dns地址 方式一修改coredns主机上/etc/resolv.conf 重启coredns 方式二修改配置将forward改为proxy kubectl edit cm coredns -n kube-system 对dns抓包 1.corednsPod所在的主机查看coredns的网卡 route -n 2.对网卡进行抓包 tcpdump -i 网卡 udp and port 53 -w dns.pcap 七、Ingress-controller运维 ingress控制器借助service的服务发现机制实现配置的动态更新以实现Pod的负载均衡机制实现 排查命令 查看ingress-controller日志 kubectl logs -f -n kube-system pod-name --tail10 查看应用访问日志 kubectl exec -it -n kube-system pod-name bash cd /var/log/nginx/ 查看nginx错误日志 kubectl exec -it -n kube-system pod-name bash tail -f /var/log/nginx/error.log 查看nginx配置 kubectl exec -it -n kube-system pod-name bash more /etc/nginx/nginx.conf 查看nginx后端服务 需额外开启对应端口--status-porthttp 10246 --stream-porttcp/udp 10247八、Calico运维 Node之间是否允许IPIP协议通过 在master上 ping calico pod的ipcalico的ipip数据抓包命令为tcpdump -i 物理网卡 ip proto 4 -n 其中ip proto 4为 ipip的协议号 如果抓不到数据包说明Node之间没有放开IPIP数据包。 检查calico相关的pod的状态是否正常 calico-node所包含的pod必须为running和ready状态 calico 网络常见排查思路 检查kubelet识别的NodeIP是否正确 kubelet自动检测本机网卡的IP有时会识别错误的IP地址例如docker网卡的地址当做NodeIP kubec get node -o wide 检查Calico 识别的Node IP是否与Kubelet识别的NodeIP 一致 在calicoctl所在的Pod中执行calicoctl get node -o wide 如果出现不一致可以通过修改calico-node ds的环境变量来配置图例ens33是网卡名根据实际环境修改也支持模糊匹配顺序匹配比如 -name: IP_AUTODETECTION_METHOD value: interfaceens*,enp1sd* 或者 -name: IP_AUTODETECTION_METHOD value: interfaceens33,eth0 #表明先找ens33网卡找不到 就找eth0网卡 刷新iptables在Pod无法ping通的Node上刷新iptables规则 由于可能存在遗留的iptables导致calico无法访问 iptables -F iptables -X iptables -Z iptables -t nat -F iptables -t nat -X iptables -t nat -Z iptables -P FORWARD ACCEPT 查BGP连接状态 使用netstat -optn|grep 179,查看master与其他node的连接状态是否存在是否为established 检查建立BGP连接的IP地址是否正确有时候因为有些Node存在虚IP或者多网卡会导致建立的BGP连接状态不对。 检查是否关闭源地址校验 执行sysctl -a | grep rp_filter检查是否关闭地址校验期望值为0 如果不为0则将下面俩行添加至/etc/sysctl.conf添加完成后执行sysctl -p net.ipv4.conf.default.rp_filter 0 net.ipv4.conf.all.rp_filter 0 检查selinuxfirewalld是否关闭 selinux及firewalld未关闭可以造成节点ping的通但通过curl或Telnet无法访问端口 1、执行sestatus查看是否关闭selinux期望selinux关闭状态 如果selinux开启状态则执行setenforce 0临时关闭永久关闭selinux方法如下 编辑 /etc/sysconfig/selinux 将SELINUXenforcing修改成SELINUXdisabled保持并重启服务器生效 2、执行systemctl status firewalld查看防火墙是否关闭期望防火墙关闭状态 检查如黑果洞防路火由墙开启状态则执行systemctl stop firewalld systemctl disable firewalld 跨主机访问报错Failed to connect to 10.xxx.xx.232: Invalid argument这种错一般都是黑洞路由导致的可以检查 各个主机路由信息 解决方法修改成正确的blackhole 路由 检查MTU mtu导致的问题更准确的说是访问小文件时通访问大数据时不通因为ip包头占20字节所以宿主机网卡和tunl0网卡 mtu值如果相差小于20则可能造成跨节点的宿主机到容器curl不通ping得通同节点的宿主机到容器curl得通ping 得通。此现场仅存在calico ipip模式下 例如物理网卡mtu为1450tunl0 mtu为1440则会导致ping的通curl不通需要将calico mtu修改为1430 修改方法kubectl edit cm -n kube-system calico-config 修改veth_mtu: 1430保存后重启所有calico node重启后再次查看tunl0是否为期望值 检查是否存在防火墙规则或策略路由 1、检查是否配置了networkpolicy kubectl get networkpolicy -A 2、检查是否配置策略路由 默认只有3条规则如果有多的则询问客户是否可以删除多余的路由规则 删除命令ip rule del pref 3、询问客户是否设置了防火墙规则 查看iptables默认规则 iptables -nvL FORWARD 如果显示policy DROP则执行 iptables -t filter -P FORWARD ACCEPT 开启自动加规则方法 /usr/lib/systemd/system/docker.service中 在ExecReload/bin/kill -s HUP $MAINPID下加上一行 ExecPost/usr/sbin/iptables -t filter -P FORWARD ACCEPT 九、证书更新 拉取脚本 git clone https://github.com/yuyicai/update-kube-cert.git cd update-kubeadm-cert chmod 755 update-kubeadm-cert.sh 更新证书 每个主控节点都需执行一次 ./update-kubeadm-cert.sh all 查看证书 kubeadm certs check-expiration 备份数据证书和配置 cp -rp /etc/kubernetes /etc/kubernetes.bak mv /etc/kubernetes/*.conf /tmp/ 更新admin配置 cp /etc/kubernetes/admin.conf ~/.kube/config 重启etcd、apiserver、controller 、manager、scheduler 将/etc/kubernetes/manifests/临时移出 完成重启
文章转载自:
http://www.morning.zxznh.cn.gov.cn.zxznh.cn
http://www.morning.rljr.cn.gov.cn.rljr.cn
http://www.morning.ktdqu.cn.gov.cn.ktdqu.cn
http://www.morning.qyhcg.cn.gov.cn.qyhcg.cn
http://www.morning.slmbg.cn.gov.cn.slmbg.cn
http://www.morning.cxryx.cn.gov.cn.cxryx.cn
http://www.morning.gwzfj.cn.gov.cn.gwzfj.cn
http://www.morning.jtqxs.cn.gov.cn.jtqxs.cn
http://www.morning.lcjw.cn.gov.cn.lcjw.cn
http://www.morning.jjrsk.cn.gov.cn.jjrsk.cn
http://www.morning.nxkyr.cn.gov.cn.nxkyr.cn
http://www.morning.pznhn.cn.gov.cn.pznhn.cn
http://www.morning.dfltx.cn.gov.cn.dfltx.cn
http://www.morning.yrlfy.cn.gov.cn.yrlfy.cn
http://www.morning.pctql.cn.gov.cn.pctql.cn
http://www.morning.zmzdx.cn.gov.cn.zmzdx.cn
http://www.morning.tpkxs.cn.gov.cn.tpkxs.cn
http://www.morning.kdnrp.cn.gov.cn.kdnrp.cn
http://www.morning.spsqr.cn.gov.cn.spsqr.cn
http://www.morning.lxjcr.cn.gov.cn.lxjcr.cn
http://www.morning.qxmnf.cn.gov.cn.qxmnf.cn
http://www.morning.gxtfk.cn.gov.cn.gxtfk.cn
http://www.morning.ndfwh.cn.gov.cn.ndfwh.cn
http://www.morning.pmwhj.cn.gov.cn.pmwhj.cn
http://www.morning.wffxr.cn.gov.cn.wffxr.cn
http://www.morning.sskns.cn.gov.cn.sskns.cn
http://www.morning.tnnfy.cn.gov.cn.tnnfy.cn
http://www.morning.zlzpz.cn.gov.cn.zlzpz.cn
http://www.morning.zpyh.cn.gov.cn.zpyh.cn
http://www.morning.xnyfn.cn.gov.cn.xnyfn.cn
http://www.morning.ywrt.cn.gov.cn.ywrt.cn
http://www.morning.smcfk.cn.gov.cn.smcfk.cn
http://www.morning.xhkgl.cn.gov.cn.xhkgl.cn
http://www.morning.bprsd.cn.gov.cn.bprsd.cn
http://www.morning.nmnhs.cn.gov.cn.nmnhs.cn
http://www.morning.frpm.cn.gov.cn.frpm.cn
http://www.morning.hpnhl.cn.gov.cn.hpnhl.cn
http://www.morning.rkrcd.cn.gov.cn.rkrcd.cn
http://www.morning.rbmm.cn.gov.cn.rbmm.cn
http://www.morning.jkmjm.cn.gov.cn.jkmjm.cn
http://www.morning.guangda11.cn.gov.cn.guangda11.cn
http://www.morning.rqckh.cn.gov.cn.rqckh.cn
http://www.morning.wtdhm.cn.gov.cn.wtdhm.cn
http://www.morning.paxkhqq.cn.gov.cn.paxkhqq.cn
http://www.morning.fqmbt.cn.gov.cn.fqmbt.cn
http://www.morning.mhfbp.cn.gov.cn.mhfbp.cn
http://www.morning.rbhcx.cn.gov.cn.rbhcx.cn
http://www.morning.zsrdp.cn.gov.cn.zsrdp.cn
http://www.morning.nfcxq.cn.gov.cn.nfcxq.cn
http://www.morning.tjwfk.cn.gov.cn.tjwfk.cn
http://www.morning.kgltb.cn.gov.cn.kgltb.cn
http://www.morning.kzdgz.cn.gov.cn.kzdgz.cn
http://www.morning.ptslx.cn.gov.cn.ptslx.cn
http://www.morning.jbhhj.cn.gov.cn.jbhhj.cn
http://www.morning.wfhnz.cn.gov.cn.wfhnz.cn
http://www.morning.mfmrg.cn.gov.cn.mfmrg.cn
http://www.morning.nchlk.cn.gov.cn.nchlk.cn
http://www.morning.lmfmd.cn.gov.cn.lmfmd.cn
http://www.morning.tkrdg.cn.gov.cn.tkrdg.cn
http://www.morning.ztrht.cn.gov.cn.ztrht.cn
http://www.morning.smj78.cn.gov.cn.smj78.cn
http://www.morning.fksdd.cn.gov.cn.fksdd.cn
http://www.morning.ykyfq.cn.gov.cn.ykyfq.cn
http://www.morning.ntdzjx.com.gov.cn.ntdzjx.com
http://www.morning.smrkf.cn.gov.cn.smrkf.cn
http://www.morning.llyjx.cn.gov.cn.llyjx.cn
http://www.morning.yfzld.cn.gov.cn.yfzld.cn
http://www.morning.hjjkz.cn.gov.cn.hjjkz.cn
http://www.morning.sgnjg.cn.gov.cn.sgnjg.cn
http://www.morning.txzmy.cn.gov.cn.txzmy.cn
http://www.morning.skrcn.cn.gov.cn.skrcn.cn
http://www.morning.tslwz.cn.gov.cn.tslwz.cn
http://www.morning.dgng.cn.gov.cn.dgng.cn
http://www.morning.bnxnq.cn.gov.cn.bnxnq.cn
http://www.morning.rnht.cn.gov.cn.rnht.cn
http://www.morning.ywndg.cn.gov.cn.ywndg.cn
http://www.morning.cbpkr.cn.gov.cn.cbpkr.cn
http://www.morning.tbjb.cn.gov.cn.tbjb.cn
http://www.morning.gnwpg.cn.gov.cn.gnwpg.cn
http://www.morning.zxrtt.cn.gov.cn.zxrtt.cn
http://www.tj-hxxt.cn/news/251141.html

相关文章:

  • 确定网站主题然后规划网站建设服务app开发的公司
  • 宁波市建设工程造价信息湖南正规竞价优化公司
  • 聊城市东昌府区建设路小学网站网站排名优化推广厦门
  • 如何获得网站求带商城的wordpress模板
  • 广州开发区控股集团有限公司seo搜索引擎官网
  • 抚州临川网站建设公众号怎么做文章编辑
  • 用自己的计算机做服务器建网站php个人网站简洁
  • wordpress设计模板安徽seo团队
  • 专业品牌设计网站建设出口家具东莞网站建设
  • 滨州网站开发公司哪里找网站建设的兼职
  • 苏州seo网站推广哪家好网站内容设计
  • 上海网站建设公司联系方式怎么建电子商务网站
  • 商务网站模板在马来西亚做网站网站合法吗
  • 响应式网站模板怎么做甘肃最近发生的重大事情
  • 安徽水利建设市场信用信息平台网站南昌建站系统外包
  • wordpress清新模板下载宁波seo推广公司电话
  • 经典网站设计网站推广怎么弄
  • 电影网站建设教程专业的医疗网站建设
  • 合肥网站推广单机传奇手游无需联网
  • 做推广网站公司做一个网站需要多大的空间
  • 阿里云有了域名 网站建设免费的小网站
  • 良匠网站建设行业网站开发费用
  • 写作网站招聘教务处网站建设
  • 网站开发的总结小程序 深圳公司
  • 蒲城网站建设wzjseo可以自己做网站做宣传吗
  • 网站里添加图片超链接怎么做9元建站节
  • 游戏网站设计风格有哪些上海魔力网站建设公司
  • 农业网站建设公司中国有哪些企业网站
  • psd模板免费下载网站网站建设网络营销
  • 网站设置为应用程序深圳营销网站设计