顺企网哈尔滨网站建设,青岛网站商城设计,上海软件外包公司排名,淘宝网站详情页怎么做1. 身份认证 我们在目前的k8s集群环境里面#xff0c;只能在master节点上执行kubectl的一些命令#xff0c;在其他节点上执行就会报错 # 看一下是不是
[rootnode1 ~]# kubectl get nodes
E0220 12:50:15.695133 6091 memcache.go:238] couldnt get current server API gro…1. 身份认证 我们在目前的k8s集群环境里面只能在master节点上执行kubectl的一些命令在其他节点上执行就会报错 # 看一下是不是
[rootnode1 ~]# kubectl get nodes
E0220 12:50:15.695133 6091 memcache.go:238] couldnt get current server API group list: Get http://localhost:8080/api?timeout32s: dial tcp [::1]:8080: connect: connection refused
E0220 12:50:15.695771 6091 memcache.go:238] couldnt get current server API group list: Get http://localhost:8080/api?timeout32s: dial tcp [::1]:8080: connect: connection refused
E0220 12:50:15.697555 6091 memcache.go:238] couldnt get current server API group list: Get http://localhost:8080/api?timeout32s: dial tcp [::1]:8080: connect: connection refused
E0220 12:50:15.699191 6091 memcache.go:238] couldnt get current server API group list: Get http://localhost:8080/api?timeout32s: dial tcp [::1]:8080: connect: connection refused
E0220 12:50:15.700655 6091 memcache.go:238] couldnt get current server API group list: Get http://localhost:8080/api?timeout32s: dial tcp [::1]:8080: connect: connection refused
The connection to the server localhost:8080 was refused - did you specify the right host or port?我们可以看到在node1上执行kubectl get nodes都会报错那就更不谈创建pod之类的操作了那为什么master可以而其他节点不行呢这是因为在master节点上是有一个kubeconfig的 [rootmaster ~]# env |grep -i kubeconfig
KUBECONFIG/etc/kubernetes/admin.conf我们可以看到在master节点上是有一个环境变量加载了这个admin.conf这个文件的这个文件就是k8s集群默认的管理员文件换一种说法只要你有本事偷走这个文件并且保障你的网络跟这个集群的网络是通的那么恭喜你得到了一个k8s集群 node节点操作 我们现在来将这个admin.conf传到node1上再来看看node1能不能去执行命令 # 传文件
[rootmaster ~]# scp /etc/kubernetes/admin.conf node1:~
admin.conf 100% 5669 6.2MB/s 00:00
# 在node1上执行命令看看效果
[rootnode1 ~]# kubectl get node --kubeconfigadmin.conf
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 43d v1.26.0
node1 Ready node1 43d v1.26.0
node2 Ready node2 43d v1.26.0 我们通过这个小实验看到node1节点确实是可以获取到节点信息了但是他执行的命令跟master上有所不同在node1上执行的时候他是需要执行配置文件的如果你不想执行的话可以将这个注册到环境变量里面 [rootnode1 ~]# echo export KUBECONFIG/root/admin.conf /etc/profile
[rootnode1 ~]# tail -1 /etc/profile
export KUBECONFIG/root/admin.conf只需要这样就好了 但是这样存在一个问题他们用的都是管理员的配置文件那么就相当于他们都是管理员对集群有全部权限我们追求是的最小权限原则就是我给你的权限正好能够让你完成属于你自己的任务多的权限不应该有那么我们能不能像Linux一样创建普通用户给普通用户定制权限呢当然是可以的 创建普通用户并授权 我们现在来创建一个普通用户zhangsan并授权 1. 生成私钥 # 使用openssl生成一个rsa类型的私钥私钥文件名是client.key 2048位
[rootmaster ca]# openssl genrsa -out client.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
........................
...............................................................................................................................................................................................................................................
e is 65537 (0x010001)
[rootmaster ca]# ls
client.key2. 生成zhangsan用户证书请求文件 # 使用client.key 生成一个新的文件叫做client.csr
[rootmaster ca]# openssl req -new -key client.key -subj /CNzhangsan -out client.csr
[rootmaster ca]# ls
client.csr client.key 3. 为zhangsan用户颁发证书 zhangsan用户如何将请求发送给k8s的ca进行证书颁发呢这个时候我们可以使用k8s自带的ca来颁发证书 # k8s的ca在/etc/kubernetes/pki下
[rootmaster ca]# openssl x509 -req -in client.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out client.crt -days 3650
Signature ok
subjectCN zhangsan
Getting CA Private Key
# 拷贝ca到当前目录
[rootmaster ca]# cp /etc/kubernetes/pki/ca.crt .
[rootmaster ca]# ls
ca.crt client.crt client.csr client.key 4. 创建命名空间及pod [rootmaster ca]# kubectl create ns zhangsan
namespace/zhangsan created
# 切到这个命名空间
[rootmaster ca]# kubectl config set-context --current --namespace zhangsan
Context kubernetes-adminkubernetes modified.
# 创建一个pod
[rootmaster ca]# kubectl run test01 --image nginx --image-pull-policy IfNotPresent
pod/test01 created
[rootmaster ca]# kubectl get pods
NAME READY STATUS RESTARTS AGE
test01 1/1 Running 0 13s 5. 创建角色
角色是什么呢我们可以这样想假如我们现在有增删改查4个权限用户用张三李四王五那我们现在给他们授权的话只能是一个权限一个权限的去给万一后面又新增了用户我们依旧是一个个去指定过于麻烦而角色就是介于权限与用户之间的一个模板就像这样我们指定了一个角色是管理员拥有增删改查4个权限一个是开发的角色拥有增改查的权限一个是普通用户角色只有查的权限我们指定好这3个模板之后后面新来的用户只需要知道他的作用是什么比如他就是一个普通用户那我们直接把这个模板给他套上那他就只有查的权限来了一个开发者那我们就给他开发的这个角色模板他就自然而然的拥有增改查的权限
# 这里的pod-reader是role的名字 后面的--verb就是这个角色所包含哪些权限并且这个角色所能操作的资源对象仅仅只有pod
[rootmaster ca]# kubectl create role pod-reader --verbget --verblist --verbwatch --resourcepods
role.rbac.authorization.k8s.io/pod-reader created6. 绑定角色给用户 # 创建一个rolebinding名字叫zhangsan这个zhangsan并不是用户张三而是这个rolebinding的名字后面--user这个才是用户张三
[rootmaster ca]# kubectl create rolebinding zhangsan --role pod-reader --user zhangsan
rolebinding.rbac.authorization.k8s.io/zhangsan created
[rootmaster ca]# kubectl get rolebindings.rbac.authorization.k8s.io
NAME ROLE AGE
zhangsan Role/pod-reader 4s7. 编辑kubeconfig文件 关于这个文件的框架我们可以到官网去找到 地址 使用 kubeconfig 文件组织集群访问 | Kubernetes在官网找到之后我们只需要做一些修改就行,改成这样就可以直接复制这个去改也行 apiVersion: v1
kind: Configclusters:
- cluster:name: cluster-zsusers:
- name: zhangsancontexts:
- context:name: context-zsnamespace: zhangsan
current-context: context-zs 这个文件就写好了但是目前来看他与管理员的那个admin.conf好像不一样那个文件里面内容很多这个很少这是因为我们还没有将刚刚创建出来的那些密钥文件嵌入进去 8. 嵌入密钥文件 # 1. 嵌入ca文件
# set-cluster与刚刚文件里的一样就好了 server地址就是master的ip加上6443端口
[rootmaster ca]# kubectl config --kubeconfigkube-zhangsan set-cluster cluster-zs --serverhttps://192.168.200.200:6443 --certificate-authorityca.crt --embed-certstrue
Cluster cluster-zs set.
# 2. 嵌入client
[rootmaster ca]# kubectl config --kubeconfigkube-zhangsan set-credentials zhangsan --client-certificateclient.crt --client-keyclient.key --embed-certstrue
User zhangsan set.
# 3. 设置上下文信息
[rootmaster ca]# kubectl config --kubeconfigkube-zhangsan set-context context-zs --clustercluster-zs --namespacezhangsan --userzhangsan
Context context-zs modified.这3个操作搞定之后你再去看看这个文件你会发现他跟admin.conf是一样一样的了 9. 验证权限 这个文件我们就算搞定了我们来看看使用这个文件所拥有的权限是否是与我们预期的一样 [rootnode1 ~]# kubectl get pods --kubeconfigkube-zhangsan
NAME READY STATUS RESTARTS AGE
test01 1/1 Running 0 9m
# 可以看到pod我们尝试一下能否创建pod
[rootnode1 ~]# kubectl run test02 --image nginx --kubeconfigkube-zhangsan
Error from server (Forbidden): pods is forbidden: User zhangsan cannot create resource pods in API group in the namespace zhangsan
# 我们看报错信息用户zhangsan是不能创建的我们来看看除了pod之外的其他资源是否可见
[rootnode1 ~]# kubectl get ns --kubeconfigkube-zhangsan
Error from server (Forbidden): namespaces is forbidden: User zhangsan cannot list resource namespaces in API group at the cluster scope 现在这个文件符合我们预期的权限那么这就是创建一个用户并授权的过程 静态token登录 这个方法用人话来讲就是账号密码登录静态的方式就是创建一个csv文件csv文件的格式是token,user,idtoken这一栏我们可以使用openssl生成 1. 生成token # 注意文件位置最好放在/etc/kubernetes/pki下因为k8s默认只对/etc/kubernetes这个目录有权限操作放在其他位置可能会产生权限错误
[rootmaster pki]# openssl rand -hex 10 jerry.csv
[rootmaster pki]# cat jerry.csv
# 这里的用户名和id可以自己改动
3127c2e2b863d4c23878a,jerry,2000在apiserver加入参数 # 默认情况下你刚刚写的文件与集群是没有任何关联的如果想要产生作用需要在kube-apiserver文件加入参数
[rootmaster manifests]# vim /etc/kubernetes/manifests/kube-apiserver.yaml
spec:containers:- command:- kube-apiserver
# 在这里加上 --token-auth-file后面就是你刚刚的那个文件- --token-auth-file/etc/kubernetes/pki/jerry.csv- --advertise-address192.168.200.200- --allow-privilegedtrue
# 然后重启kubelet
[rootmaster pki]# systemctl restart kubelet 2. 尝试登录集群 [rootnode1 pki]# kubectl --serverhttps://192.168.200.200:6443 --token3127c2e2b863d4c23878a get pod -n default
Unable to connect to the server: x509: certificate signed by unknown authority他会有一个报错但是我们现在没有使用x509的证书啊所以我们需要让他跳过安全认证
3. 带上参数再次尝试 [rootnode1 pki]# kubectl --serverhttps://192.168.200.200:6443 --token3127c2e2b863d4c23878a get pod --insecure-skip-tls-verifytrue -n zhangsan
Error from server (Forbidden): pods is forbidden: User jerry cannot list resource pods in API group in the namespace zhangsan现在我们再来看他报的错是不是跟刚刚不一样了这个报错说的是jerry这个用户没有权限能看到这个其实就说明我们已经可以登录了只是没有权限看到一些信息罢了 2. 角色授权 上面我们提到了用户的登录提到了一点点授权现在开始聊授权的那些事默认情况下k8s采用的是Node和RBAC的鉴权模式RBAC就是基于角色的访问控制 R就是role嘛我们可以在kube-apiserver文件里面看到 spec:containers:- command:- kube-apiserver- --token-auth-file/etc/kubernetes/pki/jerry.csv- --advertise-address192.168.200.200- --allow-privilegedtrue
# 就是这一行- --authorization-modeNode,RBAC 刚刚我们不是使用jerry用户登录但是没有任何权限吗我们现在将这一行参数改掉 # 将之前的注释掉然后写一行新的# - --authorization-modeNode,RBAC
# 这个是总是允许不会鉴权你能登录就有权限这个模式仅用于测试- --authorization-modeAlwaysAllow
# 重启kubelet
[rootmaster manifests]# systemctl restart kubelet 然后我们来到node节点再尝试一下jerry用户 [rootnode1 manifests]# kubectl --serverhttps://192.168.200.200:6443 --token3127c2e2b863d4c23878a get pod --insecure-skip-tls-verifytrue -n zhangsan
NAME READY STATUS RESTARTS AGE
test01 1/1 Running 0 56m 我们发现他确实有权限查看了好了但是我们的重点并不是这个我们将他改回来 role与rolebinding 是通过命名空间来授权的你在哪个命名空间创建的角色那么这个角色只有这个命名空间下的权限rolebinding就是将角色与用户进行绑定 1. 创建角色 刚刚我们不是有一个Jerry用户可以登录集群但是没有任何权限吗那我们现在来授权 # 不知道参数是怎么来的可以使用kubectl create role --help 里面有示例
[rootmaster role]# kubectl create role jerry --verbget --verblist --verbwatch --resourcepods --dry-runclient -o yaml jerry.yaml
[rootmaster role]# kubectl apply -f jerry.yaml
role.rbac.authorization.k8s.io/jerry created
[rootmaster role]# kubectl get role
NAME CREATED AT
jerry 2024-02-20T09:31:35Z
pod-reader 2024-02-20T05:23:30Z 我们现在有2个role一个是之前的一个jerry就是刚刚我们创建出来的现在我们角色有了但是jerry用户依旧是查不到任何信息的因为我们没有对他进行绑定 2. rolebinding # 注意一个坑当这个用户是token登录的时候必须指定他的token老版本不会有这个问题新版本不指定的话依然是没有权限的注意一下
[rootmaster role]# kubectl create rolebinding jerry --rolejerry --userjerry --token3127c2e2b863d4c23878a --dry-runclient -o yaml rolebinding.yaml
[rootmaster role]# kubectl apply -f rolebinding.yaml
rolebinding.rbac.authorization.k8s.io/jerry created
[rootmaster role]# kubectl get rolebindings.rbac.authorization.k8s.io
NAME ROLE AGE
jerry Role/jerry 5s
zhangsan Role/pod-reader 4h3m这里的每一步操作都应该能看懂吧然后我们回到node节点上使用jerry来查一下zhangsan命名空间下的pod 3. 验证权限 [rootnode1 manifests]# kubectl --serverhttps://192.168.200.200:6443 --token3127c2e2b863d4c23878a get pod --insecure-skip-tls-verifytrue -n zhangsan
NAME READY STATUS RESTARTS AGE
test01 1/1 Running 0 4h24m 我们可以看到他现在就可以看到pod的信息了但是我们在指定权限的时候是没有给他创建的权限的那么他肯定不能创建pod但是我们现在想要他可以创建pod怎么办呢也是很简单只需要给角色加上一个权限就可以了 4. 修改权限 修改权限我们只需要修改jerry.yaml apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:creationTimestamp: nullname: jerry
rules:
- apiGroups:- resources:- podsverbs:- get- list- watch
# 加上这个他就可以创建pod了如果加上delete那么他就可以删除- create 然后我们再apply这个文件 [rootmaster role]# kubectl apply -f jerry.yaml
role.rbac.authorization.k8s.io/jerry configured5. 验证是否成功增加权限 [rootnode1 manifests]# kubectl --serverhttps://192.168.200.200:6443 --token3127c2e2b863d4c23878a --insecure-skip-tls-verifytrue -n zhangsan run test02 --image nginx
pod/test02 created我们可以看到pod被创建出来了说明刚刚的权限已经增加上了这里我们仅仅只是针对pod的操作如果我要创建一个deployment控制器呢上操作 6. deploymentde的操作 我们仔细观察一下jerry.yaml这个文件发现里面有一行写的是pods那我们是不是直接在这里加上deployments就好了呢我们来试试 # 修改yaml文件
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:creationTimestamp: nullname: jerry
rules:
- apiGroups:- resources:- pods- deploymentsverbs:- get- list- watch- create 然后我们apply这个文件 [rootmaster role]# kubectl apply -f jerry.yaml
role.rbac.authorization.k8s.io/jerry configured我们来看看是不是能够创建deployment了 [rootnode1 manifests]# kubectl --serverhttps://192.168.200.200:6443 --token3127c2e2b863d4c23878a --insecure-skip-tls-verifytrue -n zhangsan create deployment test03 --image nginx
error: failed to create deployment: deployments.apps is forbidden: User jerry cannot create resource deployments in API group apps in the namespace zhangsan喔嚯报错了我们不是加上了deployment吗这其实是因为我们还需要给他指定apiGroup光指定资源是不行的能创建pod是因为pod他的apiVersion就是v1而deployment的apiVersion是apps/v1所以他会报错那我们再来修改一下文件 apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:creationTimestamp: nullname: jerry
rules:
- apiGroups:-
# 加上这个如果你想要创建其他的资源那么你也要在这里写上
# 查询apiVersion很简单你可以使用kubectl create xxx --dry-run 的方式也可以直接 kubectl api-version去查查到之后填到这里- appsresources:- pods- deploymentsverbs:- get- list- watch- create 然后我们apply之后再来创建 [rootnode1 manifests]# kubectl --serverhttps://192.168.200.200:6443 --token3127c2e2b863d4c23878a --insecure-skip-tls-verifytrue -n zhangsan create deployment test03 --image nginx
deployment.apps/test03 created我们现在是可以创建deployment了那我们想更新他的副本数量也是可以的嘛来看看 [rootnode1 manifests]# kubectl --serverhttps://192.168.200.200:6443 --token3127c2e2b863d4c23878a --insecure-skip-tls-verifytrue -n zhangsan scale deployment test03 --replicas 3
Error from server (Forbidden): deployments.apps test03 is forbidden: User jerry cannot patch resource deployments/scale in API group apps in the namespace zhangsan他又报错了他说不能patch那我们在verb里面加上个试试看呢等一下注意看完报错他说resource里面是deployments/scale我们好像也没有给他这个资源一并加上最终的yaml文件是这样的 apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:creationTimestamp: nullname: jerry
rules:
- apiGroups:- - appsresources:- pods- deployments/scale- deploymentsverbs:- get- patch- list- watch- create 我们apply之后再来试试看呢 [rootmaster role]# kubectl apply -f jerry.yaml
role.rbac.authorization.k8s.io/jerry configured
# 修改副本数
[rootnode1 manifests]# kubectl --serverhttps://192.168.200.200:6443 --token3127c2e2b863d4c23878a --insecure-skip-tls-verifytrue -n zhangsan scale deployment test03 --replicas 3
deployment.apps/test03 scaled 我们可以看到现在他可以了这个yaml文件还可以有另外一种格式 apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:creationTimestamp: nullname: jerry
rules:
- apiGroups: [,apps]resources: [pods,deployments]verbs: [get,delete,watch]这种方式也可以喜欢用哪种就用哪种无所谓的嘛这个就是role和rolebinding
clusterrole和clusterrolebinding clusterrole对于role来说role是属于某个命名空间的而clusterrole是属于整个集群的clusterrole可以进行clusterrolebinding也可以进行rolebindingrolebinding的时候指定一下命名空间就可以了使用rolebinding的时候它就相当于是将clusterrole的权限模板给了某个命名空间下的某个用户也就是说在你进行rolebinding的时候你就当这个clusterrole就是一个普通的没有指定特定命名空间的role我们可以这样想一下我们有很多个命名空间然后每个命名空间里的用户权限其实都是差不多的那么如果我要是使用role的话我就需要每个命名空间下都要去创建role费时费力但是我们使用clusterrole的话所有命名空间都可以看到这个clusterrole那么就无需每个命名空间都去创建role了直接rolebingding就好了 1. 创建一个新的用户使用token [rootmaster pki]# openssl rand -hex 10 /etc/kubernetes/pki/jerry.csv
[rootmaster pki]# cat jerry.csv
# 这里的token不一样长可能是因为我按a插入的时候多按了一下没什么太大的问题token是可以自己写的
3127c2e2b863d4c23878a,jerry,2000
958a15cfa9431e088e0b,tom,2001 2. 创建clusterrole 这个创建方法与role是一样的 [rootmaster role]# kubectl create clusterrole cluster-pod --verbget,list,watch --resourcepods --dry-runclient -o yaml clusterrole.yaml
[rootmaster role]# cat clusterrole.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:creationTimestamp: nullname: cluster-pod
rules:
- apiGroups:- resources:- podsverbs:- get- list- watch 3. clusterrolebinding [rootmaster role]# kubectl create clusterrolebinding cluster-tom --clusterrolecluster-pod --usertom --token958a15cfa9431e088e0b4. 验证权限 在验证权限之前我建议退出shell重新登录一下或者重启一下节点因为你直接登录的话他可能会报错error: You must be logged in to the server (Unauthorized)我就遇到这个问题了我的解决方式是将kube-system里面的apiserver这个pod重启了 # 查看pod
[rootnode1 manifests]# kubectl --serverhttps://192.168.200.200:6443 --token958a15cfa9431e088e0bb --insecure-skip-tls-verifytrue -n zhangsan get pods
NAME READY STATUS RESTARTS AGE
test01 1/1 Running 0 6h29m
test03-6484c64bb6-88xlr 1/1 Running 0 81m
test03-6484c64bb6-9hf4l 1/1 Running 0 75m
test03-6484c64bb6-w4zwk 1/1 Running 0 75m
# 查看其他命名空间的pod
[rootnode1 manifests]# kubectl --serverhttps://192.168.200.200:6443 --token958a15cfa9431e088e0bb --insecure-skip-tls-verifytrue -n kube-system get pods
NAME READY STATUS RESTARTS AGE
coredns-5bbd96d687-9tsbb 1/1 Running 38 (7h6m ago) 42d
coredns-5bbd96d687-q6dl8 1/1 Running 38 (7h6m ago) 42d
etcd-master 1/1 Running 42 (7h6m ago) 44d
kube-apiserver-master 1/1 Running 0 13m
kube-controller-manager-master 1/1 Running 63 (3h1m ago) 44d
kube-proxy-mp98s 1/1 Running 40 (7h6m ago) 44d
kube-proxy-snk8k 1/1 Running 46 (7h6m ago) 44d
kube-proxy-xmxpj 1/1 Running 38 (7h6m ago) 44d
kube-scheduler-master 1/1 Running 61 (3h1m ago) 44d
metrics-server-54b5b8fb6-v4cqx 1/1 Running 29 (7h4m ago) 7d1h 我们可以看到他可以看到其他命名空间下的pod这就是role和clusterrole的区别了至于他能不能创建pod能不能创建deployment这些东西就是跟role是一样的了 文章转载自FuShudi 原文链接https://www.cnblogs.com/fsdstudy/p/18023589 体验地址引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构
文章转载自: http://www.morning.twpq.cn.gov.cn.twpq.cn http://www.morning.rkjz.cn.gov.cn.rkjz.cn http://www.morning.ldmtq.cn.gov.cn.ldmtq.cn http://www.morning.lffrh.cn.gov.cn.lffrh.cn http://www.morning.kxryg.cn.gov.cn.kxryg.cn http://www.morning.kszkm.cn.gov.cn.kszkm.cn http://www.morning.ykklw.cn.gov.cn.ykklw.cn http://www.morning.sypzg.cn.gov.cn.sypzg.cn http://www.morning.lwhsp.cn.gov.cn.lwhsp.cn http://www.morning.xbckm.cn.gov.cn.xbckm.cn http://www.morning.ylkkh.cn.gov.cn.ylkkh.cn http://www.morning.ljjmr.cn.gov.cn.ljjmr.cn http://www.morning.nnhfz.cn.gov.cn.nnhfz.cn http://www.morning.wcyr.cn.gov.cn.wcyr.cn http://www.morning.hnrdtz.com.gov.cn.hnrdtz.com http://www.morning.spxsm.cn.gov.cn.spxsm.cn http://www.morning.tldfp.cn.gov.cn.tldfp.cn http://www.morning.qwpyf.cn.gov.cn.qwpyf.cn http://www.morning.qggxt.cn.gov.cn.qggxt.cn http://www.morning.cctgww.cn.gov.cn.cctgww.cn http://www.morning.ksqzd.cn.gov.cn.ksqzd.cn http://www.morning.qmwzz.cn.gov.cn.qmwzz.cn http://www.morning.bzcjx.cn.gov.cn.bzcjx.cn http://www.morning.smyxl.cn.gov.cn.smyxl.cn http://www.morning.ylqpp.cn.gov.cn.ylqpp.cn http://www.morning.tlpsd.cn.gov.cn.tlpsd.cn http://www.morning.mltsc.cn.gov.cn.mltsc.cn http://www.morning.blxlf.cn.gov.cn.blxlf.cn http://www.morning.bdsyu.cn.gov.cn.bdsyu.cn http://www.morning.pwdmz.cn.gov.cn.pwdmz.cn http://www.morning.nqmkr.cn.gov.cn.nqmkr.cn http://www.morning.jzbjx.cn.gov.cn.jzbjx.cn http://www.morning.zqcsj.cn.gov.cn.zqcsj.cn http://www.morning.wbllx.cn.gov.cn.wbllx.cn http://www.morning.wdskl.cn.gov.cn.wdskl.cn http://www.morning.fndfn.cn.gov.cn.fndfn.cn http://www.morning.cwqrj.cn.gov.cn.cwqrj.cn http://www.morning.mwzt.cn.gov.cn.mwzt.cn http://www.morning.rqqn.cn.gov.cn.rqqn.cn http://www.morning.qrsm.cn.gov.cn.qrsm.cn http://www.morning.cffwm.cn.gov.cn.cffwm.cn http://www.morning.hmtft.cn.gov.cn.hmtft.cn http://www.morning.rnlx.cn.gov.cn.rnlx.cn http://www.morning.wyctq.cn.gov.cn.wyctq.cn http://www.morning.ylpwc.cn.gov.cn.ylpwc.cn http://www.morning.kjrp.cn.gov.cn.kjrp.cn http://www.morning.lxcwh.cn.gov.cn.lxcwh.cn http://www.morning.hxfrd.cn.gov.cn.hxfrd.cn http://www.morning.lmtbl.cn.gov.cn.lmtbl.cn http://www.morning.clwhf.cn.gov.cn.clwhf.cn http://www.morning.mqdr.cn.gov.cn.mqdr.cn http://www.morning.cljmx.cn.gov.cn.cljmx.cn http://www.morning.jbtlf.cn.gov.cn.jbtlf.cn http://www.morning.rsfp.cn.gov.cn.rsfp.cn http://www.morning.rrcxs.cn.gov.cn.rrcxs.cn http://www.morning.yfnjk.cn.gov.cn.yfnjk.cn http://www.morning.qzbwmf.cn.gov.cn.qzbwmf.cn http://www.morning.zztkt.cn.gov.cn.zztkt.cn http://www.morning.kpbq.cn.gov.cn.kpbq.cn http://www.morning.ghcfx.cn.gov.cn.ghcfx.cn http://www.morning.qqxmj.cn.gov.cn.qqxmj.cn http://www.morning.lmknf.cn.gov.cn.lmknf.cn http://www.morning.pcgjj.cn.gov.cn.pcgjj.cn http://www.morning.kydrb.cn.gov.cn.kydrb.cn http://www.morning.ctpfq.cn.gov.cn.ctpfq.cn http://www.morning.rxfbf.cn.gov.cn.rxfbf.cn http://www.morning.qsszq.cn.gov.cn.qsszq.cn http://www.morning.jgcrr.cn.gov.cn.jgcrr.cn http://www.morning.rksnk.cn.gov.cn.rksnk.cn http://www.morning.mlfmj.cn.gov.cn.mlfmj.cn http://www.morning.lkthj.cn.gov.cn.lkthj.cn http://www.morning.qblcm.cn.gov.cn.qblcm.cn http://www.morning.pxwzk.cn.gov.cn.pxwzk.cn http://www.morning.lgsqy.cn.gov.cn.lgsqy.cn http://www.morning.pflry.cn.gov.cn.pflry.cn http://www.morning.hhqjf.cn.gov.cn.hhqjf.cn http://www.morning.wzknt.cn.gov.cn.wzknt.cn http://www.morning.njnqn.cn.gov.cn.njnqn.cn http://www.morning.wyjpt.cn.gov.cn.wyjpt.cn http://www.morning.gnbtp.cn.gov.cn.gnbtp.cn