云原生第三課作業(yè)

一、COREDNS

1.1yml文件

root@master1:~/maniftest/coredns# cat coredns.yaml

# __MACHINE_GENERATED_WARNING__

apiVersion: v1

kind: ServiceAccount

metadata:

? name: coredns

? namespace: kube-system

? labels:

? ? ? kubernetes.io/cluster-service: "true"

? ? ? addonmanager.kubernetes.io/mode: Reconcile

---

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRole

metadata:

? labels:

? ? kubernetes.io/bootstrapping: rbac-defaults

? ? addonmanager.kubernetes.io/mode: Reconcile

? name: system:coredns

rules:

- apiGroups:

? - ""

? resources:

? - endpoints

? - services

? - pods

? - namespaces

? verbs:

? - list

? - watch

- apiGroups:

? - ""

? resources:

? - nodes

? verbs:

? - get

- apiGroups:? ? ? ? ? ? ? ? ? ? ? ? ? ? #后添加

? - discovery.k8s.io? ? ? ? ? ? ? ? ??#后添加

? resources:? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#后添加

? - endpointslices? ? ? ? ? ? ? ? ? ??#后添加

? verbs:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??#后添加

? - list? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#后添加

? - watch? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#后添加

---

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRoleBinding

metadata:

? annotations:

? ? rbac.authorization.kubernetes.io/autoupdate: "true"

? labels:

? ? kubernetes.io/bootstrapping: rbac-defaults

? ? addonmanager.kubernetes.io/mode: EnsureExists

? name: system:coredns

roleRef:

? apiGroup: rbac.authorization.k8s.io

? kind: ClusterRole

? name: system:coredns

subjects:

- kind: ServiceAccount

? name: coredns

? namespace: kube-system

---

apiVersion: v1

kind: ConfigMap

metadata:

? name: coredns

? namespace: kube-system

? labels:

? ? ? addonmanager.kubernetes.io/mode: EnsureExists

data:

? Corefile: |

? ? .:53 {

? ? ? ? errors

? ? ? ? health {

? ? ? ? ? ? lameduck 5s

? ? ? ? }

? ? ? ? ready

? ? ? ? kubernetes fchiaas.local in-addr.arpa ip6.arpa {? ? ? ? ?#fchiaas.local是k8s集群的名稱

? ? ? ? ? ? pods insecure

? ? ? ? ? ? fallthrough in-addr.arpa ip6.arpa

? ? ? ? ? ? ttl 30

? ? ? ? }

? ? ? ? prometheus :9153

? ? ? ? forward . 10.0.0.20 {? ? ? ? ? ? ? #10.0.0.20公司內(nèi)部DNS

? ? ? ? ? ? max_concurrent 1000

? ? ? ? }

? ? ? ? cache 30

? ? ? ? loop

? ? ? ? reload

? ? ? ? loadbalance

? ? }

---

apiVersion: apps/v1

kind: Deployment

metadata:

? name: coredns

? namespace: kube-system

? labels:

? ? k8s-app: kube-dns

? ? kubernetes.io/cluster-service: "true"

? ? addonmanager.kubernetes.io/mode: Reconcile

? ? kubernetes.io/name: "CoreDNS"

spec:

? # replicas: not specified here:

? # 1. In order to make Addon Manager do not reconcile this replicas parameter.

? # 2. Default is 1.

? # 3. Will be tuned in real time if DNS horizontal auto-scaling is turned on.

? strategy:

? ? type: RollingUpdate

? ? rollingUpdate:

? ? ? maxUnavailable: 1

? selector:

? ? matchLabels:

? ? ? k8s-app: kube-dns

? template:

? ? metadata:

? ? ? labels:

? ? ? ? k8s-app: kube-dns

? ? spec:

? ? ? securityContext:

? ? ? ? seccompProfile:

? ? ? ? ? type: RuntimeDefault

? ? ? priorityClassName: system-cluster-critical

? ? ? serviceAccountName: coredns

? ? ? affinity:

? ? ? ? podAntiAffinity:

? ? ? ? ? preferredDuringSchedulingIgnoredDuringExecution:

? ? ? ? ? - weight: 100

? ? ? ? ? ? podAffinityTerm:

? ? ? ? ? ? ? labelSelector:

? ? ? ? ? ? ? ? matchExpressions:

? ? ? ? ? ? ? ? ? - key: k8s-app

? ? ? ? ? ? ? ? ? ? operator: In

? ? ? ? ? ? ? ? ? ? values: ["kube-dns"]

? ? ? ? ? ? ? topologyKey: kubernetes.io/hostname

? ? ? tolerations:

? ? ? ? - key: "CriticalAddonsOnly"

? ? ? ? ? operator: "Exists"

? ? ? nodeSelector:

? ? ? ? kubernetes.io/os: linux

? ? ? containers:

? ? ? - name: coredns

? ? ? ? image:? coredns/coredns:v1.8.6

? ? ? ? imagePullPolicy: IfNotPresent

? ? ? ? resources:

? ? ? ? ? limits:

? ? ? ? ? ? memory: 256Mi

? ? ? ? ? requests:

? ? ? ? ? ? cpu: 100m

? ? ? ? ? ? memory: 70Mi

? ? ? ? args: [ "-conf", "/etc/coredns/Corefile" ]

? ? ? ? volumeMounts:

? ? ? ? - name: config-volume

? ? ? ? ? mountPath: /etc/coredns

? ? ? ? ? readOnly: true

? ? ? ? ports:

? ? ? ? - containerPort: 53

? ? ? ? ? name: dns

? ? ? ? ? protocol: UDP

? ? ? ? - containerPort: 53

? ? ? ? ? name: dns-tcp

? ? ? ? ? protocol: TCP

? ? ? ? - containerPort: 9153

? ? ? ? ? name: metrics

? ? ? ? ? protocol: TCP

? ? ? ? livenessProbe:

? ? ? ? ? httpGet:

? ? ? ? ? ? path: /health

? ? ? ? ? ? port: 8080

? ? ? ? ? ? scheme: HTTP

? ? ? ? ? initialDelaySeconds: 60

? ? ? ? ? timeoutSeconds: 5

? ? ? ? ? successThreshold: 1

? ? ? ? ? failureThreshold: 5

? ? ? ? readinessProbe:

? ? ? ? ? httpGet:

? ? ? ? ? ? path: /ready

? ? ? ? ? ? port: 8181

? ? ? ? ? ? scheme: HTTP

? ? ? ? securityContext:

? ? ? ? ? allowPrivilegeEscalation: false

? ? ? ? ? capabilities:

? ? ? ? ? ? add:

? ? ? ? ? ? - NET_BIND_SERVICE

? ? ? ? ? ? drop:

? ? ? ? ? ? - all

? ? ? ? ? readOnlyRootFilesystem: true

? ? ? dnsPolicy: Default

? ? ? volumes:

? ? ? ? - name: config-volume

? ? ? ? ? configMap:

? ? ? ? ? ? name: coredns

? ? ? ? ? ? items:

? ? ? ? ? ? - key: Corefile

? ? ? ? ? ? ? path: Corefile

---

apiVersion: v1

kind: Service

metadata:

? name: kube-dns

? namespace: kube-system

? annotations:

? ? prometheus.io/port: "9153"

? ? prometheus.io/scrape: "true"

? labels:

? ? k8s-app: kube-dns

? ? kubernetes.io/cluster-service: "true"

? ? addonmanager.kubernetes.io/mode: Reconcile

? ? kubernetes.io/name: "CoreDNS"

spec:

? selector:

? ? k8s-app: kube-dns

? clusterIP: 10.100.0.2? ? ? ? ? ? ? ? ?#10.0.0.2 是coredns服務(wù)的IP地址

? ports:

? - name: dns

? ? port: 53

? ? protocol: UDP

? - name: dns-tcp

? ? port: 53

? ? protocol: TCP

? - name: metrics

? ? port: 9153

? ? protocol: TCP

1.2部署

root@master1:~/maniftest/coredns# kubectl apply -f coredns.yaml

serviceaccount/coredns created

clusterrole.rbac.authorization.k8s.io/system:coredns created

clusterrolebinding.rbac.authorization.k8s.io/system:coredns created

configmap/coredns created

deployment.apps/coredns created

service/kube-dns created

root@master1:~/maniftest/coredns# kubectl get pods -n kube-system -w

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

calico-kube-controllers-59df8b6856-qll6h? 1/1? ? Running? 4 (144m ago)? 11d

calico-node-74687? ? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 4 (144m ago)? 11d

calico-node-f98lx? ? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 4 (144m ago)? 11d

calico-node-j2jhv? ? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 4 (144m ago)? 11d

calico-node-ljnwb? ? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 7 (5d3h ago)? 11d

coredns-69d84cdc49-rtpnd? ? ? ? ? ? ? ? ? 1/1? ? Running? 0? ? ? ? ? ? ? 5m

coredns-69d84cdc49-xk7nq? ? ? ? ? ? ? ? ? 1/1? ? Running? 0? ? ? ? ? ? ? 2m36s


root@master1:~/maniftest/coredns# kubectl get svc -n kube-system

NAME? ? ? TYPE? ? ? ? CLUSTER-IP? EXTERNAL-IP? PORT(S)? ? ? ? ? ? ? ? ? AGE

kube-dns? ClusterIP? 10.100.0.2? <none>? ? ? ? 53/UDP,53/TCP,9153/TCP? 13m

root@master1:~/maniftest/coredns# kubectl get svc -A

NAMESPACE? ? NAME? ? ? ? TYPE? ? ? ? CLUSTER-IP? EXTERNAL-IP? PORT(S)? ? ? ? ? ? ? ? ? AGE

default? ? ? kubernetes? ClusterIP? 10.100.0.1? <none>? ? ? ? 443/TCP? ? ? ? ? ? ? ? ? 11d

kube-system? kube-dns? ? ClusterIP? 10.100.0.2? <none>? ? ? ? 53/UDP,53/TCP,9153/TCP? 13m


1.3測(cè)試

root@master1:~/maniftest/coredns# kubectl exec -it test -- /bin/sh

sh-4.4# ping kube-dns

ping: kube-dns: Name or service not known

sh-4.4# ping kube-dns.kube-system

PING kube-dns.kube-system.svc.fchiaas.local (10.100.0.2) 56(84) bytes of data.

64 bytes from kube-dns.kube-system.svc.fchiaas.local (10.100.0.2): icmp_seq=1 ttl=64 time=0.036 ms

64 bytes from kube-dns.kube-system.svc.fchiaas.local (10.100.0.2): icmp_seq=2 ttl=64 time=0.045 ms

^C

--- kube-dns.kube-system.svc.fchiaas.local ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1002ms

rtt min/avg/max/mdev = 0.036/0.040/0.045/0.007 ms

sh-4.4# ping kube-dns.kube-system.svc.fchiaas.local

PING kube-dns.kube-system.svc.fchiaas.local (10.100.0.2) 56(84) bytes of data.

64 bytes from kube-dns.kube-system.svc.fchiaas.local (10.100.0.2): icmp_seq=1 ttl=64 time=0.024 ms

64 bytes from kube-dns.kube-system.svc.fchiaas.local (10.100.0.2): icmp_seq=2 ttl=64 time=0.047 ms

^C

--- kube-dns.kube-system.svc.fchiaas.local ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1013ms

rtt min/avg/max/mdev = 0.024/0.035/0.047/0.012 ms

二枫攀、dashboard

2.1下載yml文件

wget? ?https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml?-o dashbord-2.4.0.yaml

修改文件

spec:

? type: NodePort? ? ? ? ? ? ? ? ? ? ? ?#后添加

? ports:

? ? - port: 443

? ? ? targetPort: 8443

? ? ? nodePort: 30443? ??? ? ? ? ? ?#后添加

2.2創(chuàng)建

root@master1:~/maniftest/dashboard# kubectl apply -f dashbord-2.4.0.yaml

namespace/kubernetes-dashboard created

serviceaccount/kubernetes-dashboard created

service/kubernetes-dashboard created

secret/kubernetes-dashboard-certs created

secret/kubernetes-dashboard-csrf created

secret/kubernetes-dashboard-key-holder created

configmap/kubernetes-dashboard-settings created

role.rbac.authorization.k8s.io/kubernetes-dashboard created

clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard created

rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created

clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created

deployment.apps/kubernetes-dashboard created

service/dashboard-metrics-scraper created

deployment.apps/dashboard-metrics-scraper created

root@master1:~/maniftest/dashboard# kubectl get pods -A -o wide -w

NAMESPACE? ? ? ? ? ? ? NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? READY? STATUS? ? RESTARTS? ? ? AGE? ? IP? ? ? ? ? ? ? NODE? ? ? ? NOMINATED NODE? READINESS GATES

default? ? ? ? ? ? ? ? deploy-nginx-6899665dbb-2j2d6? ? ? ? ? ? ? 1/1? ? Running? 2 (3h6m ago)? 5d11h? 10.200.104.32? ? 10.0.0.25? <none>? ? ? ? ? <none>

default? ? ? ? ? ? ? ? deploy-nginx-6899665dbb-8m27p? ? ? ? ? ? ? 1/1? ? Running? 2 (3h6m ago)? 5d23h? 10.200.104.31? ? 10.0.0.25? <none>? ? ? ? ? <none>

default? ? ? ? ? ? ? ? deploy-nginx-6899665dbb-bpk6x? ? ? ? ? ? ? 1/1? ? Running? 2 (3h6m ago)? 5d23h? 10.200.104.34? ? 10.0.0.25? <none>? ? ? ? ? <none>

default? ? ? ? ? ? ? ? deploy-nginx-6899665dbb-g7fms? ? ? ? ? ? ? 1/1? ? Running? 2 (3h6m ago)? 5d23h? 10.200.104.33? ? 10.0.0.25? <none>? ? ? ? ? <none>

default? ? ? ? ? ? ? ? deploy-nginx-6899665dbb-q6btz? ? ? ? ? ? ? 1/1? ? Running? 2 (3h6m ago)? 5d23h? 10.200.104.36? ? 10.0.0.25? <none>? ? ? ? ? <none>

default? ? ? ? ? ? ? ? deploy-nginx-6899665dbb-tzwbq? ? ? ? ? ? ? 1/1? ? Running? 2 (3h6m ago)? 5d11h? 10.200.104.35? ? 10.0.0.25? <none>? ? ? ? ? <none>

default? ? ? ? ? ? ? ? test? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 0? ? ? ? ? ? ? 36m? ? 10.200.166.146? 10.0.0.24? <none>? ? ? ? ? <none>

kube-system? ? ? ? ? ? calico-kube-controllers-59df8b6856-qll6h? ? 1/1? ? Running? 4 (3h6m ago)? 11d? ? 10.0.0.25? ? ? ? 10.0.0.25? <none>? ? ? ? ? <none>

kube-system? ? ? ? ? ? calico-node-74687? ? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 4 (3h6m ago)? 11d? ? 10.0.0.22? ? ? ? 10.0.0.22? <none>? ? ? ? ? <none>

kube-system? ? ? ? ? ? calico-node-f98lx? ? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 4 (3h6m ago)? 11d? ? 10.0.0.24? ? ? ? 10.0.0.24? <none>? ? ? ? ? <none>

kube-system? ? ? ? ? ? calico-node-j2jhv? ? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 4 (3h6m ago)? 11d? ? 10.0.0.25? ? ? ? 10.0.0.25? <none>? ? ? ? ? <none>

kube-system? ? ? ? ? ? calico-node-ljnwb? ? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 7 (5d4h ago)? 11d? ? 10.0.0.21? ? ? ? 10.0.0.21? <none>? ? ? ? ? <none>

kube-system? ? ? ? ? ? coredns-69d84cdc49-rtpnd? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 0? ? ? ? ? ? ? 46m? ? 10.200.104.37? ? 10.0.0.25? <none>? ? ? ? ? <none>

kube-system? ? ? ? ? ? coredns-69d84cdc49-xk7nq? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 0? ? ? ? ? ? ? 44m? ? 10.200.166.145? 10.0.0.24? <none>? ? ? ? ? <none>

kubernetes-dashboard? dashboard-metrics-scraper-c45b7869d-zdt8p? 1/1? ? Running? 0? ? ? ? ? ? ? 53s? ? 10.200.166.147? 10.0.0.24? <none>? ? ? ? ? <none>

kubernetes-dashboard? kubernetes-dashboard-576cb95f94-wl8xb? ? ? 1/1? ? Running? 0? ? ? ? ? ? ? 53s? ? 10.200.166.148? 10.0.0.24? <none>? ? ? ? ? <none>

2.3創(chuàng)建用戶

apiVersion: v1

kind: ServiceAccount

metadata:

? name: admin-user

? namespace: kubernetes-dashboard

---

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRoleBinding

metadata:

? name: admin-user

roleRef:

? apiGroup: rbac.authorization.k8s.io

? kind: ClusterRole

? name: cluster-admin

subjects:

- kind: ServiceAccount

? name: admin-user

? namespace: kubernetes-dashboard

root@master1:~/maniftest/dashboard# kubectl apply -f admin-user.yaml

serviceaccount/admin-user created

clusterrolebinding.rbac.authorization.k8s.io/admin-user created

root@master1:~/maniftest/dashboard# kubectl describe secret admin-user-token-b4c8n -n kubernetes-dashboard

Name:? ? ? ? admin-user-token-b4c8n

Namespace:? ? kubernetes-dashboard

Labels:? ? ? <none>

Annotations:? kubernetes.io/service-account.name: admin-user

? ? ? ? ? ? ? kubernetes.io/service-account.uid: 2c3de8ea-a919-4b94-aa58-4a99aeef9e2e

Type:? kubernetes.io/service-account-token

Data

====

ca.crt:? ? 1350 bytes

namespace:? 20 bytes

token:? ? ? eyJhbGciOiJSUzI1NiIsImtpZCI6IkhWb0RMRkFCQUFTTm13Q1VzSFNzaVd3QW5fZjZOeW5QQklqSlBIclptUUEifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLWI0YzhuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIyYzNkZThlYS1hOTE5LTRiOTQtYWE1OC00YTk5YWVlZjllMmUiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.RJuNGpH4ekbO73TOaB7v9w7RuL5ag1lfcgV0q3nq9u9l404Lqt2x4uOVH1uhQo3A6MdluKTYDC_l1xI2f1FKq-Q2G0a8e5XHFhaCOZKPfhG1-bqAYC9CRwvqmB3DUdGsHjznKINsfmcpkGZu4_V91h5DE_iyULT3ym6v466Bv37E_3P4D8aKXRaWWVWKARs7O1bMx_yp19aioAuQOMAYnF5ua7yJtZfFVUDwg81MyQ0C0qJIT6FhQmkTCEp2VbbOnWjoLUwEuqlWF1w_zMo0QJy83fTdrvY30hqvY1bQzs2lJ93UvEylPqdl0iVui2FgmLufJW7pZt45sAZwfMu_jw

2.4登錄



三屠列、kubectl常用命令

3.1kubectl get 類型? 名字? ? ?-n? 名稱空間? ? ? ? 查看資源? ?

- o wide? 顯示更多? ??

-w 動(dòng)態(tài)顯示

3.2kubectl describe?類型? 名字? -n? 名稱空間? ? ? ? 查看資源詳細(xì)信息

3.3kubectl explain?類型? ?查看資源配置選項(xiàng)

3.4 kubectl logs 容器? ? ? ?查看容器的日志

3.5 kubectl create/run? ? 創(chuàng)建資源對(duì)象

3.6 kubectl apply -f? ? ?文件名 從配置文件創(chuàng)建對(duì)象

3.7 kubectl? delete? 刪除對(duì)象

四没佑、ETCD

4.1 etcdctl 管理命令

/usr/bin/etcdctl --write-out=table member list --endpoints=https://10.0.0.31:2379 --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem

+------------------+---------+----------------+------------------------+------------------------+------------+

|? ? ? ? ID? ? ? ? | STATUS? |? ? ? NAME? ? ? |? ? ? PEER ADDRS? ? ? |? ? ? CLIENT ADDRS? ? ? | IS LEARNER |

+------------------+---------+----------------+------------------------+------------------------+------------+

| 54e62bec6a0fc430 | started | etcd-10.0.0.29 | https://10.0.0.29:2380 | https://10.0.0.29:2379 |? ? ? false |

| 56dc5cf57fee97f0 | started | etcd-10.0.0.31 | https://10.0.0.31:2380 | https://10.0.0.31:2379 |? ? ? false |

| 730ef4b6cd5f7961 | started | etcd-10.0.0.30 | https://10.0.0.30:2380 | https://10.0.0.30:2379 |? ? ? false |

+------------------+---------+----------------+------------------------+------------------------+------------+

root@etcd03:~# export NODE_IPS="10.0.0.29 10.0.0.30 10.0.0.31"

root@etcd03:~# for ip in ${NODE_IPS}; do /usr/bin/etcdctl --write-out=table endpoint status --endpoints=https://${ip}:2379 --cacert=/etc/kubernetes/ssl/ca.pem --cert=/etc/kubernetes/ssl/etcd.pem --key=/etc/kubernetes/ssl/etcd-key.pem; done

+------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

|? ? ? ? ENDPOINT? ? ? ? |? ? ? ? ID? ? ? ? | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |

+------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

| https://10.0.0.29:2379 | 54e62bec6a0fc430 |? 3.5.0 |? 3.8 MB |? ? false |? ? ? false |? ? ? ? 8 |? ? 270378 |? ? ? ? ? ? 270378 |? ? ? ? |

+------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

+------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

|? ? ? ? ENDPOINT? ? ? ? |? ? ? ? ID? ? ? ? | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |

+------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

| https://10.0.0.30:2379 | 730ef4b6cd5f7961 |? 3.5.0 |? 3.9 MB |? ? false |? ? ? false |? ? ? ? 8 |? ? 270378 |? ? ? ? ? ? 270378 |? ? ? ? |

+------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

+------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

|? ? ? ? ENDPOINT? ? ? ? |? ? ? ? ID? ? ? ? | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |

+------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

| https://10.0.0.31:2379 | 56dc5cf57fee97f0 |? 3.5.0 |? 3.9 MB |? ? ? true |? ? ? false |? ? ? ? 8 |? ? 270378 |? ? ? ? ? ? 270378 |? ? ? ? |

+------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+

root@etcd03:~# etcdctl get / --prefix --keys-only |more

/calico/ipam/v2/assignment/ipv4/block/10.200.104.0-26

/calico/ipam/v2/assignment/ipv4/block/10.200.166.128-26

/calico/ipam/v2/assignment/ipv4/block/10.200.180.0-26

/calico/ipam/v2/assignment/ipv4/block/10.200.199.64-26

/calico/ipam/v2/handle/ipip-tunnel-addr-master1.fchiaas.lcoal

/calico/ipam/v2/handle/ipip-tunnel-addr-master2

/calico/ipam/v2/handle/ipip-tunnel-addr-node1

/calico/ipam/v2/handle/ipip-tunnel-addr-node2

/calico/ipam/v2/handle/k8s-pod-network.05d2b3a59141b1292e2b766487486c72791e47bf23909fc5a02621b2689c6aa7

/calico/ipam/v2/handle/k8s-pod-network.0bc7559a48f40b946f3e47720539c21d544bee879fce8ac129a99a97a550d1c1

/calico/ipam/v2/handle/k8s-pod-network.15aaeff70b699297ab10df3673b25d2f4a0773f77016d47ea063f980ff09c570

/calico/ipam/v2/handle/k8s-pod-network.1bb56fbf532b66f3879772a7838bd38152773f64ad2b2124c7b01866902dfcbe

/calico/ipam/v2/handle/k8s-pod-network.1d28e1e9a173647705d05cb4d8329b8e852206172437193841dea37743046643

/calico/ipam/v2/handle/k8s-pod-network.3418cd370d8e070f1ddd948f9d8d3afdff5831ad8533611870b01bc19650e89b

/calico/ipam/v2/handle/k8s-pod-network.628b48a4cd51db026e7d0346e2c5336f05f8c85065c76ea7efcde8a264a74362

/calico/ipam/v2/handle/k8s-pod-network.679862357d2a47e326303d8aaf4ef621092d3d3a5e265db7f4d13bf097784210

/calico/ipam/v2/handle/k8s-pod-network.83309a03c182d93bf07ee228850f5089dd60c3b3e3e52847663628fa9df5fdda

/calico/ipam/v2/handle/k8s-pod-network.d52996649ccef1df19aafa4417caf5d70ac37afec20eed4e4066fca133405e80

/calico/ipam/v2/handle/k8s-pod-network.df5f0bcf96df77a8d778fb47f5a1d5ed4217b718a75252d39c64ceffbd930119

/calico/ipam/v2/host/master1.fchiaas.lcoal/ipv4/block/10.200.199.64-26

/calico/ipam/v2/host/master2/ipv4/block/10.200.180.0-26

/calico/ipam/v2/host/node1/ipv4/block/10.200.166.128-26

--More--


root@etcd03:~# etcdctl get /registry/pods/default/test

/registry/pods/default/test

k8s

v1Pod¥

testdefault"*$c2645c73-f9ce-4f6f-9280-8aba8c0c9d662??Z

runtestz?

kubectl-runUpdatev??FieldsV1:

{"f:metadata":{"f:labels":{".":{},"f:run":{}}},"f:spec":{"f:containers":{"k:{\"name\":\"test\"}":{".":{},"f:args":{},"f:image":{},"f:imagePullPolicy":{},"f:name":{},"f:resources":{},"f:terminationMessagePath":{},"f:terminationMessagePolicy":{}}},"f:dnsPolicy":{},"f:enableServiceLinks":{},"f:restartPolicy":{},"f:schedulerName":{},"f:securityContext":{},"f:terminationGracePeriodSeconds":{}}}B??

kubeletUpdatev¢ˉFieldsV1:

{"f:status":{"f:conditions":{"k:{\"type\":\"ContainersReady\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Initialized\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}},"k:{\"type\":\"Ready\"}":{".":{},"f:lastProbeTime":{},"f:lastTransitionTime":{},"f:status":{},"f:type":{}}},"f:containerStatuses":{},"f:hostIP":{},"f:phase":{},"f:podIP":{},"f:podIPs":{".":{},"k:{\"ip\":\"10.200.166.150\"}":{".":{},"f:ip":{}}},"f:startTime":{}}}Bstatus

kube-api-access-zqw5xkЁh

"

token

(&

kube-root-ca.crt

ca.crtca.crt

)'

%

namespace

v1metadata.namespace¤

testcentos"sleep"100000*BJL

kube-api-access-zqw5x-/var/run/secrets/kubernetes.io/serviceaccount"2j/dev/termination-logrAlways¢FileAlways 2

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ClusterFirstBdefaultJdefaultR 10.0.0.24X`hrdefault-scheduler26

node.kubernetes.io/not-readyExists" NoExecute(?28

node.kubernetes.io/unreachableExists" NoExecute(????PreemptLowerPriorityˉ

Running#

InitializedTru??*2

ReadyTru¢ˉ*2'

ContainersReadyTru¢ˉ*2$

PodScheduledTru??*2"* 10.0.0.24210.200.166.15??B?

test


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ˉcentos:latest:`docker-pullable://centos@sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177BIdocker://bb960f24afeb61e4311587d1293984656707e2c773626da0fca1296f4db860b5HJ

BestEffortZb

10.200.166.150"


root@etcd03:~# etcdctl put /data 1

OK

root@etcd03:~# etcdctl put /data 2

OK

root@etcd03:~# etcdctl del /data 2

341


root@etcd03:~# etcdctl watch /data

PUT

/data

1

PUT

/data

2

DELETE

/data

4.2數(shù)據(jù)備份和恢復(fù)

etcdctl snaphshot save 備份文件

root@etcd03:~# etcdctl snapshot save backup1

{"level":"info","ts":1642224623.165505,"caller":"snapshot/v3_snapshot.go:68","msg":"created temporary db file","path":"backup1.part"}

{"level":"info","ts":1642224623.1690366,"logger":"client","caller":"v3/maintenance.go:211","msg":"opened snapshot stream; downloading"}

{"level":"info","ts":1642224623.1690714,"caller":"snapshot/v3_snapshot.go:76","msg":"fetching snapshot","endpoint":"127.0.0.1:2379"}

{"level":"info","ts":1642224623.2504776,"logger":"client","caller":"v3/maintenance.go:219","msg":"completed snapshot read; closing"}

{"level":"info","ts":1642224623.2565012,"caller":"snapshot/v3_snapshot.go:91","msg":"fetched snapshot","endpoint":"127.0.0.1:2379","size":"3.9 MB","took":"now"}

{"level":"info","ts":1642224623.2565756,"caller":"snapshot/v3_snapshot.go:100","msg":"saved","path":"backup1"}

Snapshot saved at backup1

root@etcd03:~# ls

backup1? snap

root@etcd03:~# ls


4.2數(shù)據(jù)恢復(fù)

etcdctl snapshot restore 備份名字? ?--data-dir=恢復(fù)的目錄? ? ? #要求恢復(fù)目錄內(nèi)不能有東西

root@etcd03:~# etcdctl snapshot restore backup1 --data-dir=/opt/etcd

Deprecated: Use `etcdutl snapshot restore` instead.

2022-01-15T13:34:12+08:00 info snapshot/v3_snapshot.go:251 restoring snapshot {"path": "backup1", "wal-dir": "/opt/etcd/member/wal", "data-dir": "/opt/etcd", "snap-dir": "/opt/etcd/member/snap", "stack": "go.etcd.io/etcd/etcdutl/v3/snapshot.(*v3Manager).Restore\n\t/tmp/etcd-release-3.5.0/etcd/release/etcd/etcdutl/snapshot/v3_snapshot.go:257\ngo.etcd.io/etcd/etcdutl/v3/etcdutl.SnapshotRestoreCommandFunc\n\t/tmp/etcd-release-3.5.0/etcd/release/etcd/etcdutl/etcdutl/snapshot_command.go:147\ngo.etcd.io/etcd/etcdctl/v3/ctlv3/command.snapshotRestoreCommandFunc\n\t/tmp/etcd-release-3.5.0/etcd/release/etcd/etcdctl/ctlv3/command/snapshot_command.go:128\ngithub.com/spf13/cobra.(*Command).execute\n\t/home/remote/sbatsche/.gvm/pkgsets/go1.16.3/global/pkg/mod/github.com/spf13/cobra@v1.1.3/command.go:856\ngithub.com/spf13/cobra.(*Command).ExecuteC\n\t/home/remote/sbatsche/.gvm/pkgsets/go1.16.3/global/pkg/mod/github.com/spf13/cobra@v1.1.3/command.go:960\ngithub.com/spf13/cobra.(*Command).Execute\n\t/home/remote/sbatsche/.gvm/pkgsets/go1.16.3/global/pkg/mod/github.com/spf13/cobra@v1.1.3/command.go:897\ngo.etcd.io/etcd/etcdctl/v3/ctlv3.Start\n\t/tmp/etcd-release-3.5.0/etcd/release/etcd/etcdctl/ctlv3/ctl.go:107\ngo.etcd.io/etcd/etcdctl/v3/ctlv3.MustStart\n\t/tmp/etcd-release-3.5.0/etcd/release/etcd/etcdctl/ctlv3/ctl.go:111\nmain.main\n\t/tmp/etcd-release-3.5.0/etcd/release/etcd/etcdctl/main.go:59\nruntime.main\n\t/home/remote/sbatsche/.gvm/gos/go1.16.3/src/runtime/proc.go:225"}

2022-01-15T13:34:12+08:00 info membership/store.go:119 Trimming membership information from the backend...

2022-01-15T13:34:12+08:00 info membership/cluster.go:393 added member {"cluster-id": "cdf818194e3a8c32", "local-member-id": "0", "added-peer-id": "8e9e05c52164694d", "added-peer-peer-urls": ["http://localhost:2380"]}

2022-01-15T13:34:12+08:00 info snapshot/v3_snapshot.go:272 restored snapshot {"path": "backup1", "wal-dir": "/opt/etcd/member/wal", "data-dir": "/opt/etcd", "snap-dir": "/opt/etcd/member/snap"}

root@etcd03:~# etcdctl snapshot restore backup1 --data-dir=/opt/etcd

Deprecated: Use `etcdutl snapshot restore` instead.

Error: data-dir "/opt/etcd" not empty or could not be read

root@etcd03:~#

五原叮、增加master和node節(jié)點(diǎn)

5.1抚恒、現(xiàn)狀

root@master1:~/manifests/coredns# kubectl get nodes

NAME? ? ? ? STATUS? ? ? ? ? ? ? ? ? ? ROLES? ? AGE? ? VERSION

10.0.0.21? Ready,SchedulingDisabled? master? 11m? ? v1.22.2

10.0.0.22? Ready,SchedulingDisabled? master? 11m? ? v1.22.2

10.0.0.24? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 9m54s? v1.22.2

10.0.0.25? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 9m54s? v1.22.2

5.2添加master和node

root@master1:/etc/kubeasz# ./ezctl add-master k8s-cluster1 10.0.0.23

root@master1:/etc/kubeasz# kubectl get nodes

NAME? ? ? ? STATUS? ? ? ? ? ? ? ? ? ? ROLES? ? AGE? ? VERSION

10.0.0.21? Ready,SchedulingDisabled? master? 21m? ? v1.22.2

10.0.0.22? Ready,SchedulingDisabled? master? 21m? ? v1.22.2

10.0.0.23? Ready,SchedulingDisabled? master? 114s? v1.22.2

10.0.0.24? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 20m? ? v1.22.2

10.0.0.25? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 20m? ? v1.22.2

root@node2:/etc/kube-lb# cat conf/kube-lb.conf

user root;

worker_processes 1;

error_log? /etc/kube-lb/logs/error.log warn;

events {

? ? worker_connections? 3000;

}

stream {

? ? upstream backend {

? ? ? ? server 10.0.0.23:6443? ? max_fails=2 fail_timeout=3s;

? ? ? ? server 10.0.0.21:6443? ? max_fails=2 fail_timeout=3s;

? ? ? ? server 10.0.0.22:6443? ? max_fails=2 fail_timeout=3s;

? ? }

? ? server {

? ? ? ? listen 127.0.0.1:6443;

? ? ? ? proxy_connect_timeout 1s;

? ? ? ? proxy_pass backend;

? ? }

}

root@master1:/etc/kubeasz# ./ezctl add-node k8s-cluster1 10.0.0.26

root@master1:/etc/kubeasz# kubectl get nodes

NAME? ? ? ? STATUS? ? ? ? ? ? ? ? ? ? ROLES? ? AGE? ? VERSION

10.0.0.21? Ready,SchedulingDisabled? master? 29m? ? v1.22.2

10.0.0.22? Ready,SchedulingDisabled? master? 29m? ? v1.22.2

10.0.0.23? Ready,SchedulingDisabled? master? 10m? ? v1.22.2

10.0.0.24? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 28m? ? v1.22.2

10.0.0.25? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 28m? ? v1.22.2

10.0.0.26? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 2m13s? v1.22.2

5.3 升級(jí)

下載下面的文件(升級(jí)到的版本)

kubernetes-client-linux-amd64.tar.gz kubernetes-node-linux-amd64.tar.gz kubernetes-server-linux-amd64.tar.gz kubernetes.tar.gz

解壓

升級(jí)時(shí)先升級(jí)master咱台,然后升級(jí)node

升級(jí)master

root@master1:/opt/soft/kubernetes/kubernetes/server/bin# systemctl stop kube-apiserver.service kube-controller-manager.service kubelet.service kube-proxy.service kube-scheduler.service

root@master1:/opt/soft/kubernetes/kubernetes/server/bin# scp kube-apiserver kube-controller-manager kube-proxy kube-scheduler kubelet 10.0.0.21:/usr/bin/

kube-apiserver? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%? 119MB 124.8MB/s? 00:00? ?

kube-controller-manager? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%? 113MB 125.2MB/s? 00:00? ?

kube-proxy? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%? 41MB 129.1MB/s? 00:00? ?

kube-scheduler? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%? 47MB? 81.9MB/s? 00:00? ?

kubelet? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%? 116MB 121.7MB/s? 00:00?


root@master1:/opt/soft/kubernetes/kubernetes/server/bin# systemctl start kube-apiserver.service kube-controller-manager.service kubelet.service kube-proxy.service kube-scheduler.service

root@master1:/opt/soft/kubernetes/kubernetes/server/bin# kubectl get nodes

NAME? ? ? ? STATUS? ? ? ? ? ? ? ? ? ? ROLES? ? AGE? VERSION

10.0.0.21? Ready,SchedulingDisabled? master? 66m? v1.22.5

10.0.0.22? Ready,SchedulingDisabled? master? 66m? v1.22.2

10.0.0.23? Ready,SchedulingDisabled? master? 47m? v1.22.2

10.0.0.24? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 65m? v1.22.2

10.0.0.25? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 65m? v1.22.2

10.0.0.26? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 39m? v1.22.2

相同的步驟升級(jí)剩余的master

root@master1:/opt/soft/kubernetes/kubernetes/server/bin# kubectl get nodes

NAME? ? ? ? STATUS? ? ? ? ? ? ? ? ? ? ROLES? ? AGE? VERSION

10.0.0.21? Ready,SchedulingDisabled? master? 71m? v1.22.5

10.0.0.22? Ready,SchedulingDisabled? master? 71m? v1.22.5

10.0.0.23? Ready,SchedulingDisabled? master? 51m? v1.22.5

10.0.0.24? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 69m? v1.22.2

10.0.0.25? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 69m? v1.22.2

10.0.0.26? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 43m? v1.22.2

然后升級(jí)node

root@node1:~# systemctl stop kubelet.service kube-proxy.service

root@master1:/opt/soft/kubernetes/kubernetes/server/bin# scp kubectl kube-proxy kubelet 10.0.0.24:/usr/bin/

kubectl? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%? 45MB 118.5MB/s? 00:00? ?

kube-proxy? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%? 41MB 113.4MB/s? 00:00? ?

kubelet? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 100%? 116MB? 92.0MB/s? 00:01

root@node1:~# systemctl start kubelet.service kube-proxy.service

安裝上述步驟升級(jí)其余節(jié)點(diǎn)

root@master1:/opt/soft/kubernetes/kubernetes/server/bin# kubectl get nodes

NAME? ? ? ? STATUS? ? ? ? ? ? ? ? ? ? ROLES? ? AGE? VERSION

10.0.0.21? Ready,SchedulingDisabled? master? 79m? v1.22.5

10.0.0.22? Ready,SchedulingDisabled? master? 79m? v1.22.5

10.0.0.23? Ready,SchedulingDisabled? master? 59m? v1.22.5

10.0.0.24? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 78m? v1.22.5

10.0.0.25? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 78m? v1.22.5

10.0.0.26? Ready? ? ? ? ? ? ? ? ? ? ? node? ? 51m? v1.22.5

把部署用的原始文件替換掉

root@master1:/opt/soft/kubernetes/kubernetes/server/bin# cp kube-apiserver kube-controller-manager kube-proxy kube-scheduler kubelet kubectl /etc/kubeasz/bin/

root@master1:/opt/soft/kubernetes/kubernetes/server/bin# ll /etc/kubeasz/bin/

total 878000

drwxr-xr-x? 3 root root? ? ? 4096 Jan? 3 08:10 ./

drwxrwxr-x 12 root root? ? ? 4096 Jan 15 17:19 ../

-rwxr-xr-x? 1 root root? 4536104 Feb? 5? 2021 bridge*

-rwxr-xr-x? 1 root root? 44978176 Aug 24 22:13 calicoctl*

-rwxr-xr-x? 1 root root? 10376657 Aug 24 22:12 cfssl*

-rwxr-xr-x? 1 root root? 6595195 Aug 24 22:13 cfssl-certinfo*

-rwxr-xr-x? 1 root root? 2277873 Aug 24 22:12 cfssljson*

-rwxr-xr-x? 1 root root? 1046424 Aug 24 22:12 chronyd*

-rwxr-xr-x? 1 root root? 36789288 Jan? 3 08:09 containerd*

drwxr-xr-x? 2 root root? ? ? 4096 Aug 24 22:13 containerd-bin/

-rwxr-xr-x? 1 root root? 7172096 Jan? 3 08:09 containerd-shim*

-rwxr-xr-x? 1 root root? 19161064 Jan? 3 08:09 ctr*

-rwxr-xr-x? 1 root root? 61133792 Jan? 3 08:09 docker*

-rwxr-xr-x? 1 root root? 11748168 Aug 24 22:13 docker-compose*

-rwxr-xr-x? 1 root root? 71555008 Jan? 3 08:09 dockerd*

-rwxr-xr-x? 1 root root? ? 708616 Jan? 3 08:09 docker-init*

-rwxr-xr-x? 1 root root? 2928566 Jan? 3 08:09 docker-proxy*

-rwxr-xr-x? 1 root root? 23560192 Jun 16? 2021 etcd*

-rwxr-xr-x? 1 root root? 17969152 Jun 16? 2021 etcdctl*

-rwxr-xr-x? 1 root root? 3357992 Feb? 5? 2021 flannel*

-rwxr-xr-x? 1 root root? 41603072 Dec? 9? 2020 helm*

-rwxr-xr-x? 1 root root? 3565330 Feb? 5? 2021 host-local*

-rwxr-xr-x? 1 root root? 1305408 Aug 24 22:12 keepalived*

-rwxr-xr-x? 1 root root 124809216 Jan 15 18:52 kube-apiserver*

-rwxr-xr-x? 1 root root 118497280 Jan 15 18:52 kube-controller-manager*

-rwxr-xr-x? 1 root root? 46936064 Jan 15 18:52 kubectl*

-rwxr-xr-x? 1 root root 121213080 Jan 15 18:52 kubelet*

-rwxr-xr-x? 1 root root? 43479040 Jan 15 18:52 kube-proxy*

-rwxr-xr-x? 1 root root? 49168384 Jan 15 18:52 kube-scheduler*

-rwxr-xr-x? 1 root root? 3530531 Feb? 5? 2021 loopback*

-rwxr-xr-x? 1 root root? 1777808 Aug 24 22:12 nginx*

-rwxr-xr-x? 1 root root? 3966455 Feb? 5? 2021 portmap*

-rwxr-xr-x? 1 root root? 9600824 Jan? 3 08:09 runc*

-rwxr-xr-x? 1 root root? 3668289 Feb? 5? 2021 tuning*

root@master1:/opt/soft/kubernetes/kubernetes/server/bin# /etc/kubeasz/bin/kube-apiserver --version

六、基于yaml文件創(chuàng)建nginx及tomcat并實(shí)現(xiàn)動(dòng)靜分離

1.1 ubuntu的Dockerfile

Xshellroot@cncf-docker:/opt/dockerfile/system/ubuntu/20.04# cat Dockerfile

FROM ubuntu:20.04

maintainer? "dongxikui"

RUN apt update &&? apt -y install vim wget tree lrzsz gcc build-essential automake libpcre3 libpcre3-dev zlib1g-dev zlib1g openssl libssl-dev iproute2 net-tools iotop make? curl? &&useradd nginx -u 2001 && groupadd www -g 2022 && useradd www -u 2022 -g www

ADD Shanghai? /usr/share/zoneinfo/Asia/

RUN? rm -fr /etc/localtime && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

1.2 nginx的Dockerfile和配置文件

root@cncf-docker:/opt/dockerfile/web/nginx# cat Dockerfile

FROM reg.fchiaas.local/cncf/ubuntu-20-04:v1

maintainer? "dongxikui"

ADD nginx-1.18.0.tar.gz /usr/local/src/

RUN cd /usr/local/src/nginx-1.18.0 && ./configure --prefix=/apps/nginx --with-http_sub_module && make && make install

ADD nginx.conf /apps/nginx/conf/nginx.conf

ADD code.tar.gz /data/nginx/html/webapp

ADD run_nginx.sh /apps/nginx/sbin/

RUN mkdir -p /data/nginx/html/webapp/static /data/nginx/html/webapp/images? && chmod a+x /apps/nginx/sbin/run_nginx.sh && chown -R nginx.nginx /apps/* /data/*

EXPOSE 80 443

CMD ["/apps/nginx/sbin/run_nginx.sh"]

root@cncf-docker:/opt/dockerfile/web/nginx# cat nginx.conf

user? nginx nginx;

worker_processes? auto;

#error_log? logs/error.log;

#error_log? logs/error.log? notice;

#error_log? logs/error.log? info;

#pid? ? ? ? logs/nginx.pid;

daemon off;

events {

? ? worker_connections? 1024;

}

http {

? ? include? ? ? mime.types;

? ? default_type? application/octet-stream;

? ? #log_format? main? '$remote_addr - $remote_user [$time_local] "$request" '

? ? #? ? ? ? ? ? ? ? ? '$status $body_bytes_sent "$http_referer" '

? ? #? ? ? ? ? ? ? ? ? '"$http_user_agent" "$http_x_forwarded_for"';

? ? #access_log? logs/access.log? main;

? ? sendfile? ? ? ? on;

? ? #tcp_nopush? ? on;

? ? #keepalive_timeout? 0;

? ? keepalive_timeout? 65;

? ? #gzip? on;

upstream? tomcat_webserver {

? ? ? ? server? magedu-tomcat-app1-service.magedu.svc.fchiaas.local:80;

}

? ? server {

? ? ? ? listen? ? ? 80;

? ? ? ? server_name? localhost;

? ? ? ? #charset koi8-r;

? ? ? ? #access_log? logs/host.access.log? main;

? ? ? ? location / {

? ? ? ? ? ? root? /data/nginx/html/;

? ? ? ? ? ? index? index.html index.htm;

? ? ? ? }

? ? ? ? location /data/nginx/html/webapp {

? ? ? ? ? ? root? html;

? ? ? ? ? ? index? index.html index.htm;

? ? ? ? }

? ? ? ? location /myapp {

? ? ? ? ? ? proxy_pass? http://tomcat_webserver;

? ? ? ? ? ? proxy_set_header? Host? ? $host;

? ? ? ? ? ? proxy_set_header? X-Forwarded-For $proxy_add_x_forwarded_for;

? ? ? ? ? ? proxy_set_header X-Real-IP $remote_addr;

? ? ? ? }

? ? ? ? #error_page? 404? ? ? ? ? ? ? /404.html;

? ? ? ? # redirect server error pages to the static page /50x.html

? ? ? ? #

? ? ? ? error_page? 500 502 503 504? /50x.html;

? ? ? ? location = /50x.html {

? ? ? ? ? ? root? html;

? ? ? ? }

? ? ? ? # proxy the PHP scripts to Apache listening on 127.0.0.1:80

? ? ? ? #

? ? ? ? #location ~ \.php$ {

? ? ? ? #? ? proxy_pass? http://127.0.0.1;

? ? ? ? #}

? ? ? ? # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

? ? ? ? #

? ? ? ? #location ~ \.php$ {

? ? ? ? #? ? root? ? ? ? ? html;

? ? ? ? #? ? fastcgi_pass? 127.0.0.1:9000;

? ? ? ? #? ? fastcgi_index? index.php;

? ? ? ? #? ? fastcgi_param? SCRIPT_FILENAME? /scripts$fastcgi_script_name;

? ? ? ? #? ? include? ? ? ? fastcgi_params;

? ? ? ? #}

? ? ? ? # deny access to .htaccess files, if Apache's document root

? ? ? ? # concurs with nginx's one

? ? ? ? #

? ? ? ? #location ~ /\.ht {

? ? ? ? #? ? deny? all;

? ? ? ? #}

? ? }

? ? # another virtual host using mix of IP-, name-, and port-based configuration

? ? #

? ? #server {

? ? #? ? listen? ? ? 8000;

? ? #? ? listen? ? ? somename:8080;

? ? #? ? server_name? somename? alias? another.alias;

? ? #? ? location / {

? ? #? ? ? ? root? html;

? ? #? ? ? ? index? index.html index.htm;

? ? #? ? }

? ? #}

? ? # HTTPS server

? ? #

? ? #server {

? ? #? ? listen? ? ? 443 ssl;

? ? #? ? server_name? localhost;

? ? #? ? ssl_certificate? ? ? cert.pem;

? ? #? ? ssl_certificate_key? cert.key;

? ? #? ? ssl_session_cache? ? shared:SSL:1m;

? ? #? ? ssl_session_timeout? 5m;

? ? #? ? ssl_ciphers? HIGH:!aNULL:!MD5;

? ? #? ? ssl_prefer_server_ciphers? on;

? ? #? ? location / {

? ? #? ? ? ? root? html;

? ? #? ? ? ? index? index.html index.htm;

? ? #? ? }

? ? #}

}

1.3JDK的Dockerfile

root@cncf-docker:/opt/dockerfile/web/jdk/jdk1.18.0# cat Dockerfile

俭驮。回溺。。混萝。遗遵。。

unset i

unset -f pathmunge

添加的部分

export JAVA_HOME=/usr/local/jdk

export TOMCAT_HOME=/apps/tomcat

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH

export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

1.4tomcat的Dockerfile

root@cncf-docker:/opt/dockerfile/web/tomcat/tomcat-ubuntu# cat Dockerfile

FROM reg.fchiaas.local/cncf/ubuntu-2004-jdk-1_8_241:v1

LABEL maintainer="dongxikui"

ADD apache-tomcat-8.5.65.tar.gz /apps/

RUN ln -sv /apps/apache-tomcat-8.5.65 /apps/tomcat

ADD run_tomcat.sh /apps/tomcat/bin/run_tomcat.sh

RUN chmod a+x /apps/tomcat/bin/run_tomcat.sh

ADD myapp/* /data/tomcat/webapps/myapp/

ADD server.xml /apps/tomcat/conf/server.xml

RUN chown -R www.www /apps/* /data/*

EXPOSE 8080 8009

CMD ["/apps/tomcat/bin/run_tomcat.sh"]

root@cncf-docker:/opt/dockerfile/web/tomcat/tomcat-ubuntu# cat myapp/index.html

Test myapp1 tomcat page

root@cncf-docker:/opt/dockerfile/web/tomcat/tomcat-ubuntu# cat server.xml

下面是修改的部分

<Host name="localhost" appBase="/data/tomcat/webapps" unpackWARs="false" autoDeploy="false">

1.5nginx的yaml文件

root@master1:~/manifests/case/dynamic_static# cat nginx.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

? labels:

? ? app: magedu-nginx-deployment-label

? name: mangedu-nginx-deployment

? namespace: magedu

spec:

? replicas: 1

? selector:

? ? matchLabels:

? ? ? app: magedu-nginx-selector

? template:

? ? metadata:

? ? ? labels:

? ? ? ? app: magedu-nginx-selector

? ? spec:

? ? ? containers:

? ? ? - name: magedu-nginx-container

? ? ? ? image: reg.fchiaas.local/cncf/ubuntu-2004-nginx-1_18_0:v1

? ? ? ? imagePullPolicy: Always

? ? ? ? ports:

? ? ? ? - containerPort: 80

? ? ? ? ? protocol: TCP

? ? ? ? ? name: http

? ? ? ? - containerPort: 443

? ? ? ? ? protocol: TCP

? ? ? ? ? name: https

? ? ? ? env:

? ? ? ? - name: "password"

? ? ? ? ? value: "123456"

? ? ? ? - name: "age"

? ? ? ? ? value: "20"

? ? ? ? resources:

? ? ? ? ? limits:

? ? ? ? ? ? cpu: 1

? ? ? ? ? ? memory: 2Gi

? ? ? ? ? requests:

? ? ? ? ? ? cpu: 500m

? ? ? ? ? ? memory: 1Gi

? ? ? ? volumeMounts:

? ? ? ? - name: magedu-images

? ? ? ? ? mountPath: /data/nginx/html/webapp/images

? ? ? ? ? readOnly: false

? ? ? ? - name: magedu-static

? ? ? ? ? mountPath: /data/nginx/html/webapp/static

? ? ? ? ? readOnly: false

? ? ? volumes:

? ? ? - name: magedu-images

? ? ? ? nfs:

? ? ? ? ? server: 10.0.0.20

? ? ? ? ? path: /nfs/k8sdata/magedu/images

? ? ? - name: magedu-static

? ? ? ? nfs:

? ? ? ? ? server: 10.0.0.20

? ? ? ? ? path: /nfs/k8sdata/magedu/static

---

kind: Service

apiVersion: v1

metadata:

? labels:

? ? app: magedu-nginx-service-label

? name: magedu-nginx-service

? namespace: magedu

spec:

? type: NodePort

? selector:

? ? ? app: magedu-nginx-selector

? ports:

? - name: http

? ? port: 80

? ? protocol: TCP

? ? targetPort: 80

? ? nodePort: 30090

? - name: https

? ? port: 443

? ? protocol: TCP

? ? targetPort: 443

? ? nodePort: 30091

1.6tomcat的yaml文件

root@master1:~/manifests/case/dynamic_static# cat tomcat.yaml

apiVersion: apps/v1

kind: Deployment

metadata:

? labels:

? ? app: magedu-tomcat-app1-deployment-label

? name: magedu-tomcat-app1-deployment

? namespace: magedu

spec:

? replicas: 1

? selector:

? ? matchLabels:

? ? ? app: magedu-tomcat-app1-selector

? template:

? ? metadata:

? ? ? labels:

? ? ? ? app: magedu-tomcat-app1-selector

? ? spec:

? ? ? containers:

? ? ? - name: magedu-tomcat-app1-container

? ? ? ? image: reg.fchiaas.local/cncf/ubuntu-2004-jdk-1_8_241-tomcat-8_5_65:v1

? ? ? ? imagePullPolicy: Always

? ? ? ? ports:

? ? ? ? - containerPort: 8080

? ? ? ? ? protocol: TCP

? ? ? ? ? name: http

? ? ? ? env:

? ? ? ? - name: "password"

? ? ? ? ? value: "123456"

? ? ? ? - name: "age"

? ? ? ? ? value: "20"

? ? ? ? resources:

? ? ? ? ? limits:

? ? ? ? ? ? cpu: 1

? ? ? ? ? ? memory: 512Mi

? ? ? ? ? requests:

? ? ? ? ? ? cpu: 0.5

? ? ? ? ? ? memory: 512Mi

#? ? ? ? volumeMounts:

#? ? ? ? - name: magedu-images

#? ? ? ? ? mountPath: /data/nginx/html/webapp/images

#? ? ? ? ? readOnly: false

#? ? ? ? - name: magedu-static

#? ? ? ? ? mountPath: /data/nginx/html/webapp/static

#? ? ? ? ? readOnly: false

#? ? ? volumes:

#? ? ? - name: magedu-images

#? ? ? ? server: 10.0.0.20

#? ? ? ? path: /nfs/k8sdata/magedu/images

#? ? ? - name: magedu-static

#? ? ? ? server: 10.0.0.20

#? ? ? ? path: /nfs/k8sdata/magedu/static

#? ? ? nodeSelector:

#? ? ? ? project: magedu

#? ? ? ? app: tomcat

---

kind: Service

apiVersion: v1

metadata:

? labels:

? ? app: magedu-tomcat-app1-service-label

? name: magedu-tomcat-app1-service

? namespace: magedu

spec:

#? type: NodePort

? ports:

? - name: http

? ? port: 80

? ? protocol: TCP

? ? targetPort: 8080

#? ? nodePort: 30092

? selector:

? ? app: magedu-tomcat-app1-selector

1.7 測(cè)試

root@master1:~/manifests/case/dynamic_static# kubectl apply -f tomcat.yaml

deployment.apps/magedu-tomcat-app1-deployment created

service/magedu-tomcat-app1-service created

root@master1:~/manifests/case/dynamic_static# kubectl apply -f nginx.yaml

deployment.apps/mangedu-nginx-deployment created

service/magedu-nginx-service created

root@master1:~/manifests/case/dynamic_static# kubectl get pod -A

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

kube-system? ? ? ? ? ? calico-kube-controllers-59df8b6856-44lmg? ? ? ? 1/1? ? Running? 8 (3h30m ago)? ? 10d

kube-system? ? ? ? ? ? calico-node-4sk4x? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 9 (3h31m ago)? ? 11d

kube-system? ? ? ? ? ? calico-node-7hkv2? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 9 (3h30m ago)? ? 11d

kube-system? ? ? ? ? ? calico-node-7mh6m? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 9 (3h31m ago)? ? 11d

kube-system? ? ? ? ? ? calico-node-qqndf? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 10 (3h30m ago)? 11d

kube-system? ? ? ? ? ? calico-node-szrbs? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 9 (3h30m ago)? ? 11d

kube-system? ? ? ? ? ? calico-node-xrdlz? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 11 (46h ago)? ? 11d

kube-system? ? ? ? ? ? coredns-69d84cdc49-d2lcq? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 8 (3h30m ago)? ? 10d

kube-system? ? ? ? ? ? coredns-69d84cdc49-ztgv4? ? ? ? ? ? ? ? ? ? ? ? 1/1? ? Running? 10 (3h30m ago)? 11d

kubernetes-dashboard? dashboard-metrics-scraper-c45b7869d-rnm7t? ? ? ? 1/1? ? Running? 7 (3h30m ago)? ? 7d22h

kubernetes-dashboard? kubernetes-dashboard-576cb95f94-flnsj? ? ? ? ? ? 1/1? ? Running? 6 (3h30m ago)? ? 6d3h

magedu? ? ? ? ? ? ? ? magedu-tomcat-app1-deployment-5dcbbd96b4-htfwg? 1/1? ? Running? 0? ? ? ? ? ? ? ? 15s

magedu? ? ? ? ? ? ? ? mangedu-nginx-deployment-775c8d479b-mxwxt? ? ? ? 1/1? ? Running? 0? ? ? ? ? ? ? ? 5s

root@master1:~/manifests/case/dynamic_static# kubectl get svc -A

NAMESPACE? ? ? ? ? ? ? NAME? ? ? ? ? ? ? ? ? ? ? ? TYPE? ? ? ? CLUSTER-IP? ? ? EXTERNAL-IP? PORT(S)? ? ? ? ? ? ? ? ? ? ? AGE

default? ? ? ? ? ? ? ? kubernetes? ? ? ? ? ? ? ? ? ClusterIP? 10.100.0.1? ? ? <none>? ? ? ? 443/TCP? ? ? ? ? ? ? ? ? ? ? 11d

default? ? ? ? ? ? ? ? service-nfs-probe? ? ? ? ? ? NodePort? ? 10.100.130.39? ? <none>? ? ? ? 81:30081/TCP? ? ? ? ? ? ? ? 4d5h

kube-system? ? ? ? ? ? kube-dns? ? ? ? ? ? ? ? ? ? ClusterIP? 10.100.0.2? ? ? <none>? ? ? ? 53/UDP,53/TCP,9153/TCP? ? ? 11d

kubernetes-dashboard? dashboard-metrics-scraper? ? ClusterIP? 10.100.21.70? ? <none>? ? ? ? 8000/TCP? ? ? ? ? ? ? ? ? ? 7d22h

kubernetes-dashboard? kubernetes-dashboard? ? ? ? NodePort? ? 10.100.89.237? ? <none>? ? ? ? 443:30443/TCP? ? ? ? ? ? ? ? 7d22h

magedu? ? ? ? ? ? ? ? magedu-nginx-service? ? ? ? NodePort? ? 10.100.205.204? <none>? ? ? ? 80:30090/TCP,443:30091/TCP? 36s

magedu? ? ? ? ? ? ? ? magedu-tomcat-app1-service? ClusterIP? 10.100.120.246? <none>? ? ? ? 80/TCP? ? ? ? ? ? ? ? ? ? ? 46s

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逸嘀,一起剝皮案震驚了整個(gè)濱河市车要,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌崭倘,老刑警劉巖翼岁,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件维哈,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡登澜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門飘庄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脑蠕,“玉大人,你說我怎么就攤上這事跪削∏聪桑” “怎么了?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵碾盐,是天一觀的道長(zhǎng)晃跺。 經(jīng)常有香客問我,道長(zhǎng)毫玖,這世上最難降的妖魔是什么掀虎? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮付枫,結(jié)果婚禮上烹玉,老公的妹妹穿的比我還像新娘。我一直安慰自己阐滩,他們只是感情好二打,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著掂榔,像睡著了一般继效。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上装获,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天瑞信,我揣著相機(jī)與錄音,去河邊找鬼饱溢。 笑死喧伞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绩郎。 我是一名探鬼主播潘鲫,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼肋杖!你這毒婦竟也來了溉仑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤状植,失蹤者是張志新(化名)和其女友劉穎浊竟,沒想到半個(gè)月后怨喘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡振定,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年必怜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片后频。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡梳庆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卑惜,到底是詐尸還是另有隱情膏执,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布露久,位于F島的核電站更米,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏毫痕。R本人自食惡果不足惜征峦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望镇草。 院中可真熱鬧眶痰,春花似錦、人聲如沸梯啤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽因宇。三九已至七婴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間察滑,已是汗流浹背打厘。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贺辰,地道東北人户盯。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像饲化,于是被迫代替她去往敵國和親莽鸭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容