asp网站怎么做三语,丛台企业做网站推广,如何创建网站的快捷方式到桌面,苏州建设招投标网站目录
一、理论
1.Pod控制器
2.Deployment 控制器
3.SatefulSet 控制器
4.DaemonSet 控制器
5.Job 控制器
6.CronJob 控制器
二、实验
1.Deployment 控制器
2.SatefulSet 控制器
3.DaemonSet 控制器
4.Job 控制器
5.CronJob 控制器
三、问题
1. showmount -e 报错…目录
一、理论
1.Pod控制器
2.Deployment 控制器
3.SatefulSet 控制器
4.DaemonSet 控制器
5.Job 控制器
6.CronJob 控制器
二、实验
1.Deployment 控制器
2.SatefulSet 控制器
3.DaemonSet 控制器
4.Job 控制器
5.CronJob 控制器
三、问题
1. showmount -e 报错
2.主机重启后pod报错Error
四、总结 一、理论
1.Pod控制器
1概念
Pod控制器又称之为工作负载workload是用于实现管理pod的中间层确保pod资源符合预期的状态pod的资源出现故障时会尝试进行重启当根据重启策略无效则会重新新建pod的资源。 2类型
①ReplicaSet:
代用户创建指定数量的pod副本确保pod副本数量符合预期状态并且支持滚动式自动扩容和缩容功能。 ReplicaSet主要三个组件组成
1用户期望的pod副本数量
2标签选择器判断哪个pod归自己管理
3当现存的pod数量不足会根据pod资源模板进行新建
帮助用户管理无状态的pod资源精确反应用户定义的目标数量但是RelicaSet不是直接使用的控制器而是使用Deployment。
②Deployment
工作在ReplicaSet之上用于管理无状态应用目前来说最好的控制器。支持滚动更新和回滚功能还提供声明式配置。 ReplicaSet 与Deployment 这两个资源对象逐步替换之前RC的作用。
③DaemonSet
用于确保集群中的每一个节点只运行特定的pod副本通常用于实现系统级后台任务。比如ELK服务 特性服务是无状态的 服务必须是守护进程
④ StatefulSet管理有状态应用
⑤ Job
只要完成就立即退出不需要重启或重建
⑥ Cronjob
周期性任务控制不需要持续后台运行
3 pod容器中的有状态和无状态的区别
1有状态实例
实例之间有差别每个实例都有自己的独特性元数据不同例如etcdzookeeper
实例之间不对等的关系以及依靠外部存储的应用2无状态实例
deployment认为所有的pod都是一样的
不用考虑顺序的要求
不用考虑在哪个node节点上运行
可以随意扩容和缩容
2.Deployment 控制器
1概念
部署无状态应用 管理Pod和ReplicaSet 具有上线部署、副本设定、滚动升级、回滚等功能 提供声明式更新例如只更新一个新的image 应用场景web服务
vim nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.15.4ports:- containerPort: 80kubectl create -f nginx-deployment.yamlkubectl get pods,deploy,rs3.SatefulSet 控制器
1概念
StatefulSet 是用来管理有状态应用的工作负载 API 对象。
StatefulSet 用来管理某 Pod 集合的部署和扩缩 并为这些 Pod 提供持久存储和持久标识符。
和 Deployment 类似 StatefulSet 管理基于相同容器规约的一组 Pod。但和 Deployment 不同的是 StatefulSet 为它们的每个 Pod 维护了一个有粘性的 ID。这些 Pod 是基于相同的规约来创建的 但是不能相互替换无论怎么调度每个 Pod 都有一个永久不变的 ID。
如果希望使用存储卷为工作负载提供持久存储可以使用 StatefulSet 作为解决方案的一部分。 尽管 StatefulSet 中的单个 Pod 仍可能出现故障 但持久的 Pod 标识符使得将现有卷与替换已失败 Pod 的新 Pod 相匹配变得更加容易。
如果希望使用存储卷为工作负载提供持久存储可以使用 StatefulSet 作为解决方案的一部分。 尽管 StatefulSet 中的单个 Pod 仍可能出现故障 但持久的 Pod 标识符使得将现有卷与替换已失败 Pod 的新 Pod 相匹配变得更加容易。 tatefulSet 对于需要满足以下一个或多个需求的应用程序很有价值
稳定的、唯一的网络标识符。
稳定的、持久的存储。
有序的、优雅的部署和扩缩。
有序的、自动的滚动更新。
在上面描述中“稳定的”意味着 Pod 调度或重调度的整个过程是有持久性的。 如果应用程序不需要任何稳定的标识符或有序的部署、删除或扩缩 则应该使用由一组无状态的副本控制器提供的工作负载来部署应用程序比如 Deployment 或者 ReplicaSet可能更适用于你的无状态应用部署需要。
//名为 svc-demo 的 Headless Service 用来控制网络域名
kubectl create svc clusterip svc-demo --tcp80:80 --dry-runclient -oyaml svc-demo.yaml
vim svc-demo.yamlapiVersion: v1
kind: Service
metadata:creationTimestamp: nulllabels:app: svc-demoname: svc-demo
spec:ports:- name: httpport: 80protocol: TCPtargetPort: 80selector:app: sts-demo //拥有此标签的pod 都有此servicetype: ClusterIPclusterIP: None //无头服务的clusterIp为None//名为 myapp-demo 的 StatefulSet 有一个 Spec它表明将在独立的4个 Pod 副本中启动容器
vim stateful-demo.yaml apiVersion: apps/v1
kind: StatefulSet
metadata:labels:app: myapp-demoname: myapp-demo
spec:serviceName: svc-demoreplicas: 4selector:matchLabels:app: sts-demotemplate:metadata:labels:app: sts-demospec:containers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80volumeClaimTemplates:- metadata:name: pvc-demospec:accessModes:- ReadWriteOnceresources:requests:storage: 2GistorageClassName: nfs-client-storageclass 2组成
●Headless Service无头服务用于为Pod资源标识符生成可解析的DNS记录。
●volumeClaimTemplates存储卷申请模板基于静态或动态PV供给方式为Pod资源提供专有的固定存储。
●StatefulSet用于管控Pod资源。
3headless
在deployment中每一个pod是没有名称是随机字符串是无序的。而statefulset中是要求有序的每一个pod的名称必须是固定的。当节点挂了重建之后的标识符是不变的每一个节点的节点名称是不能改变的。pod名称是作为pod识别的唯一标识符必须保证其标识符的稳定并且唯一。 为了实现标识符的稳定这时候就需要一个headless service 解析直达到pod还需要给pod配置一个唯一的名称。
4volumeClaimTemplate
大部分有状态副本集都会用到持久存储比如分布式系统来说由于数据是不一样的每个节点都需要自己专用的存储节点。而在 deployment中pod模板中创建的存储卷是一个共享的存储卷多个pod使用同一个存储卷而statefulset定义中的每一个pod都不能使用同一个存储卷由此基于pod模板创建pod是不适应的这就需要引入volumeClaimTemplate当在使用statefulset创建pod时会自动生成一个PVC从而请求绑定一个PV从而有自己专用的存储卷。
服务发现就是应用服务之间相互定位的过程。 应用场景
●动态性强Pod会飘到别的node节点
●更新发布频繁互联网思维小步快跑先实现再优化老板永远是先上线再慢慢优化先把idea变成产品挣到钱然后再慢慢一点一点优化
●支持自动伸缩一来大促肯定是要扩容多个副本
K8S里服务发现的方式—DNS使K8S集群能够自动关联Service资源的“名称”和“CLUSTER-IP”从而达到服务被集群自动发现的目的。
(5) 测试域名解析
kubectl get pods -A
kubectl delete pods coredns-54d67798b7-rl5wc -n kube-system
kubectl delete pods coredns-54d67798b7-qbvr5 -n kube-system #进入容器
kubectl exec -it myapp-demo-0 sh#查看域名解析
[rootmaster ~]# kubectl exec -it myapp-demo-0 sh
/ # nslookup kubernetes
nslookup: cant resolve (null): Name does not resolveName: kubernetes
Address 1: 10.1.0.1 kubernetes.default.svc.cluster.local
/ # nslookup myapp-demo-0.svc-demo.default.svc.cluster.local
nslookup: cant resolve (null): Name does not resolveName: myapp-demo-0.svc-demo.default.svc.cluster.local
Address 1: 10.244.1.91 myapp-demo-0.svc-demo.default.svc.cluster.local
/ # nslookup myapp-demo-1.svc-demo.default.svc.cluster.local
nslookup: cant resolve (null): Name does not resolveName: myapp-demo-1.svc-demo.default.svc.cluster.local
Address 1: 10.244.2.103 myapp-demo-1.svc-demo.default.svc.cluster.local
/ # nslookup myapp-demo-2.svc-demo.default.svc.cluster.local
nslookup: cant resolve (null): Name does not resolveName: myapp-demo-2.svc-demo.default.svc.cluster.local
Address 1: 10.244.1.92 myapp-demo-2.svc-demo.default.svc.cluster.local
/ # nslookup myapp-demo-3.svc-demo.default.svc.cluster.local
nslookup: cant resolve (null): Name does not resolveName: myapp-demo-3.svc-demo.default.svc.cluster.local
Address 1: 10.244.2.104 myapp-demo-3.svc-demo.default.svc.cluster.local
/ # exit#查看解析到创建的Pod
kubectl get pods -o wide#删除Pod重新创建Pod名字不会改变
kubectl delete pod myapp-demo-0
容器内挂载实现数据持久化
#先删除之前资源
kubectl delete statefulsets.apps myapp-demo vim stateful.yaml apiVersion: apps/v1
kind: StatefulSet
metadata:labels:app: myapp-demoname: myapp-demo
spec:serviceName: svc-demoreplicas: 4selector:matchLabels:app: sts-demotemplate:metadata:labels:app: sts-demospec:containers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80volumeMounts:- name: pvc-demomountPath: /datavolumeClaimTemplates:- metadata:name: pvc-demospec:accessModes:- ReadWriteOnceresources:requests:storage: 2GistorageClassName: nfs-client-storageclass#生成资源
kubectl apply -f stateful.yaml#进入容器
kubectl exec -it myapp-demo-1 sh
cd /data
echo this is demo index.html
ls
cat index.html
exit#查看
kubectl get pv,pvc#nfs查看
systemctl start nfs
cd /opt/k8s/
ls
default-pvc-demo-myapp-demo-0-pvc-d9994ad6-f461-4b66-9d13-5db3be732755
default-pvc-demo-myapp-demo-1-pvc-0ff7f3d0-7e47-43b3-8009-d4a23b01cd2b
default-pvc-demo-myapp-demo-2-pvc-985e10d4-9b24-4bc0-aa27-8bb6dc1768a8
default-pvc-demo-myapp-demo-3-pvc-d3c6c4fb-07cb-457e-ad23-88f31c1e92bf
default-test-nfs-pvc-pvc-363a53a3-b73a-437e-a9a5-02f661c5cc53cd default-pvc-demo-myapp-demo-1-pvc-0ff7f3d0-7e47-43b3-8009-d4a23b01cd2b
cat index.html#master操作,删除pod,查看数据是否持久化
kubectl get pods -o wide
kubectl delete pod myapp-demo-1
kubectl get pods -o wide#进入容器
kubectl exec -it myapp-demo-1 sh
cd /data
ls
cat index.html
exit
解析上例由于 StatefulSet 资源依赖于一个实现存在的 Headless 类型的 Service 资源所以需要先定义一个名为 svc-demo 的 Headless Service 资源用于为关联到每个 Pod 资源创建 DNS 资源记录。接着定义了一个名为 myapp 的 StatefulSet 资源它通过 Pod 模板创建了 4 个 Pod 资源副本并基于 volumeClaimTemplates 向前面创建的PV进行了请求大小为 2Gi 的专用存储卷。
6 滚动更新
StatefulSet 控制器将在 StatefulSet 中删除并重新创建每个 Pod。它将以与 Pod 终止相同的顺序进行从最大的序数到最小的序数每次更新一个 Pod。在更新其前身之前它将等待正在更新的 Pod 状态变成正在运行并就绪。 kubectl edit statefulsets.apps myapp-demo kubectl get pods -w //查看滚动更新的过程7扩容及缩容
kubectl scale statefulset myapp-demo --replicas6kubectl scale statefulset myapp-demo --replicas3扩展伸缩
kubectl scale sts myapp --replicas4 //扩容副本增加到4个kubectl get pods -w //动态查看扩容kubectl get pv //查看pv绑定kubectl patch sts myapp -p {spec:{replicas:2}} //打补丁方式缩容kubectl get pods -w //动态查看缩容当删除一个 StatefulSet 时该 StatefulSet 不提供任何终止 Pod 的保证。为了实现 StatefulSet 中的 Pod 可以有序且体面地终止可以在删除之前将 StatefulSet 缩容到 0。
示例
kubectl scale statefulset myapp-demo --replicas0
kubectl delete -f stateful.yaml 4.DaemonSet 控制器
1概念
DaemonSet 确保全部或者一些Node 上运行一个 Pod 的副本。当有 Node 加入集群时也会为他们新增一个 Pod
。当有 Node 从集群移除时这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。使用 DaemonSet 的一些典型用法
●运行集群存储 daemon例如在每个 Node 上运行 glusterd、ceph。
●在每个 Node 上运行日志收集 daemon例如fluentd、logstash。
●在每个 Node 上运行监控 daemon例如 Prometheus Node Exporter、collectd、Datadog 代理、New Relic 代理或 Ganglia gmond。
应用场景Agent官方案例监控
示例
vim daemon-demo.yamlapiVersion: apps/v1
kind: DaemonSet
metadata:labels:app: myapp-dsname: myapp-ds
spec:selector:matchLabels:app: myapp-dstemplate:metadata:labels:app: myapp-dsspec:containers:- image: soscscs/myapp:v1name: myappports:- containerPort: 80tolerations:- key: node-role.kubernetes.io/masteroperator: Existseffect: NoSchedulekubectl apply -f daemon-demo.yaml
kubectl get pods -o wide 5.Job 控制器
1概念
Job分为普通任务Job和定时任务CronJob 常用于运行那些仅需要执行一次的任务 应用场景数据库迁移、批处理脚本、kube-bench扫描、离线数据处理视频解码等业务
Jobs | Kubernetes
vim job-demo.yamlapiVersion: batch/v1
kind: Job
metadata:name: myapp-job
spec:template:spec:containers:- name: myappimage: soscscs/myapp:v1command: [/bin/sh,-c,echo david like running ; sleep 10; date; exit 0]restartPolicy: NeverbackoffLimit: 4kubectl describe pods myapp-job-gnk6ckubectl logs myapp-job-gnk6c kubectl get pods -o widekubectl get podskubectl get jobskubectl describe jobs myapp-job
修改为非正常退出 exit 1
vim job-demo.yamlapiVersion: batch/v1
kind: Job
metadata:name: myapp-job
spec:template:spec:containers:- name: myappimage: soscscs/myapp:v1command: [/bin/sh,-c,echo david like running ; sleep 10; date; exit 1]restartPolicy: NeverbackoffLimit: 4kubectl get pods -o wide -w
6.CronJob 控制器
1概念
周期性任务像Linux的Crontab一样。 周期性任务 应用场景通知备份
Running Automated Tasks with a CronJob | Kubernetes
2参数配置
spec:
concurrencyPolicy: Allow #声明了 CronJob 创建的任务执行时发生重叠如何处理并发性规则仅适用于相同 CronJob 创建的任务。spec仅能声明下列规则中的一种:
●Allow (默认)CronJob 允许并发任务执行。
●ForbidCronJob 不允许并发任务执行如果新任务的执行时间到了而老任务没有执行完CronJob 会忽略新任务的执行。
●Replace如果新任务的执行时间到了而老任务没有执行完CronJob 会用新任务替换当前正在运行的任务。
startingDeadlineSeconds: 15 #它表示任务如果由于某种原因错过了调度时间开始该任务的截止时间的秒数。过了截止时间CronJob 就不会开始任务且标记失败.如果此字段未设置那任务就没有最后期限。
successfulJobsHistoryLimit: 3 #要保留的成功完成的任务数默认为3
failedJobsHistoryLimit1 #要保留多少已完成和失败的任务数默认为1
suspendtrue #如果设置为 true 后续发生的执行都会被挂起。 这个设置对已经开始的执行不起作用。默认是 false。
schedule: */1 * * * * #必需字段作业时间表。在此示例中作业将每分钟运行一次
jobTemplate: #必需字段作业模板。这类似于工作示例vim cronjob-demo.yamlapiVersion: batch/v1beta1
kind: CronJob
metadata:name: hello
spec:schedule: */1 * * * *jobTemplate:spec:template:spec:containers:- name: helloimage: busyboximagePullPolicy: IfNotPresentargs:- /bin/sh- -c- date; echo Hello from the Kubernetes clusterrestartPolicy: OnFailurekubectl apply -f cronjob.demo.yamlkubectl get pods -o wide kubectl get pods -o wide -wkubectl logs hello- 二、实验
1.Deployment 控制器
(1) 编写资源清单文件 2生成资源 3查看 删除资源 已删除 2.SatefulSet 控制器
1创建名为 svc-demo 的 Headless Service 用来控制网络域名 生成资源并查看 2创建名为 myapp-demo 的 StatefulSet 有一个 Spec它表明将在独立的4个 Pod 副本中启动容器 生成资源 观察pod创建过程 查看信息 查看NFS新生成了4个pv (3) 测试域名解析
查看coredns 删除coredns 进入容器查看域名解析显示各pod的新IP地址 解析到创建的Pod 删除Pod重新创建Pod名字不会改变 重新生成 生成 删除之前的资源 容器内挂载 生成资源 查看 进入容器 查看 nfs查看 nfs服务器实现共享存储 master操作,删除pod,查看数据是否存在 数据依然存在 解析上例由于 StatefulSet 资源依赖于一个实现存在的 Headless 类型的 Service 资源所以需要先定义一个名为 svc-demo 的 Headless Service 资源用于为关联到每个 Pod 资源创建 DNS 资源记录。接着定义了一个名为 myapp 的 StatefulSet 资源它通过 Pod 模板创建了 4 个 Pod 资源副本并基于 volumeClaimTemplates 向前面创建的PV进行了请求大小为 2Gi 的专用存储卷。
4 滚动更新
StatefulSet 控制器将在 StatefulSet 中删除并重新创建每个 Pod。它将以与 Pod 终止相同的顺序进行从最大的序数到最小的序数每次更新一个 Pod。在更新其前身之前它将等待正在更新的 Pod 状态变成正在运行并就绪。 kubectl edit statefulsets.apps myapp-demo kubectl get pods -w //查看滚动更新的过程5扩容及缩容
扩容从小到大依次有序创建 缩容从大到小依次删除 当删除一个 StatefulSet 时该 StatefulSet 不提供任何终止 Pod 的保证。为了实现 StatefulSet 中的 Pod 可以有序且体面地终止可以在删除之前将 StatefulSet 缩容到 0。
先将 StatefulSet 缩容到 0 然后删除一个 StatefulSet 3.DaemonSet 控制器
1创建资源清单 master因为有污点所以无法创建如果创建需要设置容忍 2生成资源并查看 daemonset没有副本的概念它会在每个节点创建pod
删除减少资源占用 4.Job 控制器
(1) 创建资源清单 2生成资源 3查看
10s后容器正常退出 查看详细信息 查看日志 4修改为非正常退出 直接生成会报错需要先删除 因为backoffLimit设置了4次重启加上创建的一次一共五次 查看 查看详细信息
重启了4次叨叨了设置backofflimit的次数不再重启 删除减少资源占用 5.CronJob 控制器
1创建资源清单 2生成资源 3查看信息 4查看日志每隔一分钟生成一次 5删除减少资源占用 三、问题
1. showmount -e 报错
1报错 (2)原因分析
服务器防火墙导致
3解决方法
关闭安全机制
#永久关闭需要重启后生效
[rootstor01 k8s]# sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config#临时关闭
[rootstor01 k8s]# systemctl stop firewalld
[rootstor01 k8s]# setenforce 0
setenforce: SELinux is disabled[rootstor01 k8s]# getenforce
Disabled#在服务器上先停止rpcbind
systemctl stop rpcbind#然后在停止nfs
systemctl stop nfs#最后在重启rpcbind和nfs一定要按顺序启动和停止
systemctl start rpcbind
systemctl start nfs 成功 2.主机重启后pod报错Error
(1)报错 2原因分析 显示NFS挂载失败 3解决方法
重启rpcbind和nfs一定要按顺序启动和停止 然后删除pod,重新生成资源 测试数据是否挂载NFS成功 NFS查看显示test2文件 四、总结
常规service和无头服务区别
service一组Pod访问策略提供cluster-IP群集之间通讯还提供负载均衡和服务发现。
Headless service无头服务不需要cluster-IP而是直接以DNS记录的方式解析出被代理Pod的IP地址。注意使用普通的 service 也可以解析出被代理Pod的IP地址
job的重启策略要么 Never 要么 OnFailure 绝对不能为 Always
常用控制器
1 Deployment
1部署无状态应用
2创建和管理 ReplicaSet 和 Pod 资源并维护Pod副本数量与期望值相同
3创建和删除Pod是并行执行的升级策略默认为滚动更新的方式2 StatefulSet
1部署有状态应用
2每个Pod的名称都是唯一且固定不变的
3每个Pod都可以有自己专属的持久化存储基于PVC模板volumeClaimTemplates绑定PV实现的
4需要提前创建并关联一个Headless Service资源ClusterIP可以为None在K8S集群内部的Pod应用可以通过 pod_name.svc_name.namespace_name.svc.cluster.local 格式解析出 PodIP基于无头服务Headless Service和CoreDNS实现的
5创建、滚动升级、扩容、缩容Pod都是有序进行的默认为串行执行的podManagementPolicy: OrderedReady(默认)|Parallel
创建、扩容是升序执行的顺序为Pod标识号从0到n-1
滚动升级、缩容是倒序执行的顺序为Pod标识号从n-1到0Service资源的类型 41
ClusterIP NodePort LoadBalancer ExternalName Headless Service3 DaemonSet
1理论上可以在K8S所有Node节点上创建相同的Pod资源无论Node节点什么时候加入到K8S集群
2调度时会受到Node节点上的污点或者节点设置了cordon不可调度的影响而不会在上述的Node节点中创建Pod
设置容忍 kubectl node xxx uncordon
3资源清单配置中不需要设置副本数 replicas4 Job
1部署一次性短期任务的资源Pod不会持久运行
2任务正常完成后Pod容器会正常退出并不会再重启restartPolicy通常设置为Nerver或OnFailure且也不会重建Pod
3如果任务执行异常导致Pod容器异常退出会重建Pod重试任务重试次数受 backoffLimit 配置影响默认为任务失败后重试 6 次5 CronJob
1部署周期性短期任务的资源Pod不会持久运行
2任务正常完成后Pod容器会正常退出并不会再重启restartPolicy通常设置为Nerver或OnFailure且也不会重建Pod
3使用必配字段 schedule 设置任务执行的周期表格式为 分 时 日 月 周volumeClaimTemplate:
当在使用statefulset创建pod时会自动生成一个PVC从而请求绑定一个PV从而有自己专用的存储卷。 文章转载自: http://www.morning.xpqdf.cn.gov.cn.xpqdf.cn http://www.morning.rgwz.cn.gov.cn.rgwz.cn http://www.morning.gbkkt.cn.gov.cn.gbkkt.cn http://www.morning.njddz.cn.gov.cn.njddz.cn http://www.morning.xltdh.cn.gov.cn.xltdh.cn http://www.morning.ahlart.com.gov.cn.ahlart.com http://www.morning.tssmk.cn.gov.cn.tssmk.cn http://www.morning.bpmtl.cn.gov.cn.bpmtl.cn http://www.morning.hmqmm.cn.gov.cn.hmqmm.cn http://www.morning.rjynd.cn.gov.cn.rjynd.cn http://www.morning.cpljq.cn.gov.cn.cpljq.cn http://www.morning.qgmbx.cn.gov.cn.qgmbx.cn http://www.morning.xpzkr.cn.gov.cn.xpzkr.cn http://www.morning.qckwj.cn.gov.cn.qckwj.cn http://www.morning.lgsqy.cn.gov.cn.lgsqy.cn http://www.morning.dongyinet.cn.gov.cn.dongyinet.cn http://www.morning.zdmlt.cn.gov.cn.zdmlt.cn http://www.morning.xnkh.cn.gov.cn.xnkh.cn http://www.morning.cjsrg.cn.gov.cn.cjsrg.cn http://www.morning.cjqcx.cn.gov.cn.cjqcx.cn http://www.morning.pdwny.cn.gov.cn.pdwny.cn http://www.morning.mcpby.cn.gov.cn.mcpby.cn http://www.morning.ngqdp.cn.gov.cn.ngqdp.cn http://www.morning.rgzc.cn.gov.cn.rgzc.cn http://www.morning.rpzth.cn.gov.cn.rpzth.cn http://www.morning.lbggk.cn.gov.cn.lbggk.cn http://www.morning.cnqdn.cn.gov.cn.cnqdn.cn http://www.morning.wpsfc.cn.gov.cn.wpsfc.cn http://www.morning.qwgct.cn.gov.cn.qwgct.cn http://www.morning.xfdkh.cn.gov.cn.xfdkh.cn http://www.morning.xrpwk.cn.gov.cn.xrpwk.cn http://www.morning.wjyyg.cn.gov.cn.wjyyg.cn http://www.morning.rqgbd.cn.gov.cn.rqgbd.cn http://www.morning.skrcn.cn.gov.cn.skrcn.cn http://www.morning.sqyjh.cn.gov.cn.sqyjh.cn http://www.morning.pqxjq.cn.gov.cn.pqxjq.cn http://www.morning.btqrz.cn.gov.cn.btqrz.cn http://www.morning.qjlnh.cn.gov.cn.qjlnh.cn http://www.morning.qkgwx.cn.gov.cn.qkgwx.cn http://www.morning.dhbyj.cn.gov.cn.dhbyj.cn http://www.morning.zrmxp.cn.gov.cn.zrmxp.cn http://www.morning.dgmjm.cn.gov.cn.dgmjm.cn http://www.morning.jkftn.cn.gov.cn.jkftn.cn http://www.morning.fwjfh.cn.gov.cn.fwjfh.cn http://www.morning.nzwp.cn.gov.cn.nzwp.cn http://www.morning.lmbm.cn.gov.cn.lmbm.cn http://www.morning.ywndg.cn.gov.cn.ywndg.cn http://www.morning.nssjy.cn.gov.cn.nssjy.cn http://www.morning.lyjwb.cn.gov.cn.lyjwb.cn http://www.morning.zxqyd.cn.gov.cn.zxqyd.cn http://www.morning.rycd.cn.gov.cn.rycd.cn http://www.morning.fstesen.com.gov.cn.fstesen.com http://www.morning.nchlk.cn.gov.cn.nchlk.cn http://www.morning.yqmmh.cn.gov.cn.yqmmh.cn http://www.morning.kdlzz.cn.gov.cn.kdlzz.cn http://www.morning.xjqhh.cn.gov.cn.xjqhh.cn http://www.morning.cbpmq.cn.gov.cn.cbpmq.cn http://www.morning.sypzg.cn.gov.cn.sypzg.cn http://www.morning.dfkmz.cn.gov.cn.dfkmz.cn http://www.morning.lmctj.cn.gov.cn.lmctj.cn http://www.morning.phzrq.cn.gov.cn.phzrq.cn http://www.morning.qnbgk.cn.gov.cn.qnbgk.cn http://www.morning.dygqq.cn.gov.cn.dygqq.cn http://www.morning.lqypx.cn.gov.cn.lqypx.cn http://www.morning.bqrd.cn.gov.cn.bqrd.cn http://www.morning.kbynw.cn.gov.cn.kbynw.cn http://www.morning.xbbrh.cn.gov.cn.xbbrh.cn http://www.morning.zhishizf.cn.gov.cn.zhishizf.cn http://www.morning.yhywx.cn.gov.cn.yhywx.cn http://www.morning.npbnc.cn.gov.cn.npbnc.cn http://www.morning.kryr.cn.gov.cn.kryr.cn http://www.morning.zmyzt.cn.gov.cn.zmyzt.cn http://www.morning.kcbml.cn.gov.cn.kcbml.cn http://www.morning.dkzwx.cn.gov.cn.dkzwx.cn http://www.morning.rrbhy.cn.gov.cn.rrbhy.cn http://www.morning.krtky.cn.gov.cn.krtky.cn http://www.morning.cxtbh.cn.gov.cn.cxtbh.cn http://www.morning.rfpxq.cn.gov.cn.rfpxq.cn http://www.morning.nmrtb.cn.gov.cn.nmrtb.cn http://www.morning.gnfkl.cn.gov.cn.gnfkl.cn