日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

k8s-有状态应用编排

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 k8s-有状态应用编排 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第二十二章、有狀態應用編排-StatefulSet

22.1、需求背景

Deployment:管理所有同版本的Pod都是一摸一樣的副本1.定義一組Pod的期望數量,controller維持pod數量與期望數量一致2.配置Pod發布方式,cotroller會按照給定策略更新pod,保證更新過程中不可用的pod數量在限定范圍內3.如果發布有問題,支持“一鍵”回滾需求分析:Deployment可以滿足嗎?1.Pod之間并非相同的副本,每個Pod有一個獨立標識2.Pod獨立標識要能夠對應到一個固定的網絡標識(ip or hostname),并在發布后能持續保持3.每個Pod有一塊獨立的存儲盤,并在發布升級后還能繼續掛載原有的盤(保留數據)4.應用發布時,按照固定順序升級Pod

StatefulSet:主要面向有狀態應用管理的控制器(當然也可以使用statefulset管理有狀態應用)
1.每個Pod有Order序號,會按照序號創建、刪除、更新Pod
2.通過配置headless service,使每個Pod有一個唯一的網絡標識(hostname)
3.通過配置pvc template,每個pod有一塊獨享的pv存儲盤
4.支持一定數量的灰度發布

22.2、用例解讀

# 1、準備存儲 [root@master1 nfs-share]# showmount -e master1 Export list for master1: /nfs-share * [root@master1 nfs-share]# showmount -e master2 Export list for master2: /nfs-share * [root@master1 nfs-share]# showmount -e master3 Export list for master3: /nfs-share * [root@master1 sts]# cat pv.yaml apiVersion: v1 kind: PersistentVolume metadata:name: nfs-pv1 spec:capacity:storage: 5GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: Recyclenfs:path: /nfs-shareserver: 192.168.153.132 --- apiVersion: v1 kind: PersistentVolume metadata:name: nfs-pv2 spec:capacity:storage: 5GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: Recyclenfs:path: /nfs-shareserver: 192.168.153.133 --- apiVersion: v1 kind: PersistentVolume metadata:name: nfs-pv3 spec:capacity:storage: 5GivolumeMode: FilesystemaccessModes:- ReadWriteOncepersistentVolumeReclaimPolicy: Recyclenfs:path: /nfs-shareserver: 192.168.153.134 --- [root@master1 sts]# kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE nfs-pv1 5Gi RWO Recycle Available 6s nfs-pv2 5Gi RWO Recycle Available 6s nfs-pv3 5Gi RWO Recycle Available 6s [root@master1 sts]##2、創建StatefulSet [root@master1 sts]# cat sts.yaml apiVersion: v1 kind: Service metadata:name: nginxlabels:app: nginx spec:ports:- port: 80clusterIP: Noneselector:app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata:name: nginx-web spec:selector:matchLabels:app: nginxserviceName: "nginx" #sts必須要有對應的servicereplicas: 3template:metadata:labels:app: nginxspec:containers:- name: nginximage: reg.mt.com:5000/nginx:v1ports:- containerPort: 80name: webvolumeMounts:- name: www-storagemountPath: /usr/share/nginx/htmlvolumeClaimTemplates:- metadata:name: www-storagespec:accessModes: [ "ReadWriteOnce" ]resources:requests:storage: 2Gi [root@master1 sts]# kubectl apply -f sts.yaml [root@master1 sts]# kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE www-storage-nginx-web-0 Bound nfs-pv1 5Gi RWO 2m50s www-storage-nginx-web-1 Bound nfs-pv2 5Gi RWO 2m38s www-storage-nginx-web-2 Bound nfs-pv3 5Gi RWO 2m2s [root@master1 sts]# kubectl get svc/nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx ClusterIP None <none> 80/TCP 3m3s [root@master1 sts]# kubectl get endpoints nginx NAME ENDPOINTS AGE nginx 172.7.26.2:80,172.7.26.3:80,172.7.67.2:80 3m20s [root@master1 sts]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-web-0 1/1 Running 0 3m35s #創建順序倉0->1->2 nginx-web-1 1/1 Running 0 3m23s nginx-web-2 1/1 Running 0 2m47s[root@master1 sts]# kubectl get sts/nginx-web -o yaml ... status:collisionCount: 0currentReplicas: 3currentRevision: nginx-web-749477f8fdobservedGeneration: 1readyReplicas: 3replicas: 3updateRevision: nginx-web-749477f8fdupdatedReplicas: 3 [root@master1 sts]# dig -t A nginx.default.svc.cluster.local ... ;; ANSWER SECTION: nginx.default.svc.cluster.local. 5 IN A 172.7.26.3 nginx.default.svc.cluster.local. 5 IN A 172.7.26.2 nginx.default.svc.cluster.local. 5 IN A 172.7.67.2# 3、更新鏡像 [root@master1 sts]# kubectl set image sts nginx-web nginx=reg.mt.com:5000/nginx:v2 statefulset.apps/nginx-web image updated [root@master1 sts]# kubectl get pods //從2->1->0 進行更新 NAME READY STATUS RESTARTS AGE nginx-web-0 1/1 Running 0 22s nginx-web-1 1/1 Running 0 26s nginx-web-2 1/1 Running 0 30s[root@master1 sts]# kubectl get sts/nginx-web -o yaml status:collisionCount: 0currentReplicas: 3currentRevision: nginx-web-85846c6f77 #已經變化observedGeneration: 2readyReplicas: 3replicas: 3updateRevision: nginx-web-85846c6f77updatedReplicas: 3 [root@master1 sts]# kubectl get pvc #沒有變 NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE www-storage-nginx-web-0 Bound nfs-pv1 5Gi RWO 13m www-storage-nginx-web-1 Bound nfs-pv2 5Gi RWO 12m www-storage-nginx-web-2 Bound nfs-pv3 5Gi RWO 12m[root@master1 sts]# kubectl get pods -o wide #ip有一個變化了 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-web-0 1/1 Running 0 5m30s 172.7.67.2 master3 <none> <none> nginx-web-1 1/1 Running 0 5m34s 172.7.26.3 master1 <none> <none> nginx-web-2 1/1 Running 0 5m38s 172.7.67.3 master3 <none> <none>

不同于Deployment使用ReplicaSet來管理版本和維持副本數,StatefulSet controller直接管理下屬的Pod。而Pod中用一個Label來標識版本:controller-revision-hash

22.3、架構設計

1、管理模式

當前版本的StatefulSet指揮在ControllerRevision和pod中添加OwnnerReference,并不會在PVC中添加。擁有OwnerReference的資源,在刪除的時候會級聯刪除資源。即默認情況下刪除statefulset則ControllerRevision和Pod都會被刪除,但是PVC不會被刪除

[root@master1 sts]# kubectl get controllerrevisions #statefuleset使用controllerrevisions 管理pod NAME CONTROLLER REVISION AGE nginx-web-749477f8fd statefulset.apps/nginx-web 1 17m nginx-web-85846c6f77 statefulset.apps/nginx-web 2 8m11s [root@master1 sts]# kubectl get pods --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx-web-0 1/1 Running 0 131m app=nginx,controller-revision-hash=nginx-web-85846c6f77,statefulset.kubernetes.io/pod-name=nginx-web-0 nginx-web-1 1/1 Running 0 131m app=nginx,controller-revision-hash=nginx-web-85846c6f77,statefulset.kubernetes.io/pod-name=nginx-web-1 nginx-web-2 1/1 Running 0 131m app=nginx,controller-revision-hash=nginx-web-85846c6f77,statefulset.kubernetes.io/pod-name=nginx-web-2

2、StatefuleSet控制器

  • 首先通過注冊 Informer 的 Event Handler(事件處理),來處理 StatefulSet 和 Pod 的變化。在 Controller 邏輯中,每一次收到 StatefulSet 或者是 Pod 的變化,都會找到對應的 StatefulSet 放到隊列。緊接著從隊列取出來處理后,先做的操作是 Update Revision,也就是先查看當前拿到的 StatefulSet 中的 template,有沒有對應的 ControllerRevision。如果沒有,說明 template 已經更新過,Controller 就會創建一個新版本的 Revision,也就有了一個新的 ControllerRevision hash 版本號。
  • 然后 Controller 會把所有版本號拿出來,并且按照序號整理一遍。這個整理的過程中,如果發現有缺少的 Pod,它就會按照序號去創建,如果發現有多余的 Pod,就會按照序號去刪除。當保證了 Pod 數量和 Pod 序號滿足 Replica 數量之后,Controller 會去查看是否需要更新 Pod。也就是說這兩步的區別在于,Manger pods in order 去查看所有的 Pod 是否滿足序號;而后者 Update in order 查看 Pod 期望的版本是否符合要求,并且通過序號來更新。
  • Update in order 其更新過程如上圖所示,其實這個過程比較簡單,就是刪除 Pod。刪除 Pod 之后,其實是在下一次觸發事件,Controller 拿到這個 success 之后會發現缺少 Pod,然后再從前一個步驟 Manger pod in order 中把新的 Pod 創建出來。在這之后 Controller 會做一次 Update status,也就是之前通過命令行看到的 status 信息。

3、擴容模擬

StatefulSet下的pod,從序號0開始創建(從一個Pod擴容到3個Pod,默認是先創建Pod1,Pod1 Ready后,才會創建Pod2)。因此replicas=N的StatefulSet,創建出的Pod序號為[0,N)

4、擴縮容管理策略

5、發布模擬

6、spec字段解析

  • Replicas: 期望數量
  • Selector:選擇器,必須匹配.spec.template.metadata.labels
  • Template: pod模板
  • VolumeClaimTemplate: PVC模板列表
  • ServiceName: 對應的Headless Service的名字,用于給Pod生成唯一的網絡標識
  • PodManagementPolicy: Pod管理策略
    • OrderedReady:順序執行
    • Parallel:并行
  • UpdateStrategy: Pod升級策略
    • RollingUpdate: 滾動升級
    • OnDelete: 禁止主動升級
  • RevisionHisotryLimit: 保留歷史ControllerRevision的數量限制(默認為10)
  • Partition: 滾動升級時,保留舊版本Pod的數量,假設replicas=N,partition=M(M<=N),則最終舊版本Pod為[0,M) 新版本Pod為[M,N)

第二十三章、Kubernetes API編程范式

23.1、需求背景

Kubernetes Custom resources definition(CRD) 背景問題:

  • 用戶自定義資源需求比較多
  • 希望kubernetes提供聚合各個子資源的功能
  • Kubernetes原生資源無法滿足需求
  • Kubernetes APIServer擴展比較復雜

CRD 介紹:

  • 在Kubernetes 1.7 版本被引入
  • 可以根據自己的需求添加自定義Kubernetes對象資源
  • 自定義資源與Kubernetes原生內置資源一樣共用kubectl CLI,安全,RBAC等功能
  • 用戶同時可以開發自定義控制器感知或者操作自定義資源的變化

23.2、用例解讀

1、基礎用法

apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata:# 名稱必須與下面的spec字段匹配,格式為: <plural>.<group>name: crontabs.stable.example.com spec:# 用于REST API的組名稱: /apis/<group>/<version>group: stable.example.com# 此CustomResourceDefinition支持的版本列表versions:- name: v1# 每個版本都可以通過服務標志啟用/禁用。served: true# 必須將一個且只有一個版本標記為存儲版本。storage: true# 指定crd資源作用范圍在命名空間或集群scope: Namespacednames:# URL中使用的復數名稱: /apis/<group>/<version>/<plural>plural: crontabs# 在CLI(shell界面輸入的參數)上用作別名并用于顯示的單數名稱singular: crontab# kind字段使用駝峰命名規則. 資源清單使用如此kind: CronTab# 短名稱允許短字符串匹配CLI上的資源,意識就是能通過kubectl 在查看資源的時候使用該資源的簡名稱來獲取。shortNames:- ct --- apiVersion: "stable.example.com/v1" kind: CronTab metadata:name: my-new-cron-object spec: #因為crd定義的spec沒有定義,這里可以隨便定義,但是格式為key:valuecronSpec: "* * * * */5"image: my-awesome-cron-image[root@master1 crd]# kubectl get crontab/my-new-cron-object -o yaml apiVersion: stable.example.com/v1 kind: CronTab metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{"apiVersion":"stable.example.com/v1","kind":"CronTab","metadata":{"annotations":{},"name":"my-new-cron-object","namespace":"default"},"spec":{"cronSpec":"* * * * */5","image":"my-awesome-cron-image"}}creationTimestamp: "2021-03-15T12:58:47Z"generation: 1name: my-new-cron-objectnamespace: defaultresourceVersion: "843195"selfLink: /apis/stable.example.com/v1/namespaces/default/crontabs/my-new-cron-objectuid: 1b839c01-4c34-4ed7-8b31-81879a192b47 spec:cronSpec: '* * * * */5'image: my-awesome-cron-image [root@master1 crd]# kubectl get ct NAME AGE my-new-cron-object 9m34s [root@master1 crd]# kubectl get crontab NAME AGE my-new-cron-object 9m53s

2、示例2說明-CRD字段校驗&增加狀態列

對CRD的內容部分限制。使用OpenAPI v3 模式來驗證我們自定義的資源對象: [root@master1 crd]# cat crd.yaml apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata:name: crontabs.stable.example.com spec:group: stable.example.comversions:- name: v1served: truestorage: truescope: Namespacednames:plural: crontabssingular: crontabkind: CronTabshortNames:- ctvalidation:openAPIV3Schema:properties:spec:properties:cronSpec: #--必須是字符串,并且必須是正則表達式所描述的形式type: stringpattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'replicas: #----必須是整數,最小值必須為1,最大值必須為10type: integerminimum: 1maximum: 10additionalPrinterColumns: #限制狀態列- name: Spectype: stringdescription: The cron spec defining the interval a CronJob is runJSONPath: .spec.cronSpec- name: Replicastype: integerdescription: The number of jobs launched by the CronJobJSONPath: .spec.replicas- name: Agetype: dateJSONPath: .metadata.creationTimestamp [root@master1 crd]# cat my-crontabl.yaml apiVersion: "stable.example.com/v1" kind: CronTab metadata:name: my-new-cron-object spec:cronSpec: "* * * * */5"image: my-awesome-cron-imagereplicas: 5 [root@master1 crd]# kubectl get crontab NAME SPEC REPLICAS AGE my-new-cron-object * * * * */5 5 2m1s

3、添加狀態和自動伸縮

[root@master1 crd]# cat crd.yaml apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata:name: crontabs.stable.example.com spec:group: stable.example.comversions:- name: v1served: truestorage: truescope: Namespacednames:plural: crontabssingular: crontabkind: CronTabshortNames:- ctvalidation:openAPIV3Schema:properties:spec:properties:cronSpec: #--必須是字符串,并且必須是正則表達式所描述的形式type: stringpattern: '^(\d+|\*)(/\d+)?(\s+(\d+|\*)(/\d+)?){4}$'replicas: #----必須是整數,最小值必須為1,最大值必須為10type: integerminimum: 1maximum: 10additionalPrinterColumns: #限制狀態列- name: Spectype: stringdescription: The cron spec defining the interval a CronJob is runJSONPath: .spec.cronSpec- name: Replicastype: integerdescription: The number of jobs launched by the CronJobJSONPath: .spec.replicas- name: Agetype: dateJSONPath: .metadata.creationTimestamp# 自定義資源的子資源描述subresources:# 啟用狀態子資源。status: {}# 啟用scale子資源scale:specReplicasPath: .spec.replicasstatusReplicasPath: .status.replicaslabelSelectorPath: .status.labelSelector [root@master1 crd]# cat my-crontabl.yaml apiVersion: "stable.example.com/v1" kind: CronTab metadata:name: my-new-cron-object spec:cronSpec: "* * * * */5"image: my-awesome-cron-imagereplicas: 2 [root@master1 crd]# kubectl apply -f my-crontabl.yaml crontab.stable.example.com/my-new-cron-object created [root@master1 crd]# kubectl get ct NAME SPEC REPLICAS AGE my-new-cron-object * * * * */5 2 3s [root@master1 crd]# kubectl scale --replicas=5 crontabs/my-new-cron-object #scale報錯失敗 The crontabs "my-new-cron-object" is invalid: metadata.resourceVersion: Invalid value: 0x0: must be specified for an update [root@master1 crd]# kubectl edit ct/my-new-cron-object #修改replicas為5成功,待后續詳細了解原因 crontab.stable.example.com/my-new-cron-object edited [root@master1 crd]# kubectl get ct NAME SPEC REPLICAS AGE my-new-cron-object * * * * */5 5 28s

更多用法,參考:https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/

23.3、架構設計

Controller 控制器概覽:

  • Kubernetes提供一種可插拔式的方法來擴展或者控制聲明式Kubernetes資源
  • 控制器是Kubernetes的大腦,負責控制大部分資源的操作
  • Deployment等就是通過Kube-controller-manager來部署對應的Pod并維護Pod指定的數量和狀態
  • 用戶聲明完成CRD后,需要創建一個控制器來操作自定義資源完成目標

Controller工作概覽:

  • Informer 負責watch和list apiserver
  • Informer收到信息后,調用對應的函數把對應的事件放到Queue中。
  • Controller 從Queue中獲取到對象后,會去做相應的操作

工作流程:

首先,通過 kube-apiserver 來推送事件,比如 Added, Updated, Deleted;然后進入到 Controller 的 ListAndWatch() 循環中;ListAndWatch 中有一個先入先出的隊列,在操作的時候就將其 Pop() 出來;然后去找對應的 Handler。Handler 會將其交給對應的函數(比如 Add(), Update(), Delete())。

一個函數一般會有多個 Worker。多個 Worker 的意思是說比如同時有好幾個對象進來,那么這個 Controller 可能會同時啟動五個、十個這樣的 Worker 來并行地執行,每個 Worker 可以處理不同的對象實例。

工作完成之后,即把對應的對象創建出來之后,就把這個 key 丟掉,代表已經處理完成。如果處理過程中有什么問題,就直接報錯,打出一個事件來,再把這個 key 重新放回到隊列中,下一個 Worker 就可以接收過來繼續進行相同的處理。

第二十四章、Kubernetes API編程利器(待補充)

備注:本章節,待后續補充和完善

24.1、Operator概述

An Operator represents human operational knowledge in software, to reliably manage an application. They are methods of packaging, deploying, and managing a Kubernetes application.The goal of an Operator is to put operational knowledge into software. Previously this knowledge only resided in the minds of administrators, various combinations of shell scripts or automation software like Ansible. It was outside of your Kubernetes cluster and hard to integrate. With Operators, CoreOS changed that.通俗的講:就是運維和部署的操作交給Operator實現,比如備份、擴容、故障恢復、聲明式部署、版本升級等

1、基本概念:

  • CRD:Custom Resource Definition,允許用戶自定義kubernetes資源
  • CR:Custom Resource,CRD的具體實例
  • webhook: webhook關聯在apiserver上,是一種HTTP回調,一個基于web應用實現的webhook會在特定事件發生時把消息發送給特定的URL。用戶一般可以定義兩類webhook:
    • mutating webhook(變更傳入對象)
    • validating webhook(傳入對象校驗)
  • 工作隊列:controller核心組件,controller會監控集群內關注資源對象的變化,并把相關對象的事件(動作和key),存儲入工作隊列中
  • controller: controller是檢測集群狀態變化,并據此做出相應處理的控制循環。它關聯一個工作隊列,循環處理隊列內容。每一個controller都試圖把集群狀態向預期狀態推動,只是關注的對象不同,如replicaset controller和endpoint controller
  • operator: operator是描述、部署和管理kubernetes應用的一套機制,從實現上來說,operator = CRD + webhook + controller
  • Operator和K8s controller的關系:
    • 所有的Operator都是用了Controller模式,但并不是所有Controller都是Operator,只有當它滿足: controller模式 + API擴展 + 專注于某個App/中間件時,才是一個Operator。
    • Operator就是使用CRD實現的定制化的Controller. 它與內置K8S Controller遵循同樣的運行模式(比如 watch, diff, action)
    • Operator是特定領域的Controller實現

示例:mysql-operator是如何進行定時備份的:

2、常見operator工作模式

  • 用戶創建一個CRD
  • apiserver轉發請求給webhook
  • webhook負責CRD的缺省值配置和配置項校驗
  • controller獲取到新建的CRD,處理“創建副本”等關聯邏輯
  • controller實時監測CRD相關集群信息并反饋到CRD狀態
  • 24.2、Operator Framework

    CoreOS提供了Operator Framework加速Operator的開發。主要包含組件:Operator SDK,Operator Lifecycle Manager,Operator registry

    1、Operator Framework概述:

    • Operator framework給用戶提供了webhook和controller框架,包括消息通知、失敗重新入隊列等等,開發人員僅需關系被管理應用的運維邏輯實現
    • 主流Operator framework項目:
      • kubebuilder:?https://github.com/kubernetes-sigs/kubebuilder
      • operator-sdk:?https://github.com/operator-framework/operator-sdk
      • 兩者沒有本質上的區別,都是使用controller-tools和controller-runtime。細節上kubebuilder相應的策略、部署、代碼生成腳手架更完善,如Makefile和Kustomsize等工具的集成;operator sdk則支持與ansible operator、Operator Lifecycle Manager的集成

    2、Operator capability levels

    Operators come in different maturity levels in regards to their lifecycle management capabilities for the application or workload they deliver. The capability models aims to provide guidance in terminology to express what features users can expect from an Operator.

    • Level I: 常見的Deployment,ConfigMap,PV,PVC創建等
    • Level II: 版本或配置更新
    • Level III: 整個生命周期管理,備份,故障恢復
    • Level IV: 監控,告警,計量
    • Level V: 自動擴容、自愈、預警、調優、異常檢測

    3、最佳實踐

    https://sdk.operatorframework.io/docs/

    24.3、工作流程

  • 用戶創建sidecarset
  • webhook負責siecars的缺省值配置和配置項校驗
  • 用戶創建pod
  • webhook負責向pod注入sidecar容器
  • controller實時監測pod信息,并更新到sidecarset狀態
  • 第二十五章、Kubernetes網絡模型進階

    25.1、Kubernetes網絡模型來龍去脈

    前人挖坑:早期Docker網絡的由來與弊端

    凡是用過Docker的,都見過Docker0 Bridge 和172.XX:

    • 最好的便利設計是與外部世界解耦,使用私網地址+ 內部Bridge
    • 出宿主機,采用SNAT借IP,進宿主機用DNAT借端口
    • 問題就是一堆NAT包在跑,難以區分宿主機和容器的流量。假如相同容器不同node組成group對外訪問服務的時候。難以實現

    后人填坑:Kubernetes新人新氣象

    一句話,讓一個功能聚集小團隊(Pod)正大光明的擁有自己的身份證 --- IP:

    • Pod的IP是真身份證,通信全球就這一個號,拒絕任何變造(NAT)
    • Pod內的容器共享這個身份
    • 實現手段不限,可以讓外部路由器幫你加條目,也可以自己創建Overlay網絡穿越

    官方說明:https://github.com/containernetworking/cni

    25.2、Pod如何上網

    網絡包不會自己非:只能一步一步爬

    我們從兩個維度來看:

    • 1)協議層次,需要從L2層(MAC)To L3層(IP尋址) To L4(4層協議+端口)

    • 2)網絡拓撲,需要從容器空間To宿主機空間To遠端

    接入:容器和宿主機空間之間鏈接方式;流控:網絡策略;通道:兩個host之間的通信方式

    一個簡單的路由方案:Flannel-host-gw

    IPAM方案:

    • 每個Node獨占網段,Gateway放在本地,好處是管理簡單,壞處pod ip是無法跨Node飄逸

    網絡包勇往直前的一生:

    • 1、Pod-netns 內出生:容器應用產生高層數據,比如從左邊10.244.0.2發送到10.244.1.3,根據路由決定目的Mac,如屬于同一subnet內直接發送給本機另一個容器,如另一網段,則填寫Gw-mac(cni0橋),通過pod-netns內veth pair發送到cni0橋;
    • 2、mac-橋轉發:Bridge的默認行為是按照mac轉發數據,如目的mac為本橋上某port(另一容器)就直接轉發;如目的為cni0 mac,則數據上送到Host協議棧處理;
    • 3、ip-主機路由轉發:此時包剝離mac層,進入IP尋址層,如目的IP為本機Gw(cni0)則上送到本地用戶進程,如目的為其他網段,則查詢本地路由表(見圖ip route塊),找到該網段對應的遠端Gw-ip(其實是遠端主機IP),通過neigh系統查詢出遠端Gw-ip的mac地址,作為數據的目的mac,通過主機eth0送食醋胡;
    • 4、IP-遠端路由轉發:由于mac地址的指引,數據包準確送到遠端節點,通過eth0進入主機協議棧,再查詢一次路由表,正常的話目的網段的對應設備為自己的cni0 iP,數據發送給了cni0;
    • 5、mac-遠程橋轉發:cni0作為host inernal port on Bridge,收到數據包后,繼續推送,IP層的處理末端填寫目的ip(10.244.1.3)的mac,此時通過bridge fdb表查出mac(否則發arp廣播),經過bridge mac轉發,包終于到了目的容器netns。

    發送方向主要有三個方向:1.同pod內同container,2.同node上不同pod,3.不同node上不同pod;

    #創建兩個pod,nginx-web-0和nginx-web-1互訪。#1、信息查看 [root@master1 ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-web-0 1/1 Running 1 2d4h 172.7.61.3 master1 <none> <none> nginx-web-1 1/1 Running 1 2d4h 172.7.34.2 master3 <none> <none>nginx-web-0(172.7.61.3)訪問 nginx-web-1(172.7.34.2)步驟1:查看nginx-web-0的路由信息 [root@master1 sts]# kubectl exec -it nginx-web-0 -- ip route list #nginx-web-0的路由 default via 172.7.61.1 dev eth0 #默認路由,61.1為nginx-web-0所在node(master1)pod從etcd獲取到的網 172.7.61.0/24 dev eth0 proto kernel scope link src 172.7.61.3步驟2:查看master1 docker0配置信息 [root@master1 sts]# ifconfig docker0 docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.7.61.1 netmask 255.255.255.0 broadcast 172.7.61.255inet6 fe80::42:3eff:fe01:437d prefixlen 64 scopeid 0x20<link>ether 02:42:3e:01:43:7d txqueuelen 0 (Ethernet)RX packets 5156 bytes 424166 (414.2 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 5246 bytes 464075 (453.1 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0步驟3:查看master1的路由信息 [root@master1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.116.2 0.0.0.0 UG 100 0 0 ens33 172.7.34.0 192.168.153.134 255.255.255.0 UG 0 0 0 ens34 #訪問34.0網段的GW為153.134 172.7.61.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0 192.168.116.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.153.0 0.0.0.0 255.255.255.0 U 101 0 0 ens34步驟4:查看192.168.153.134(master3)的路由信息 [root@master3 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.116.2 0.0.0.0 UG 100 0 0 ens33 172.7.34.0 0.0.0.0 255.255.255.0 U 0 0 0 docker0 #本機pod網段 172.7.61.0 192.168.153.132 255.255.255.0 UG 0 0 0 ens34 #master1的pod網段 192.168.116.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.153.0 0.0.0.0 255.255.255.0 U 101 0 0 ens34[root@master1 sts]# kubectl exec -it nginx-web-1 -- ip route list #nginx-web-1的路由 default via 172.7.34.1 dev eth0 172.7.34.0/24 dev eth0 proto kernel scope link src 172.7.34.2步驟5:抓包分析 #在nginx-web-0中ping 172.7.34.2 -c 1,在master3上抓包 [root@master3 ~]# tcpdump -i veth95c84ba 19:37:41.998341 ARP, Request who-has 172-7-34-2.lightspeed.livnmi.sbcglobal.net tell 172-7-34-1.lightspeed.livnmi.sbcglobal.net, length 28 //誰擁有34.2的ip,請告訴34.1(master3所在pod網段的GW)19:37:41.998388 ARP, Reply 172-7-34-2.lightspeed.livnmi.sbcglobal.net is-at 02:42:ac:07:22:02 (oui Unknown), length 28 //34.2的mac地址為 02:42:ac:07:22:0219:37:41.998395 IP 172-7-61-3.lightspeed.rcsntx.sbcglobal.net > 172-7-34-2.lightspeed.livnmi.sbcglobal.net: ICMP echo request, id 65, seq 1, length 64 //61.3 發送ICMP 請求 到34.219:37:41.998421 IP 172-7-34-2.lightspeed.livnmi.sbcglobal.net > 172-7-61-3.lightspeed.rcsntx.sbcglobal.net: ICMP echo reply, id 65, seq 1, length 64 //34.2回復 61.3 ICMP請求19:37:47.014048 ARP, Request who-has 172-7-34-1.lightspeed.livnmi.sbcglobal.net tell 172-7-34-2.lightspeed.livnmi.sbcglobal.net, length 28 //誰擁有34.1的ip,請告訴34.219:37:47.014177 ARP, Reply 172-7-34-1.lightspeed.livnmi.sbcglobal.net is-at 02:42:62:e5:d2:da (oui Unknown), length 28 //34.1的mac為 02:42:62:e5:d2:da

    25.3、Service究竟如何工作

    Service = Internal Load Balance @Client side //service為客戶端的負載均衡

    1)一群Pod組成一組功能后端
    2)定義一個穩定的虛IP作為訪問前端,一般還附贈一個DNS域名,Client無需感知Pod的細節;
    3)kube-proxy是實現核心,隱藏了大量復雜性,通過apisrever監控Pod/Service的變化,反饋到LB配置中。
    4)LB的實現機制與目標解耦,可以是用戶態進程,也可以是一堆精心設計的Rules(iptables/ipvs)

    三步 ! 寫一個高端大氣的LVS 版Service

    背景知識:一定要讓kernel認為vip是本地地址,這樣4層LVS才能開始干活

    • 第一步:綁定VIP到本地(欺騙內核)
      • ip route add to local 192.168.60.200/32 dev eth0 proto kernel
    • 第二步:為這個虛IP創建一個IPVS的Virtual server
      • ipvsadm -A -t 192.168.60.200:9376 -s rr -p 600
    • 第三步:為這個IPVS service創建相應的real server
      • ipvsadm -a -t 192.168.60.200:9376 -r 10.1.2.3:80 -m
      • ipvsadm -a -t 192.168.60.200:9376 -r 10.1.4.5:80 -m
      • ipvsadm -a -t 192.168.60.200:9376 -r 10.1.3.8:80 -m

    [root@master1 ~]# kubectl get svc nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx ClusterIP 192.168.0.82 <none> 22/TCP 2d5h [root@master1 ~]# ipvsadm -Ln -t 192.168.0.82:22 Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.0.82:22 nq-> 172.7.34.2:22 Masq 1 0 0-> 172.7.61.3:22 Masq 1 0 0 [root@master3 ~]# ipvsadm -Ln -t 192.168.0.82:22 Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.0.82:22 nq-> 172.7.34.2:22 Masq 1 0 0-> 172.7.61.3:22 Masq 1 0 0

    25.4、負載均衡

    Service類型:


    • ClusterIP: Node內部使用,將Service 承載在一個內部ClusterIP上,注意該服務只能保證集群內可達,這也是默認的服務類型
    • NodePort:供集群外部調用,將Service承載在Node的靜態端口,其實服務創建的時候也會自動創建一個CLusterIP,這樣依賴,服務就暴露在Node的端口上,集群外的用戶通過?$NODE_IP:$NODE_PORT?的方式訪問Service。
    • LoadBalancer: 給云廠商預留的擴展接口,將Service通過外部云廠商的負載均衡端口承載,其實為方便云廠商的插件編寫,NodePor和ClusterIP兩種機制也會自動創建,云廠商可以有選擇將外部LB掛載到這兩種機制上去。
    • ExternalName:去外面自由的飛翔,將Servie的服務完全映射到外部的名稱(如域名),這種機制完全依賴外部實現,Service與CNAME掛鉤,內部不會自動創建任何機制

    一個真正能工作云上的、從0搭建的負載均衡系統

    [root@master1 ~]# kubectl port-forward --address 192.168.153.132 pod/nginx-web-1 8888:2222 Forwarding from 192.168.153.132:8888 -> 2222 [root@master1 ~]# netstat -tunlp |grep 88 tcp 0 0 192.168.153.132:8888 0.0.0.0:* LISTEN 40196/kubectl

    25.5、思考一下

    • 容器層的網絡就就那個如何與宿主機網絡共存,overlay or underlay?
    • Service還可以有怎么樣的實現?
    • 為什么一個容器編排系統要大力搞服務發現和負載均衡?

    第二十六章、理解CNI和CNI插件

    26.1、CNI概述

    CNI是啥?

    • Container Network Interface,容器網絡的API接口
    • Kubelet通過這個標準的API調用不同的網絡插件實現配置網絡
    • CNI插件:一系列實現了CNI API接口的網絡插件

    Kubernetes中如何使用?

    • 1、配置CNI配置文件(/etc/cni/net.d/xxnet.conf)
    • 2、安裝CNI二進制插件(/opt/cni/bin/xxnet)
    • 3、在這個節點上創建Pod
    • 4、Kubelet會根據CNI配置文件執行CNI插件
    • 5、Pod的網絡就配置完成了

    如果只是使用CNI插件的話,大部分CNI插件的提供者都可以一鍵安裝:kubectl apply -f XXXX/flannel.yml,Flannel會通過Daemonset自動把配置和二進制拷貝到Node的配置文件夾中

    26.2、CNI挑選

    路由:要求底層網絡二層可達的能力,Underlay 容器和宿主機在同一個網絡

    挑選建議:

    26.3、如何開發自己的CNI插件

    CNI插件實現通常需要兩個階段:

    • 一個二進制的CNI插件去配置Pod的網卡和IP等 ==> 給Pod插上網線
    • 一個Daemon 進程去管理Pod之間的網絡打通 ==> 給Pod連上網絡

    階段1、給Pod插上網線

    • 1、給Pod準備虛擬網卡
      • 創建“veth“虛擬網卡對
      • 將一端的網卡挪到Pod中,另外一段放在主機的網絡空間中
    • 2、給Pod分配IP地址
      • 給Pod分配集群中唯一的IP地址
      • 一般會把Pod網段按Node分段
      • 每個Pod再從Node段中分配IP
    • 3、配置Pod的IP和路由
      • 給Pod的虛擬網卡(pod內)配置分配到的IP
      • 給Pod的網卡(pod內)上配置集群網段的路由
      • 在宿主機上配置到Pod的IP地址的路由到對端虛擬網卡上(pod外)

    階段2、給Pod連上網絡:讓每一個Pod的IP在集群中都能被訪問到

    • 1、CNI Daemon進程學習到集群所有Pod的IP和其所在節點
      • 通常通過請求K8s APIServer拿到現有Pod的IP地址和節點
      • 監聽K8s APIServer新的Node和Pod的創建自動配置
    • 2、CNI Daemon配置網絡來打通Pod的IP的訪問
      • 創建到所有Node 的通道:Overlay隧道,VPC路由表,BGP路由等
      • 將所有Pod的IP地址跟其所在Node的通道關聯起來:Linux路由,Fdb路由表,OVS流表等

    26.4、課后思考實踐

    • 在自己公司的網絡環境中,選擇哪一種網絡插件最合適?
    • 嘗試自己實現一個CNI插件

    總結

    以上是生活随笔為你收集整理的k8s-有状态应用编排的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    在线观看中文字幕2021 | 香蕉久久久久久av成人 | 在线免费观看视频一区二区三区 | 久久丝袜视频 | 国产不卡精品 | 日韩欧美国产精品 | 欧美另类z0zx| 91九色视频在线 | 精品免费99久久 | 日韩免费看 | 免费高清在线观看成人 | 亚洲黄色av网址 | 在线一区观看 | 日韩欧美一区二区三区免费观看 | 日日草视频 | а天堂中文最新一区二区三区 | 国产手机在线播放 | av免费片 | 亚洲精品国产精品国自产在线 | wwwwwww色| 91中文视频 | 国产成人一区二区三区在线观看 | 天天色草 | 成人国产精品久久久久久亚洲 | 中文字幕91在线 | 91欧美日韩国产 | 日韩婷婷 | av最新资源 | 日韩黄色中文字幕 | 丁香六月色 | 久久网站免费 | 免费看片网页 | 草免费视频| 日本三级大片 | 国产人成看黄久久久久久久久 | 欧美性黑人 | 欧美9999| 色综合天天在线 | 成人免费视频在线观看 | 国产精品视频免费看 | 国产中文字幕一区 | 操久久网 | 国产精品大片在线观看 | 亚洲欧美国内爽妇网 | 韩国av不卡 | 91av视频在线观看免费 | 亚洲精品国产精品国自产观看浪潮 | 亚洲欧美日韩精品久久久 | 国产va饥渴难耐女保洁员在线观看 | 午夜体验区 | 国产成人香蕉 | 日日弄天天弄美女bbbb | 日韩综合一区二区三区 | 国产精品久久久久婷婷二区次 | 九九九热 | 婷婷久久久久 | 国产成人久久av977小说 | 最近中文字幕视频网 | 国产3p视频 | 久久国产精品免费看 | zzijzzij亚洲成熟少妇 | 天天操天天操天天操天天操天天操天天操 | 婷婷激情五月综合 | 成人免费观看完整版电影 | 久久国产精品视频免费看 | 91九色在线观看视频 | 精品毛片在线 | 国产99免费 | 久久国产精品一区二区 | 麻豆视频一区 | 日韩www在线 | 亚洲成a人片77777潘金莲 | 成人免费看电影 | 国产成人三级一区二区在线观看一 | 国产最新在线观看 | 99精品视频在线观看免费 | 美女网站久久 | 亚洲精品国久久99热 | 麻豆视频免费看 | 99草在线视频 | 一区在线播放 | 99视频在线免费观看 | 99热这里有精品 | 久久精品视频在线观看 | 97人人模人人爽人人少妇 | 亚洲黄色高清 | 欧美成年性 | 色999精品| 国产一区麻豆 | av一级在线 | 亚洲日本黄色 | 免费精品在线观看 | 亚洲精品美女视频 | 国产剧情一区二区在线观看 | 中国一级片免费看 | 久操97| 999成人免费视频 | 国产精品人成电影在线观看 | 99爱视频在线观看 | 一级一片免费观看 | 欧洲精品视频一区二区 | 婷婷丁香导航 | 999精品在线 | 天天操婷婷 | 伊人五月天.com | 国产最新视频在线观看 | 久热免费 | 天天色天天射天天操 | 日日操夜夜操狠狠操 | 久久午夜精品影院一区 | 国产成人久久77777精品 | 久久人人爽 | 在线观看mv的中文字幕网站 | 高清国产一区 | 91热精品| 日韩欧美精品在线观看视频 | 人人澡人人爱 | 亚洲视频一区二区三区在线观看 | 99色视频 | 色偷偷88888欧美精品久久久 | 国产不卡av在线播放 | 亚洲成人av影片 | 国产精品乱码高清在线看 | 96超碰在线 | 黄色软件在线观看免费 | 不卡的av在线 | 伊人天天综合 | 亚洲激色 | 免费黄色网止 | 夜夜视频欧洲 | 国产黄色观看 | 成人h在线 | 精品国产精品国产偷麻豆 | 天天搞天天干天天色 | 久久电影日韩 | 久久精品影片 | 丰满少妇在线观看资源站 | 中文字幕影片免费在线观看 | 天海冀一区二区三区 | 国产一级黄色av | 国产日韩欧美综合在线 | 亚洲美女久久 | 97国产在线观看 | 日韩高清在线一区二区三区 | 免费电影一区二区三区 | 色偷偷网站视频 | 国产污视频在线观看 | 国产在线观看你懂得 | 亚洲精品乱码久久久久久9色 | 国产精品久久久久aaaa | 欧美亚洲精品在线观看 | 最新日韩视频在线观看 | 国产九九九九九 | 精品成人免费 | 综合久色 | 色就色,综合激情 | 91爱爱网址 | 国产日韩视频在线观看 | 天天操天天操天天操天天操天天操 | 欧美日韩在线视频免费 | 国产一区二区精 | 亚洲影视九九影院在线观看 | 最新av免费在线 | 久久久精品网站 | 青青五月天 | 天天色天天射综合网 | 91精品欧美一区二区三区 | 婷婷六月色 | 国产区第一页 | 五月婷婷六月综合 | 51久久夜色精品国产麻豆 | 欧美色888 | 美女视频a美女大全免费下载蜜臀 | 77国产精品 | 九九免费在线视频 | 丁香五婷| 在线视频观看你懂的 | 亚洲日本一区二区在线 | 亚洲人人精品 | 国产成人一区二区啪在线观看 | 成人小视频在线观看免费 | 免费又黄又爽视频 | 亚洲精品高清一区二区三区四区 | 日韩在线观看高清 | 黄色网址中文字幕 | 91手机在线看片 | 高清日韩一区二区 | 国产高清免费av | 欧美最新大片在线看 | 亚洲精品乱码久久久久久9色 | 国产成人三级在线观看 | 成人午夜影院在线观看 | 午夜免费久久看 | 尤物97国产精品久久精品国产 | 九九久久久久久久久激情 | 超碰在线最新网址 | 狠狠久久婷婷 | 国产成人精品一区二区三区 | 麻豆精品在线视频 | 日韩av电影免费观看 | 午夜国产福利在线 | 午夜精品久久久久久久99婷婷 | 亚洲国产精品va在线看 | 日韩视频精品在线 | 少妇搡bbbb搡bbb搡忠贞 | 欧美精品在线观看免费 | 五月天久久狠狠 | 午夜久久久久久久久久久 | 久久人人爽人人爽人人片 | av黄色免费在线观看 | 国产盗摄精品一区二区 | 国产福利免费看 | 亚洲区精品视频 | 999亚洲国产996395 | 婷婷去俺也去六月色 | 久久天天躁 | 亚洲视频专区在线 | 久久综合色8888 | 在线国产激情视频 | 日韩精品一区二区在线观看 | 亚洲另类久久 | 九九热精品在线 | 亚洲精品久久久蜜臀下载官网 | 日韩av在线影视 | 五月婷婷网站 | 日日操天天操狠狠操 | 久久久国产精品亚洲一区 | 免费日韩精品 | 欧美资源在线观看 | 91精品在线免费观看视频 | 综合激情久久 | 国产一级电影免费观看 | 色婷婷六月天 | 亚洲婷婷在线视频 | 欧美精品免费在线 | 中文字幕不卡在线88 | 日韩一区二区三区高清在线观看 | 亚洲精品国精品久久99热 | 在线导航av | 在线观看播放av | 最近中文字幕国语免费高清6 | 黄色av网站在线观看 | 91精品网站在线观看 | 久久天天躁狠狠躁亚洲综合公司 | 天天爱天天 | 日韩一级黄色av | 99久久电影 | 欧美成人区 | 欧美日韩精品综合 | 日本激情视频中文字幕 | 国产精品欧美在线 | 狠狠的干狠狠的操 | 亚洲国产成人精品电影在线观看 | 国产精品av免费在线观看 | 国产成人精品一区二区三区网站观看 | 最新日韩在线观看 | 国产午夜精品一区二区三区嫩草 | av一二三区 | 亚洲精品国产综合99久久夜夜嗨 | 伊人国产女 | .国产精品成人自产拍在线观看6 | 就要色综合 | 免费看黄在线 | 欧美日韩精品在线 | 久久看毛片 | 精品国产视频在线 | 91亚洲狠狠婷婷综合久久久 | 91最新地址永久入口 | 亚洲一级二级 | 99亚洲天堂 | 亚洲色图美腿丝袜 | 免费看网站在线 | 又大又硬又黄又爽视频在线观看 | 九九九热精品免费视频观看网站 | 永久免费看av | 国内精品国产三级国产aⅴ久 | 欧美视屏一区二区 | 久久久九色精品国产一区二区三区 | 午夜精品久久久久久久99无限制 | 亚洲视频免费视频 | 18做爰免费视频网站 | 天天摸日日摸人人看 | 黄色免费网站下载 | free. 性欧美.com | 国产又粗又猛又黄又爽视频 | 欧美日韩一二三四区 | 在线色网站 | 国产一区二区在线免费观看 | 国产成人免费观看久久久 | 五月天久久 | 国产在线探花 | 成人av一区二区在线观看 | 在线观看av小说 | 欧美精品一二三 | 久久蜜臀一区二区三区av | 免费看av在线 | 欧美老少交 | 日日干天天射 | 久久久久亚洲a | 国产精品一区二区你懂的 | 免费男女羞羞的视频网站中文字幕 | 国精产品一二三线999 | 日韩欧美高清免费 | www.神马久久 | 国产高清精品在线 | 日韩精品高清不卡 | 91激情视频在线播放 | 综合久久一本 | 日本精品在线看 | 色综合天天视频在线观看 | 在线观看精品一区 | 国产黄色片免费 | 成人a毛片 | 97视频免费播放 | 激情丁香5月 | 九色91视频 | 中文字幕第一页在线播放 | 黄色av一级 | 男女激情免费网站 | 国产成人一区二区三区久久精品 | 99视频国产精品免费观看 | 日本久久中文字幕 | 激情偷乱人伦小说视频在线观看 | 欧美日韩中文字幕在线视频 | 欧美国产一区在线 | av在线短片 | 国产一区二区精品久久 | 欧美国产日韩在线观看 | 在线国产小视频 | 97视频人人澡人人爽 | 狠狠色香婷婷久久亚洲精品 | 成人一级电影在线观看 | 香蕉视频啪啪 | 女人高潮一级片 | 97色在线观看免费视频 | 精品国产一区二区三区久久久 | 亚洲午夜精品福利 | 精品久久久久久久久久岛国gif | 国产精品 亚洲精品 | 日本久久久久 | 天天操狠狠操 | 四虎在线观看视频 | 99热国产精品 | 亚洲另类人人澡 | 亚洲爱爱视频 | 日韩中文免费视频 | 在线视频日韩一区 | 午夜精品一区二区三区免费 | 伊人影院在线观看 | 亚州av免费 | 99久久99久久精品国产片果冰 | 深爱激情亚洲 | 一区二区三区在线播放 | 婷婷激情五月综合 | 西西www4444大胆视频 | 久久国产成人午夜av影院潦草 | 久久国产精品视频免费看 | 激情网五月天 | 亚洲综合日韩在线 | 免费在线观看中文字幕 | 在线观看中文字幕亚洲 | 一区二区男女 | 国产成人久久精品77777 | 69亚洲乱 | 日日夜夜噜| 国精产品999国精产品视频 | .国产精品成人自产拍在线观看6 | 免费在线观看一区二区三区 | 婷婷丁香六月天 | 91自拍成人 | 精品视频久久 | 在线看成人 | 免费看的国产视频网站 | 国产小视频网站 | 国产不卡在线播放 | 日韩一级电影在线 | 超碰97在线资源 | 高清av中文字幕 | 国产精品成人免费 | 深夜国产福利 | 高潮久久久久久 | 精品国产一区二区三区噜噜噜 | 久久99久久久久久 | 婷婷爱五月天 | 偷拍福利视频一区二区三区 | 伊人资源视频在线 | 国产免费叼嘿网站免费 | 欧美福利片在线观看 | 久久免费视频1 | 五月天亚洲综合 | 高清色免费 | 香蕉视频在线免费 | 日日天天 | 国产系列精品av | 国产精品一区免费看8c0m | 日韩精品欧美精品 | 亚洲国产小视频在线观看 | 中文在线a在线 | 国产精品乱码高清在线看 | 欧美日韩伦理在线 | 国产资源网站 | 国产97碰免费视频 | a级国产乱理论片在线观看 伊人宗合网 | 蜜桃视频在线观看一区 | 亚洲国产色一区 | 亚洲精品黄 | 国产v在线 | 午夜精品久久久久久久久久 | 久久久国产一区二区 | 超碰97公开| 97碰碰碰 | 深爱五月激情网 | 91桃色在线观看视频 | 国产福利一区二区在线 | www.午夜色.com| 亚洲天堂网在线视频观看 | 色大片免费看 | 亚洲传媒在线 | 成人午夜黄色影院 | 韩国精品视频在线观看 | 国产aaa毛片 | 国产日产欧美在线观看 | 免费看的毛片 | 久久亚洲欧美日韩精品专区 | 成年人在线观看 | 五月宗合网 | 99热在 | 色小说在线 | 欧美色伊人 | 五月婷亚洲 | 国产日韩精品一区二区 | 久热免费在线 | 97超碰人人澡 | 天天操天天爱天天干 | 成人永久视频 | 国产午夜精品福利视频 | 国产精品久久久久一区二区国产 | 女人18片毛片90分钟 | 国产高清av免费在线观看 | 免费久久视频 | 久草视频一区 | 久久精品播放 | 中文资源在线官网 | 亚洲精品乱码久久久久v最新版 | 久久人人爽爽人人爽人人片av | 成年人视频免费在线播放 | 国产精品日韩久久久久 | 天天玩天天干 | 国产1区2区3区精品美女 | 久久96国产精品久久99软件 | 开心激情综合网 | 99久久夜色精品国产亚洲 | 日本久久久久久久久久 | 久久美女免费视频 | 国产黄免费看 | 久久精品国产免费 | 婷婷草| 日韩欧美大片免费观看 | www国产亚洲精品久久麻豆 | 日韩综合色 | 天天操天天拍 | 96精品在线 | 97在线精品视频 | 99r在线观看 | 国产精品久久久久久久免费大片 | 免费瑟瑟网站 | av在线电影网站 | 国产亚洲婷婷 | 成人午夜影视 | 开心丁香婷婷深爱五月 | 91超碰免费在线 | 日本激情视频中文字幕 | 特级毛片网站 | 亚洲激情在线 | 伊人久久国产 | av大全免费在线观看 | 右手影院亚洲欧美 | 欧美精品久久久久久久免费 | 一本一道久久a久久综合蜜桃 | 成片视频免费观看 | 国产成人av网址 | 亚洲一区二区麻豆 | 天天操导航 | 免费的黄色av | 亚洲国产精品成人综合 | 91福利视频在线 | 久久夜色精品国产欧美一区麻豆 | 麻豆视频成人 | 亚洲午夜久久久影院 | 国产精品美女免费 | 456免费视频| 欧美网址在线观看 | 激情五月婷婷综合 | 国产精品一区二区电影 | 国产人成在线观看 | 国产精品永久免费观看 | 午夜av在线播放 | 亚洲国产成人精品在线观看 | 国产高清在线观看av | 91久久精品一区二区二区 | 黄色在线观看免费网站 | 波多野结衣一区三区 | 久草视频资源 | 懂色av一区二区三区蜜臀 | 在线观看的av | 久久久精品电影 | 四虎亚洲精品 | 天天操导航 | 国产拍在线 | 一级黄色视屏 | 欧美日韩一区二区久久 | 亚洲爱av| 亚洲欧美综合精品久久成人 | 婷婷五月在线视频 | 在线 国产 亚洲 欧美 | 福利视频网站 | 一区二区三区动漫 | 久久国产一区二区三区 | 色网免费观看 | 日韩黄色免费电影 | 久久久久久久久福利 | 精品国产乱码久久久久久1区2匹 | 亚洲精品在线播放视频 | 欧美一性一交一乱 | 涩涩色亚洲一区 | 国产亚洲人 | 久久优 | 精品久久久久久亚洲综合网站 | 五月开心婷婷 | 丁香狠狠 | 婷婷综合亚洲 | 国产一级片一区二区三区 | 日韩中文字幕在线不卡 | 一区二区三区中文字幕在线 | mm1313亚洲精品国产 | 麻豆影视在线观看 | 91av成人| 国产系列 在线观看 | 亚洲视频电影在线 | 亚洲欧洲精品一区二区精品久久久 | 黄色三级视频片 | 久爱综合 | 婷婷亚洲五月色综合 | av一级片在线观看 | 欧美激情综合色 | av成人免费观看 | 久久久国产日韩 | 在线观看黄网站 | 国产亚洲精品无 | 国产在线综合视频 | 狠狠撸电影 | 精品国产欧美 | 丁香 婷婷 激情 | 免费十分钟 | 国产老太婆免费交性大片 | 五月天激情综合 | 在线观看精品国产 | 日韩免费不卡视频 | 欧美精品视 | 三级小视频在线观看 | 久久精品一二三区 | 天天操狠狠操 | 国产精品一区二区在线 | av黄在线播放| 在线观看91精品视频 | 手机色在线 | 综合久久网站 | 99久高清在线观看视频99精品热在线观看视频 | 亚洲不卡123 | 嫩草av影院 | 国产午夜精品在线 | 日韩在线观看的 | 久久国产亚洲精品 | 色在线视频网 | 久久久91精品国产一区二区精品 | 久久精品电影网 | 日韩一区二区三区高清免费看看 | 91爱爱网址 | 亚洲人在线视频 | 国产视频在线一区二区 | 在线观看免费 | 久草在线在线精品观看 | 亚洲国产中文字幕在线视频综合 | 久久久91精品国产 | 中文字幕久久网 | 国产免费不卡av | 久久少妇av | 丁香激情婷婷 | 成人在线视频在线观看 | 丁香综合av | 黄色特级片 | 日韩免费电影一区二区 | 亚洲国产免费 | 日韩在线精品视频 | 国产一区在线看 | 91精品久久久久久久久久入口 | 成片免费观看视频999 | 国产一级久久 | 黄网在线免费观看 | 国产在线最新 | 米奇影视7777 | 999久久国产| 成人教育av | 色婷婷国产在线 | 亚洲精品在线二区 | 成人一级在线 | 美女网站在线观看 | 中文字幕日韩无 | 国产一区二区电影在线观看 | 国产色婷婷精品综合在线手机播放 | 人人爱爱人人 | 丁香色婷 | 久99久精品视频免费观看 | 久久久精品午夜 | 国产理论片在线观看 | 在线国产一区二区 | 91最新国产 | 超碰在线人 | 天天干天天干天天干天天干天天干天天干 | www视频在线免费观看 | 久草视频99| 在线观看福利网站 | 一性一交视频 | 欧美日韩在线观看一区 | 久久在线 | 在线午夜电影神马影院 | 日韩欧美综合视频 | av一级片在线观看 | 国产精品一区二区久久国产 | 色婷婷国产精品一区在线观看 | 成人网色| 久久午夜电影网 | 国色天香第二季 | 国产精品久久嫩一区二区免费 | 久久久精品国产免费观看一区二区 | 2019天天干天天色 | 欧美福利视频一区 | 丁香六月网 | 久久激情视频 久久 | 国产成人在线看 | 中文字幕在线第一页 | 中文字幕麻豆 | 色综合天天狠狠 | 久久伊人爱 | 亚洲黄色片 | 久久久免费精品 | 精品久久99 | 国内精品久久久久国产 | 国产精品久久久久一区二区国产 | 99热免费在线| 久久精品久久精品久久39 | 日韩理论电影在线观看 | 国产午夜三级一区二区三桃花影视 | 亚洲成av人电影 | 99免在线观看免费视频高清 | 992tv在线观看网站 | 久久精品国产免费看久久精品 | 天天摸日日操 | 一本—道久久a久久精品蜜桃 | 日韩一区二区三区在线观看 | 三级av免费 | 中国一级片在线 | 天天操操操操操操 | 草久久精品 | 免费成人在线观看视频 | 亚洲日本成人网 | 精品国产一区二区三区男人吃奶 | 五月综合激情婷婷 | 人人干干人人 | 精品久久久久一区二区国产 | 中文字幕日本特黄aa毛片 | 国产精品久久久久久久毛片 | 在线免费av网站 | 欧美日韩亚洲在线 | 成年人免费看 | 2021久久| 最近高清中文在线字幕在线观看 | 久草在线一免费新视频 | 日本久久不卡视频 | 夜夜狠狠 | 狠狠色丁香久久婷婷综合丁香 | 日本精品视频一区二区 | 最新在线你懂的 | 成片视频免费观看 | 在线免费国产视频 | 黄色软件大全网站 | 美女又爽又黄 | 五月天丁香 | 婷婷伊人网 | 欧美a级成人淫片免费看 | 国产精品美女久久久久久 | 亚洲视频综合在线 | 911在线| 国产综合福利在线 | 精品久久久久久综合 | 成人va在线观看 | a爱爱视频 | av最新资源 | 成人免费观看网站 | 国内视频在线 | 91九色综合 | 国产高清视频在线播放 | 国产精品成人免费一区久久羞羞 | 夜夜爽天天爽 | 日韩欧美一区二区在线观看 | 99精品视频免费 | 一区二区三区高清 | 精品播放 | 美女久久久久 | 免费观看日韩av | 中文字幕在线观看免费观看 | 欧美aaa视频| 免费看的黄色网 | 91视频免费看 | 色婷婷国产精品一区在线观看 | 国产小视频在线观看 | 人人添人人澡人人澡人人人爽 | 国产色网站 | 日韩影片在线观看 | 国产精品专区一 | 日韩大片在线看 | 奇米影视四色8888 | av九九九| 美女视频a美女大全免费下载蜜臀 | av线上免费观看 | 激情五月av | 国产精品第三页 | 在线播放亚洲 | 国产精品自在欧美一区 | 成年人国产视频 | 国产精品一区免费在线观看 | 午夜免费电影院 | 日日夜夜精品视频天天综合网 | 国产手机视频在线播放 | 人人舔人人爱 | 成人免费在线电影 | 超碰国产97 | 99久热在线精品视频成人一区 | 激情五月综合 | 91欧美国产 | 亚洲精品在线二区 | www91在线 | 国产精品夜夜夜一区二区三区尤 | 中文字幕在线观看你懂的 | a在线观看国产 | 在线观看va | 日韩中文字幕免费看 | 91精品久久久久久久久久入口 | 探花视频网站 | 亚洲美女精品区人人人人 | 国产69熟 | 高清在线一区 | 成人a免费看 | 99国产精品一区 | 色婷婷久久久综合中文字幕 | 国产精品久久久亚洲 | 久久综合九色九九 | 91精品在线视频观看 | 国产视频资源在线观看 | 久久久久亚洲精品中文字幕 | 在线免费高清视频 | 欧美日韩一区二区三区不卡 | 成人av在线观 | 91天堂在线观看 | 亚洲午夜精品久久久久久久久 | 又黄又爽又色无遮挡免费 | 深夜国产在线 | 亚州精品在线视频 | 精品福利在线视频 | 91精品中文字幕 | 国产99久久久国产精品免费看 | 亚洲精品国产精品国自产观看浪潮 | 在线小视频你懂得 | 久久精品久久精品 | 99精彩视频在线观看免费 | 久久99精品久久久久久秒播蜜臀 | 国产成人精品999在线观看 | 亚洲三级精品 | 国产不卡精品 | 久草精品视频在线看网站免费 | av亚洲产国偷v产偷v自拍小说 | 中文字幕在线播放日韩 | 中文av在线免费观看 | 亚洲国产成人在线观看 | 欧美视频18 | 午夜国产一区二区三区四区 | 麻豆一区二区三区视频 | 中文字幕一区二区三区在线观看 | 99视频偷窥在线精品国自产拍 | 午夜视频久久久 | 日本精品一 | 日韩网站在线免费观看 | 欧美日韩大片在线观看 | aa一级片 | 91精品福利在线 | 亚洲精品国产精品国自产观看浪潮 | 一区二区三区四区五区六区 | 日日夜夜国产 | 天天av综合网 | 最近字幕在线观看第一季 | 韩日精品在线 | 夜色资源站国产www在线视频 | 一区二区三区四区五区在线视频 | 麻豆视传媒官网免费观看 | 久久天堂网站 | 97国产大学生情侣白嫩酒店 | 久久躁日日躁aaaaxxxx | 视频国产在线 | 97碰碰视频 | 日韩av电影免费在线观看 | 国产精品久久久999 国产91九色视频 | 色偷偷男人的天堂av | 99精品在线观看视频 | 成人蜜桃| 国产无套精品久久久久久 | 丁香婷婷久久久综合精品国产 | 激情深爱五月 | 激情综合五月天 | 国产日韩在线播放 | 91精品视频免费在线观看 | 夜色资源站wwwcom | 中文字幕色站 | 久久的色| 成人av网站在线播放 | 免费在线观看毛片网站 | 亚洲国产精彩中文乱码av | 国际精品久久久 | 91亚洲精品国产 | 久久免费视频一区 | 久久综合综合久久综合 | 丁香六月激情 | 国产高清日韩 | 91九色精品国产 | free. 性欧美.com | 在线日本v二区不卡 | 天天操天天色天天射 | 亚洲精品国产自产拍在线观看 | 久久久夜色| 国产精品一二三 | 欧美少妇xxx | 中文在线www | 国产一区二区三区四区大秀 | 91九色蝌蚪国产 | 日韩中文在线电影 | 免费观看的av网站 | 黄色网址在线播放 | 一区二区三区不卡在线 | 久草视频在线免费播放 | 亚洲黄色小说网 | 国产精品视频在线观看 | 一区久久久| 色国产在线 | 深爱婷婷久久综合 | 国产二区视频在线 | 伊人久久影视 | 91chinesexxx| 日韩视频在线观看视频 | 久久草精品 | 91自拍成人 | 欧美一二三四在线 | 欧美一区二区在线免费观看 | 免费视频在线观看网站 | 精品久久久久久久久中文字幕 | 国产视频资源 | 久草影视在线 | 久草国产视频 | 黄色av高清 | 色婷婷狠狠操 | 久久高清毛片 | 黄色影院在线免费观看 | 国产亚洲精品久久 | 中文字幕资源网在线观看 | 国产亚洲精品女人久久久久久 | 91视频 - v11av| 高清精品久久 | 少妇视频一区 | 国产啊v在线观看 | 欧美一区二区在线免费看 | 欧美日韩一区二区三区在线免费观看 | 免费高清在线观看电视网站 | 国产精久久久久久妇女av | 黄色毛片网站在线观看 | 成人黄色av免费在线观看 | 成人午夜精品久久久久久久3d | 最近免费中文字幕大全高清10 | 五月天婷婷在线观看视频 | 亚洲精品动漫成人3d无尽在线 | 国产 日韩 欧美 中文 在线播放 | 五月婷婷综合久久 | 国产一线天在线观看 | 久久成人午夜视频 | 91一区在线观看 | 国产在线不卡 | 日韩综合色 | 国产极品尤物在线 | 天天干天天碰 | 免费看污片| 久久久久久免费 | 日韩一级黄色片 | 99re8这里有精品热视频免费 | 97精品国自产拍在线观看 | 成 人 黄 色 片 在线播放 | 天天综合91 | 亚洲狠狠 | 亚洲国产色一区 | 久草在线视频资源 | 丁香花在线观看免费完整版视频 | 黄色一级性片 | 免费久久久久久 | 性色av免费观看 | 四虎成人免费影院 | 欧美一级黄色视屏 | 一级黄毛片 | 91成人精品国产刺激国语对白 | 97福利在线观看 | 日韩福利在线观看 | 在线免费观看国产黄色 | 久久 地址 | 在线视频日韩欧美 | 西西44人体做爰大胆视频 | 99久久婷婷国产精品综合 | 91热精品| 在线精品亚洲一区二区 | 日韩欧美一二三 | 久久精品波多野结衣 | 夜添久久精品亚洲国产精品 | 欧美韩日精品 | 国产又粗又长的视频 | 国产一二三区在线观看 | 成片人卡1卡2卡3手机免费看 | 日韩欧美区 | 色婷婷视频 | 久久色在线播放 | 欧美日韩中文国产 | 国产精品免费高清 | 久久看视频 | 婷婷成人亚洲综合国产xv88 | 日韩av高清 | 久久久久国产成人精品亚洲午夜 | 成人黄色电影免费观看 | 成 人 黄 色 视频 免费观看 | 69精品视频| 色婷婷色| 五月在线 | 国产成人a亚洲精品 | 日本中文字幕在线 | 日批视频在线观看免费 | 国内精品久久久久影院男同志 | 精品国偷自产国产一区 | 爱情影院aqdy鲁丝片二区 | 国产精品久久久久久久久搜平片 | 久久99中文字幕 | 色天天天 | 久久久伊人网 | 久久精品日韩 | 国产精品9999久久久久仙踪林 | 97人人人| 顶级bbw搡bbbb搡bbbb | 91麻豆精品国产91久久久久久 | 五月天色丁香 | 国产精品一区免费在线观看 | 91福利小视频 | 久久国产亚洲 | 欧美一区免费观看 | 日韩一区二区三区免费电影 | 日韩电影中文 | 成人精品视频久久久久 | 国产一区二区免费 | 国产高清一 | 91精品视频在线免费观看 | 超碰在线中文字幕 | 欧美午夜精品久久久久久孕妇 | 97国产在线 | 亚洲成人精品久久久 | 免费三级影片 | 国产精品综合在线观看 | av线上免费观看 | av色综合网 | 久草综合在线 | 奇米影视在线99精品 | 久久国产高清视频 | 区一区二区三在线观看 | 国产精品中文字幕在线观看 | 成人在线免费观看视视频 | 国产日产高清dvd碟片 | 在线看的毛片 | 久久99视频免费观看 | 99av国产精品欲麻豆 | 欧美一区二区三区免费观看 | 亚洲精品美女在线观看 | 久久久精品免费观看 | 欧美亚洲国产一卡 | 天天干夜夜夜 | 丁香婷婷激情网 | 91九色在线| 婷婷日日 | 超碰在线官网 | 日韩高清网站 |