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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

operator-sdk实战开发K8S CRD自定义资源对象

發布時間:2025/1/21 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 operator-sdk实战开发K8S CRD自定义资源对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

環境說明

系統:CentOS Linux release 7.6.1810 (Core)
golang:v1.15
operator-sdk:v1.7.0
docker:v1.19 # 因為 operator-sdk 使用了多階段構建功能,所以 docker 必須大于等于 v1.17 版本
k8s:k3s v1.20.6+k3s1 單節點

需求

定義一個 crd ,spec 包含以下信息:

Replicas # 副本數 Image # 鏡像 Resources # 資源限制 Envs # 環境變量 Ports # 服務端口

根據以上信息,controller 自動創建或者更新一個 deployment + service

注意:本實例只是展示了大概開發流程,故 crd 資源的 status 狀態未做任何更新,實際編寫中需要根據實際情況自行更新 status 狀態

創建 APP

$ mkdir -p $GOPATH/src/github.com/zxl/app $ cd $GOPATH/src/github.com/zxl/app $ operator-sdk init --domain=example.com --repo=github.com/zxl/app

創建 API

$ operator-sdk create api --group app --version v1 --kind App --resource=true --controller=true

修改 CRD 類型定義代碼 api/v1/app_types.go

/* Copyright 2021.Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */package v1import (appsv1 "k8s.io/api/apps/v1"corev1 "k8s.io/api/core/v1"metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" )/* 修改定義后需要使用 make generate 生成新的 zz_generated.deepcopy.go 文件*/// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! // NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.// AppSpec defines the desired state of App type AppSpec struct {// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster// Important: Run "make" to regenerate code after modifying this fileReplicas *int32 `json:"replicas"` // 副本數Image string `json:"image"` // 鏡像Resources corev1.ResourceRequirements `json:"resources,omitempty"` // 資源限制Envs []corev1.EnvVar `json:"envs,omitempty"` // 環境變量Ports []corev1.ServicePort `json:"ports,omitempty"` // 服務端口 }// AppStatus defines the observed state of App type AppStatus struct {// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster// Important: Run "make" to regenerate code after modifying this file//Conditions []AppCondition//Phase stringappsv1.DeploymentStatus `json:",inline"` // 直接引用 DeploymentStatus }//type AppCondition struct { // Type string // Message string // Reason string // Ready bool // LastUpdateTime metav1.Time // LastTransitionTime metav1.Time //}//+kubebuilder:object:root=true //+kubebuilder:subresource:status// App is the Schema for the apps API type App struct {metav1.TypeMeta `json:",inline"`metav1.ObjectMeta `json:"metadata,omitempty"`Spec AppSpec `json:"spec,omitempty"`Status AppStatus `json:"status,omitempty"` }//+kubebuilder:object:root=true// AppList contains a list of App type AppList struct {metav1.TypeMeta `json:",inline"`metav1.ListMeta `json:"metadata,omitempty"`Items []App `json:"items"` }func init() {SchemeBuilder.Register(&App{}, &AppList{}) }

新增 resource/deployment/deployment.go

package deploymentimport (appv1 "github.com/leffss/app/api/v1"appsv1 "k8s.io/api/apps/v1"corev1 "k8s.io/api/core/v1"metav1 "k8s.io/apimachinery/pkg/apis/meta/v1""k8s.io/apimachinery/pkg/runtime/schema" )func New(app *appv1.App) *appsv1.Deployment {labels := map[string]string{"app.example.com/v1": app.Name}selector := &metav1.LabelSelector{MatchLabels: labels}return &appsv1.Deployment{TypeMeta: metav1.TypeMeta{APIVersion: "apps/v1",Kind: "Deployment",},ObjectMeta: metav1.ObjectMeta{Name: app.Name,Namespace: app.Namespace,OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(app, schema.GroupVersionKind{Group: appv1.GroupVersion.Group,Version: appv1.GroupVersion.Version,Kind: "App",}),},},Spec: appsv1.DeploymentSpec{Replicas: app.Spec.Replicas,Selector: selector,Template: corev1.PodTemplateSpec{ObjectMeta: metav1.ObjectMeta{Labels: labels,},Spec: corev1.PodSpec{Containers: newContainers(app),},},},} }func newContainers(app *appv1.App) []corev1.Container {var containerPorts []corev1.ContainerPortfor _, servicePort := range app.Spec.Ports {var cport corev1.ContainerPortcport.ContainerPort = servicePort.TargetPort.IntValcontainerPorts = append(containerPorts, cport)}return []corev1.Container{{Name: app.Name,Image: app.Spec.Image,Ports: containerPorts,Env: app.Spec.Envs,Resources: app.Spec.Resources,ImagePullPolicy: corev1.PullIfNotPresent,},} }

新增 resource/service/service.go

package serviceimport (appv1 "github.com/zxl/app/api/v1"corev1 "k8s.io/api/core/v1"metav1 "k8s.io/apimachinery/pkg/apis/meta/v1""k8s.io/apimachinery/pkg/runtime/schema" )func New(app *appv1.App) *corev1.Service {return &corev1.Service{TypeMeta: metav1.TypeMeta{Kind: "Service",APIVersion: "v1",},ObjectMeta: metav1.ObjectMeta{Name: app.Name,Namespace: app.Namespace,OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(app, schema.GroupVersionKind{Group: appv1.GroupVersion.Group,Version: appv1.GroupVersion.Version,Kind: "App",}),},},Spec: corev1.ServiceSpec{Ports: app.Spec.Ports,Selector: map[string]string{"app.example.com/v1": app.Name,},},} }

修改 controller 代碼 controllers/app_controller.go

/* Copyright 2021.Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */package controllersimport ("context""encoding/json""reflect""github.com/zxl/app/resource/deployment""github.com/zxl/app/resource/service""k8s.io/apimachinery/pkg/api/errors""github.com/go-logr/logr""k8s.io/apimachinery/pkg/runtime"ctrl "sigs.k8s.io/controller-runtime""sigs.k8s.io/controller-runtime/pkg/client"appv1 "github.com/zxl/app/api/v1"corev1 "k8s.io/api/core/v1"appsv1 "k8s.io/api/apps/v1" )// AppReconciler reconciles a App object type AppReconciler struct {client.ClientLog logr.LoggerScheme *runtime.Scheme }//+kubebuilder:rbac:groups=app.example.com,resources=apps,verbs=get;list;watch;create;update;patch;delete //+kubebuilder:rbac:groups=app.example.com,resources=apps/status,verbs=get;update;patch //+kubebuilder:rbac:groups=app.example.com,resources=apps/finalizers,verbs=update// Reconcile is part of the main kubernetes reconciliation loop which aims to // move the current state of the cluster closer to the desired state. // TODO(user): Modify the Reconcile function to compare the state specified by // the App object against the actual cluster state, and then // perform operations to make the cluster state reflect the state specified by // the user. // // For more details, check Reconcile and its Result here: // - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.7.2/pkg/reconcile func (r *AppReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {_ = r.Log.WithValues("app", req.NamespacedName)// your logic here// 獲取 crd 資源instance := &appv1.App{}if err := r.Client.Get(ctx, req.NamespacedName, instance); err != nil {if errors.IsNotFound(err) {return ctrl.Result{}, nil}return ctrl.Result{}, err}// crd 資源已經標記為刪除if instance.DeletionTimestamp != nil {return ctrl.Result{}, nil}oldDeploy := &appsv1.Deployment{}if err := r.Client.Get(ctx, req.NamespacedName, oldDeploy); err != nil {// deployment 不存在,創建if errors.IsNotFound(err) {// 創建deploymentif err := r.Client.Create(ctx, deployment.New(instance)); err != nil {return ctrl.Result{}, err}// 創建serviceif err := r.Client.Create(ctx, service.New(instance)); err != nil {return ctrl.Result{}, err}// 更新 crd 資源的 Annotationsdata, _ := json.Marshal(instance.Spec)if instance.Annotations != nil {instance.Annotations["spec"] = string(data)} else {instance.Annotations = map[string]string{"spec": string(data)}}if err := r.Client.Update(ctx, instance); err != nil {return ctrl.Result{}, err}} else {return ctrl.Result{}, err}} else {// deployment 存在,更新oldSpec := appv1.AppSpec{}if err := json.Unmarshal([]byte(instance.Annotations["spec"]), &oldSpec); err != nil {return ctrl.Result{}, err}if !reflect.DeepEqual(instance.Spec, oldSpec) {// 更新deploymentnewDeploy := deployment.New(instance)oldDeploy.Spec = newDeploy.Specif err := r.Client.Update(ctx, oldDeploy); err != nil {return ctrl.Result{}, err}// 更新servicenewService := service.New(instance)oldService := &corev1.Service{}if err := r.Client.Get(ctx, req.NamespacedName, oldService); err != nil {return ctrl.Result{}, err}clusterIP := oldService.Spec.ClusterIP // 更新 service 必須設置老的 clusterIPoldService.Spec = newService.SpecoldService.Spec.ClusterIP = clusterIPif err := r.Client.Update(ctx, oldService); err != nil {return ctrl.Result{}, err}// 更新 crd 資源的 Annotationsdata, _ := json.Marshal(instance.Spec)if instance.Annotations != nil {instance.Annotations["spec"] = string(data)} else {instance.Annotations = map[string]string{"spec": string(data)}}if err := r.Client.Update(ctx, instance); err != nil {return ctrl.Result{}, err}}}return ctrl.Result{}, nil }// SetupWithManager sets up the controller with the Manager. func (r *AppReconciler) SetupWithManager(mgr ctrl.Manager) error {return ctrl.NewControllerManagedBy(mgr).For(&appv1.App{}).Complete(r) }

修改 CRD 資源定義 config/samples/app_v1_app.yaml

apiVersion: app.example.com/v1 kind: App metadata:name: app-samplenamespace: default spec:# Add fields herereplicas: 2image: nginx:1.16.1ports:- targetPort: 80port: 8080envs:- name: DEMOvalue: app- name: GOPATHvalue: gopathresources:limits:cpu: 500mmemory: 500Mirequests:cpu: 100mmemory: 100Mi

修改 Dockerfile

# Build the manager binary FROM golang:1.15 as builderWORKDIR /workspace # Copy the Go Modules manifests COPY go.mod go.mod COPY go.sum go.sum # cache deps before building and copying source so that we don't need to re-download as much # and so that source changes don't invalidate our downloaded layerENV GOPROXY https://goproxy.cn,directRUN go mod download# Copy the go source COPY main.go main.go COPY api/ api/ COPY controllers/ controllers/ COPY resource/ resource/# Build RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -a -o manager main.go# Use distroless as minimal base image to package the manager binary # Refer to https://github.com/GoogleContainerTools/distroless for more details #FROM gcr.io/distroless/static:nonroot FROM kubeimages/distroless-static:latest WORKDIR / COPY --from=builder /workspace/manager . USER 65532:65532ENTRYPOINT ["/manager"]
  • 添加了 goproxy 環境變量
  • 新增 COPY 自定義的文件夾 resource
  • gcr.io/distroless/static:nonroot 變更為 kubeimages/distroless-static:latest

部署運行

第一種:本地運行 controller

用于開發測試

app 項目根目錄運行:

$ make generate && make manifests && make install && make run
  • 本機需確保安裝了 kubectl 工具,并且證書文件 ~/.kube/config 存在(保證為集群管理員權限)
  • 測試完畢后使用 ctrl + c 停止程序,然后 make uninstall 刪除 crd 定義

第二種:集群部署

1、make

$ make generate && make manifests && make install

2、構建鏡像

$ make docker-build IMG=leffss/app:v1$ docker images |grep app leffss/app v1 1eaa4b6a4781 About a minute ago 46.5MB

3、準備鏡像:

# 因為 k3s 安裝的 k8s v1.20 默認使用的是 containerd,所以要導入鏡像 $ docker save zxl/app:v1 > app.tar $ ctr image import app.tar$ docker pull kubesphere/kube-rbac-proxy:v0.8.0 $ docker tag kubesphere/kube-rbac-proxy:v0.8.0 gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0 $ docker save gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0 > kube-rabc-proxy.tar $ ctr image import kube-rabc-proxy.tar

4、運行

$ make deploy IMG=leffss/app:v1

5、結果確認:

$ kubectl get service -A |grep app$ kubectl -n app-system get pod$ kubectl -n app-system get deployment

6、CRD 確認

$ kubectl get crd NAME CREATED AT addons.k3s.cattle.io 2021-05-02T01:03:34Z helmcharts.helm.cattle.io 2021-05-02T01:03:34Z helmchartconfigs.helm.cattle.io 2021-05-02T01:03:34Z apps.app.example.com 2021-05-04T12:10:43Z

創建自定義資源

$ kubectl apply -f config/samples/app_v1_app.yaml app.app.example.com/app-sample created

查看控制臺日志:

$ kubectl -n memcached-operator-system logs memcached-operator-controller-manager-6cf86db855-sqhpj -c manager2021-05-05T19:56:32.798+0800 INFO controller-runtime.metrics metrics server is starting to listen {"addr": ":8080"} 2021-05-05T19:56:32.798+0800 INFO setup starting manager 2021-05-05T19:56:32.799+0800 INFO controller-runtime.manager starting metrics server {"path": "/metrics"} 2021-05-05T19:56:32.800+0800 INFO controller-runtime.manager.controller.app Starting EventSource {"reconciler group": "app.example.com", "reconciler kind": "App", "source": "kind source: /, Kind="} 2021-05-05T19:56:32.901+0800 INFO controller-runtime.manager.controller.app Starting Controller {"reconciler group": "app.example.com", "reconciler kind": "App"} 2021-05-05T19:56:32.901+0800 INFO controller-runtime.manager.controller.app Starting workers {"reconciler group": "app.example.com", "reconciler kind": "App", "worker count": 1}
  • 如果是第一種部署方式則直接查看控制臺,第二種則查看集群中 app-controller-manager 的 pod 中的 manager 容器控制臺日志

如果是第二種直接將 controller 部署到 k8s 集群的方式,可能會出現 RBAC 權限錯誤,解決方法是修改部署時的權限配置,這里我們使用最簡單的方法是直接給 controller 綁定到 cluster-admin 集群管理員即可

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata:name: cluster-admin-rolebinding roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin subjects: - kind: ServiceAccountname: app-controller-managernamespace: app-system

刪除 CRD 資源

$ kubectl apply -f config/samples/app_v1_app.yaml app.app.example.com/app-sample deleted

刪除 CRD 定義

$ make uninstall

刪除 controller

$ make undeploy
  • 只適用第二種部署方式

總結

實際開發中只需要使用 operator-sdk(或者 kubebuilder)創建 CRD 以及相應的 controller,然后根據需求自行定義 crd 屬性,并編寫對應的 controller 邏輯代碼,最終就可以實現一個完整的 operator。

補充:make deploy 含義

部署時使用 make deploy 實際是執行的什么命令呢?通過查看項目根目錄 Makefile 可知實際運行命令為:

deploy: manifests kustomize ## Deploy controller to the K8s cluster specified in ~/.kube/config.cd config/manager && $(KUSTOMIZE) edit set image controller=${IMG}$(KUSTOMIZE) build config/default | kubectl apply -f -
  • 實際上就是使用 kustomize 工具生成部署的 yaml 文件,然后使用 kubectl 工具應用

其他的 make install,make run 等命令也都在 Makefile 中有相關定義。

所以當在實際部署過程中,如果向手動部署的話,可以直接參考 Makefile 首先生成部署 yaml 文件,然后手動應用到 k8s 集群即可。

總結

以上是生活随笔為你收集整理的operator-sdk实战开发K8S CRD自定义资源对象的全部內容,希望文章能夠幫你解決所遇到的問題。

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

国产午夜小视频 | 国产精品久久久久久久久久久久 | av在线免费观看不卡 | 成人av一级片 | www.亚洲视频 | aaa亚洲精品一二三区 | 亚洲三级毛片 | 国产精品video爽爽爽爽 | 久久久久久久久久久影视 | 69国产精品视频免费观看 | 91视频在线播放视频 | 久久女教师| 97精品国产91久久久久久 | 66av99精品福利视频在线 | 国产精品剧情在线亚洲 | 精品久久久久久亚洲 | 在线一二三区 | 日韩电影在线观看一区二区三区 | 日本精品二区 | 亚洲专区视频在线观看 | 欧美日韩高清国产 | av在线日韩 | 国产夫妻性生活自拍 | 99久免费精品视频在线观看 | 久草视频在线免费看 | 中文在线中文资源 | 久久国产精品电影 | 国内精品久久久久久久97牛牛 | 国产又粗又猛又黄 | 手机在线看a | 欧美日韩一区二区三区免费视频 | 亚洲最大av在线播放 | 婷婷久久综合网 | 国产不卡免费视频 | 一区在线电影 | 免费观看成人网 | 99久久精品一区二区成人 | 欧美三级在线播放 | 国产丝袜一区二区三区 | 欧美日韩国产在线 | 中文字幕在线观看网址 | 婷婷久月 | 在线视频日韩精品 | 国产亚洲人 | 日韩性色 | 天天干天天干天天干 | 亚洲人成人在线 | 天天干,天天草 | 欧美日韩3p| 欧美激情视频三区 | 综合久久网站 | 日韩av影视在线 | 91喷水| 在线免费观看黄色小说 | 日韩有码网站 | 国产超碰97 | 视频国产在线观看18 | 日韩精品中文字幕在线观看 | 91av视频在线观看免费 | 成年人在线免费看 | 蜜臀久久99精品久久久无需会员 | 中文字幕一区二区三区在线观看 | 人人爱人人射 | 一区二区三区韩国免费中文网站 | 亚洲精品午夜久久久 | 天天插日日射 | 黄色小视频在线观看免费 | 成人黄色电影视频 | 欧美精彩视频 | 久久av免费 | 91成版人在线观看入口 | 97国产电影 | 性色xxxxhd | 91自拍视频在线 | 日韩欧美视频免费看 | 亚洲 欧美 综合 在线 精品 | www婷婷| 中文字幕av免费 | 日日夜夜人人精品 | 免费情趣视频 | 国产精品自产拍在线观看网站 | 97精品视频在线 | 日本在线观看一区 | 91在线精品一区二区 | 日韩欧美精品在线视频 | 青草视频在线 | 欧美aa一级 | 日韩欧美69 | 在线免费视 | 精品国产视频在线观看 | 日韩 在线观看 | 国产精品一区二区三区在线播放 | 超碰人人在线 | 免费a v在线 | 色综合久久综合中文综合网 | 337p日本欧洲亚洲大胆裸体艺术 | 日韩中文在线观看 | 午夜精品一区二区三区免费 | 精品一区三区 | 日日夜夜精品免费观看 | 又黄又爽又无遮挡的视频 | 免费成人短视频 | 久草免费新视频 | 亚洲丝袜中文 | 啪啪免费试看 | 亚洲精品国产精品国自产观看浪潮 | 在线播放精品一区二区三区 | 波多野结衣一区三区 | 久久99精品久久久久久清纯直播 | 91精品免费视频 | 日本91在线 | 国产日韩高清在线 | 免费在线观看av网站 | 五月天.com| 国产一区二区不卡视频 | 在线导航av| 在线观看国产福利片 | 欧美一级欧美一级 | 天天操天天射天天舔 | 97在线超碰 | 国产高清在线a视频大全 | 国内久久久久久 | 亚洲天堂精品视频在线观看 | 免费人人干 | 狠狠操.com | 91夫妻自拍| 国产一区二区三区视频在线 | 欧美一区二区精品在线 | 欧美日韩中文字幕在线视频 | 成年人视频在线免费播放 | 99国产在线观看 | 亚洲永久精品在线观看 | 国产一区二区影院 | 久久久久久久久久久综合 | 992tv在线观看 | av黄色在线观看 | 亚洲午夜精品久久久 | 欧美一级片在线播放 | 天天爽综合网 | 天天色综合天天 | 麻豆国产电影 | 日日操夜夜操狠狠操 | 中文字幕888 | 国产日韩欧美视频 | 久久天天拍 | 久久久久久久久久影视 | 日本久久久久 | a级国产乱理论片在线观看 特级毛片在线观看 | 亚洲专区在线视频 | 成人av中文字幕在线观看 | 欧美日韩伦理一区 | 久久精品观看 | 日韩精品一区电影 | 91成人精品一区在线播放 | 97在线精品国自产拍中文 | 国产黄在线免费观看 | 中文不卡视频在线 | 四虎免费av | 在线视频18在线视频4k | 久久97视频| 在线国产能看的 | 欧美日韩国产在线精品 | 日日爱视频| 成人va天堂 | 国产精品久一 | 国产丝袜网站 | 欧美国产日韩一区二区三区 | 9992tv成人免费看片 | 久久久麻豆精品一区二区 | 韩日精品中文字幕 | 婷婷视频 | 91福利在线导航 | 日韩成人高清在线 | 18岁免费看片| 在线免费av播放 | 日韩av资源在线观看 | 色综合五月 | 99久久9 | 亚洲国产精品va在线看 | 天天草天天色 | 天天爱综合 | 久久综合久久综合九色 | 人人狠狠综合久久亚洲 | 欧美日韩久久 | 国产在线自 | 午夜久久网站 | 久久高清免费视频 | 超碰人人91 | 激情小说网站亚洲综合网 | 国产日韩在线观看一区 | av免费在线观看1 | 91重口视频| 99精品国产一区二区三区不卡 | 97成人超碰 | 天天干天天草天天爽 | 欧美久久久久久久久久久久 | 人人狠狠| 最近日本中文字幕a | 精品一区二区视频 | 久久天堂亚洲 | 日日干夜夜操视频 | 成人免费视频网站 | 免费看片网站91 | 日韩高清二区 | 日韩中文免费视频 | 国产尤物在线视频 | 狠狠干狠狠久久 | 五月婷婷六月丁香激情 | 丁香综合激情 | 国产伦理一区二区 | 国产亚洲精品久久久久久久久久 | 亚洲国产理论片 | 精品国产_亚洲人成在线 | 粉嫩一二三区 | 中文字幕中文字幕中文字幕 | 色综合天天综合 | 亚洲激情久久 | 菠萝菠萝在线精品视频 | 就要色综合 | 国产91精品久久久久久 | 91精品免费在线 | 亚洲色视频 | 午夜国产一区二区三区四区 | 日日夜夜综合 | 国产老太婆免费交性大片 | 日韩精品不卡 | 欧美午夜久久久 | 欧美国产精品久久久久久免费 | 国产1区在线观看 | 在线精品在线 | 久久久天天操 | 91视频免费看网站 | 久久国色夜色精品国产 | 中文字字幕在线 | 天天躁日日躁狠狠躁av中文 | 免费在线观看毛片网站 | 98久9在线 | 免费 | 欧美日韩国产mv | 久久免费99精品久久久久久 | 亚洲精品国产日韩 | 婷婷色资源 | 在线a人片免费观看视频 | 99热播精品 | 在线观看91精品国产网站 | 国产精品高潮呻吟久久av无 | 丁香婷婷基地 | 日韩中文字幕在线观看 | 97国产精品久久 | 91av在线精品| 在线免费观看欧美日韩 | 久久艹影院 | 视频99爱 | 国产视频不卡一区 | 亚洲精品小视频 | 国产色拍拍拍拍在线精品 | 国产美女在线精品免费观看 | 中文字幕日韩无 | 国产精品入口传媒 | 亚洲精品免费播放 | 91av片| 999久久久免费精品国产 | 日日爱视频 | 国产亚洲在线观看 | 国产三级久久久 | 99热这里只有精品在线观看 | 天天躁天天狠天天透 | 夜夜骑天天操 | 黄色毛片视频免费观看中文 | 久久综合久久综合这里只有精品 | 国产精品久久久久久一区二区三区 | 久久99精品国产一区二区三区 | 久草在在线视频 | 成人动漫视频在线 | 麻豆91在线 | 91视频高清| 69av视频在线 | 国产美女搞久久 | 色视频网站免费观看 | 天天操天天操一操 | 久久久黄色免费网站 | 日韩欧美综合 | 综合网中文字幕 | 国产一二三区av | 综合色在线 | av成人在线播放 | 久久手机在线视频 | 免费黄色网止 | 搡bbbb搡bbb视频| 精品国产精品国产偷麻豆 | 91免费观看| 国产热re99久久6国产精品 | 国产精品一区二区三区免费视频 | 免费看成人a | 国产成人久久精品亚洲 | www.69xx| 97看片吧 | 亚洲免费一级电影 | 日韩av电影网站在线观看 | 9在线观看免费高清完整版 玖玖爱免费视频 | 久久人人爽人人爽人人片av软件 | 国产麻豆电影在线观看 | 97超视频在线观看 | www..com毛片| 不卡的av| 精品久久福利 | 亚洲精品永久免费视频 | 一区二区视频在线看 | 在线观看免费国产小视频 | 网站在线观看你们懂的 | 午夜久久 | 国产视频91在线 | 亚洲 欧美变态 另类 综合 | 中文在线最新版天堂 | 最新av免费在线观看 | 国产精品久久av | 91精品视频观看 | 国产精品系列在线 | 在线免费成人 | 999ZYZ玖玖资源站永久 | 久久成人黄色 | 久草91视频 | 久久综合射 | 天天操导航 | 久草免费新视频 | 在线观看成人福利 | 国产成人精品av在线 | 久久久99精品免费观看 | 国产免费视频在线 | 手机在线看片日韩 | 四虎免费在线观看 | 五月导航 | 国产精品久久久久久av | 精品视频成人 | 欧美一级欧美一级 | 国产精品美女毛片真酒店 | 久久免费播放 | 国产成人av免费在线观看 | 九九av| 人人爽人人爽人人爽 | 亚洲资源网 | 亚洲日韩欧美一区二区在线 | 精品一区二区影视 | 亚洲久草在线 | 日本韩国在线不卡 | 欧美在线一级片 | 国产成人在线一区 | 国产精品视频最多的网站 | 在线91色| 国产亚洲免费的视频看 | 国产一区二区在线播放视频 | 国产一区高清在线 | 狠狠狠狠狠狠狠狠 | 日本动漫做毛片一区二区 | 久久精品99国产精品 | www.com操| 亚洲成av人片在线观看香蕉 | 中文字幕在线视频一区二区 | 久久视频这里只有精品 | 片网站 | 九九视频在线观看视频6 | 中文字幕乱码电影 | 99久久www免费 | 日韩精品免费一区二区 | 521色香蕉网站在线观看 | 黄色的网站在线 | 成人免费亚洲 | 久久香蕉影视 | 亚洲视频免费在线观看 | 国产日韩欧美精品在线观看 | 丁香婷婷激情啪啪 | 超碰在线个人 | 久久综合狠狠综合 | 免费在线播放 | 伊人成人激情 | 欧美午夜理伦三级在线观看 | 欧美少妇的秘密 | 免费日韩一区 | 日韩二区精品 | 国产.精品.日韩.另类.中文.在线.播放 | 久草在线免费资源 | 久久精品亚洲综合专区 | 久草免费色站 | 国产精品久久久久aaaa | 成人毛片久久 | 色综合狠狠干 | 午夜婷婷在线播放 | 中文视频在线 | 美女网站视频免费黄 | 亚洲欧美婷婷六月色综合 | 超碰伊人网 | 日本一区二区三区视频在线播放 | 91网页版免费观看 | 久久久久久久久久久高潮一区二区 | 一区二区三区高清在线 | av丝袜天堂 | 黄色av电影一级片 | 在线免费黄色毛片 | 一区二区三区中文字幕在线观看 | 黄色福利| 午夜视频在线观看一区二区三区 | 国产色妞影院wwwxxx | 久久伦理 | 四虎在线影视 | 久久九九久久 | 欧美一二三视频 | 在线播放 一区 | 欧美成人影音 | 亚洲黄色av | 在线观看岛国av | 色www. | 色中文字幕在线观看 | 久久 地址| 天堂成人在线 | 在线视频观看你懂的 | 日批视频在线 | 日韩综合色 | 国产第一页在线观看 | 免费男女网站 | 婷婷丁香激情综合 | 婷婷激情网站 | 夜夜夜| 国产精品女同一区二区三区久久夜 | 欧美色图东方 | 免费又黄又爽视频 | 久久久久国产精品免费 | 中文字幕超清在线免费 | 国产精品第7页 | 日韩黄色在线观看 | 亚洲天天干 | 黄色一级在线免费观看 | 中文区中文字幕免费看 | 91在线在线观看 | 免费特级黄毛片 | 香蕉视频91 | 国产玖玖视频 | 五月天国产 | 久久一级电影 | 亚洲成人av在线电影 | 天天干婷婷 | 久久精品视频在线观看 | 欧美成人h版 | 欧美a影视 | 欧美一区二区精品在线 | 免费a级毛片在线看 | 九九热精品视频在线观看 | av综合在线观看 | 欧美综合色在线图区 | 亚洲激精日韩激精欧美精品 | 亚洲精品中文在线 | 日批视频在线观看免费 | 国产在线a视频 | 91网在线看 | 人人干人人爽 | av中文字幕在线观看网站 | 最新日韩在线观看视频 | 国内小视频| 国产裸体bbb视频 | 亚洲黄电影 | 中文字幕电影在线 | 激情开心色| 波多野结衣亚洲一区二区 | 国产精品一区二区在线观看 | 久草在线视频新 | 国产视频导航 | 岛国大片免费视频 | av片子在线观看 | 精品在线视频一区二区三区 | 亚洲第一中文网 | 韩日精品中文字幕 | 色就是色综合 | 精品国产一二三 | 国产在线视频不卡 | 久久福利综合 | 操一草 | 国产在线观看91 | 成年人在线免费视频观看 | 久久久麻豆 | 日日婷婷夜日日天干 | www久久久久 | 婷婷视频在线观看 | 91精品国产91久久久久久三级 | 中文在线免费看视频 | 日韩欧美在线高清 | 中文字幕在线免费97 | 丁香综合av| 成人黄色影片在线 | 一区二区三区免费在线播放 | 日韩久久久久久久久久久久 | 91九色蝌蚪国产 | 在线国产小视频 | 亚洲午夜久久久久久久久 | 九九热国产视频 | 国产亚洲精品免费 | 91在线观 | 国模精品一区二区三区 | 国产乱对白刺激视频在线观看女王 | 一区二区中文字幕在线播放 | 尤物九九久久国产精品的分类 | 国产aa免费视频 | 亚洲精品久久久久久久蜜桃 | 九九视频精品免费 | 麻豆免费精品视频 | 国产综合香蕉五月婷在线 | 国产中文字幕在线播放 | 中文字幕在线看 | 欧美日韩另类视频 | 欧洲亚洲女同hd | 国产视频日韩 | 黄p在线播放| 久久精品视频3 | 国产免费观看高清完整版 | 精品久久久网 | 黄色成人91 | 国产精品第一视频 | 日韩高清不卡一区二区三区 | 国产精品成人自产拍在线观看 | 精品国产1区二区 | 色婷婷中文 | 欧美视频18 | 日韩精品视频在线观看网址 | 午夜精品婷婷 | 免费看成人a | 国产精品久久久久久久7电影 | 一区二区三区日韩视频在线观看 | 一二区精品 | 黄色资源在线观看 | 日本在线观看中文字幕无线观看 | 在线视频专区 | 在线观看精品一区 | 精品久久久久久久久久久久久久久久久久 | 欧美日韩高清一区二区 | 久久69精品久久久久久久电影好 | 9在线观看免费高清完整版 玖玖爱免费视频 | 欧美国产高清 | 国语对白少妇爽91 | 91色一区二区三区 | av动图 | 一级一片免费观看 | 精品亚洲一区二区三区 | 国产不卡在线看 | 久久午夜精品视频 | 91粉色视频 | 国产在线看一区 | 蜜桃视频色 | 国产黄色片网站 | 91在线公开视频 | 国产精品久久久久影视 | 亚洲精品网站 | 亚洲精品国产精品久久99 | 精品在线小视频 | av看片网 | 国产精品嫩草69影院 | 色婷婷狠狠操 | 精品女同一区二区三区在线观看 | 国产精品美女 | 2023亚洲精品国偷拍自产在线 | 国内成人精品视频 | 成人av免费在线 | 黄色毛片大全 | 成人在线网站观看 | 九色91视频 | 国产福利91精品一区二区三区 | 91精品国产99久久久久久红楼 | 一级α片免费看 | 日韩网站免费观看 | 久久精品国产免费观看 | 在线亚洲欧美日韩 | 久久久99精品免费观看乱色 | 国产精品福利小视频 | 精品在线你懂的 | 在线成人中文字幕 | 日韩福利在线观看 | 亚洲一级二级三级 | 992tv成人免费看片 | 草莓视频在线观看免费观看 | 在线色吧 | 天天综合网在线 | 91精品视频免费 | 亚洲女裸体 | 成人av片在线观看 | 亚洲一级黄色片 | 中文字幕视频在线播放 | 色视频在线观看免费 | 欧美日韩在线观看一区二区 | 精品在线一区二区 | 国产精品精 | 免费的国产精品 | aaa免费毛片| 久久xx视频 | 色婷婷久久久综合中文字幕 | 天海翼一区二区三区免费 | 玖玖视频在线 | 欧美精品中文 | 国产亚洲精品中文字幕 | 黄色网中文字幕 | 国产精彩视频一区二区 | 国产999视频在线观看 | 亚洲视频综合在线 | 一区二区三区电影在线播 | 久久人91精品久久久久久不卡 | 天天天色综合a | 欧美性天天 | 亚洲精品成人在线 | 亚洲午夜久久久久久久久电影网 | 久久国产午夜精品理论片最新版本 | 国产成人精品国内自产拍免费看 | 精品国产乱码久久久久久浪潮 | 久草综合视频 | 色橹橹欧美在线观看视频高清 | 成人午夜电影久久影院 | 国产精品久久久久久久久久直播 | 综合久久一本 | 色综合久久88色综合天天6 | 又黄又爽又色无遮挡免费 | 国产成人精品女人久久久 | 亚洲黄色av一区 | 中文字幕在线一区观看 | 精品你懂的 | 曰本免费av | 日日躁你夜夜躁你av蜜 | 国产一区二区在线看 | 国产麻豆视频在线观看 | 国产91大片| 91超级碰 | 五月综合激情婷婷 | 国产免费一区二区三区最新6 | 精品96久久久久久中文字幕无 | 天天综合导航 | 亚洲狠狠婷婷 | 国产高清绿奴videos | av片中文| 久久成人国产精品一区二区 | 欧美日韩精品影院 | 国产精品色视频 | 中文字幕日本在线 | 亚洲精品456在线播放第一页 | www夜夜操| 中文字幕在线观看三区 | 黄网站免费大全入口 | 四虎成人精品永久免费av | www99久久 | 91色在线观看 | 国产热re99久久6国产精品 | 插综合网 | 免费人做人爱www的视 | 久草青青在线观看 | av免费高清观看 | av中文字幕av | 天天插天天 | 国产免费区 | 日本高清免费中文字幕 | 国内外成人在线 | 国产天天爽 | 欧美一级在线观看视频 | 天天干天天操天天操 | 成人啊 v | 国产69精品久久久久9999apgf | 99精品区 | 亚洲美女精品区人人人人 | 国产精品手机在线 | 99精品国自产在线 | 欧美大片www | 不卡国产视频 | 国产在线第三页 | 中文在线免费看视频 | 久操视频在线观看 | 伊人亚洲综合网 | 亚洲三级在线播放 | 91av片| 成人观看 | 精品国内自产拍在线观看视频 | 在线播放91 | 成人黄色电影在线 | 婷婷色 亚洲 | 日韩夜夜爽 | 美腿丝袜av | 欧美日韩国产精品久久 | 亚洲欧美成人网 | av国产在线观看 | 久久精品8 | 精品久久久久久综合 | 五月开心六月伊人色婷婷 | 国产爽妇网 | av中文字幕不卡 | 在线观看精品黄av片免费 | 亚洲黄色在线观看 | 国产精品福利久久久 | 深爱激情站 | 欧美精品v国产精品v日韩精品 | 婷婷色在线观看 | 色五月色开心色婷婷色丁香 | 色妞色视频一区二区三区四区 | 成年性视频 | 成年人视频在线观看免费 | 视频一区二区视频 | 91视频在线自拍 | 99色在线观看视频 | 99视频在线 | 国产精品国产三级国产aⅴ入口 | 精品国内 | 国产精品久久久久影院 | 黄色www免费 | 日韩高清免费电影 | 国产区高清在线 | 99久久一区 | 久久香蕉国产精品麻豆粉嫩av | 久久免费a | 日韩精品在线一区 | 国产成人久久av免费高清密臂 | 97av.com| 97超碰免费| zzijzzij日本成熟少妇 | 成人黄色在线 | 亚洲精品福利在线观看 | 97色狠狠| 久久视频网址 | 一区二区三区久久 | 精品国产乱码一区二区三区在线 | 黄色三级免费网址 | 久久精品人人做人人综合老师 | 欧亚久久| 欧美一二三区在线播放 | 在线日韩三级 | 久久黄色小说视频 | 中文字幕av影院 | 在线视频 国产 日韩 | 91久久偷偷做嫩草影院 | 久久精品国产久精国产 | a天堂最新版中文在线地址 久久99久久精品国产 | www.久久视频 | 人人爱人人做人人爽 | 中文字幕免费一区二区 | 中文字幕日本在线 | 97av影院 | 美女国产在线 | 亚洲视频axxx | 久久亚洲免费视频 | 亚洲视频免费 | 亚洲人在线7777777精品 | 91看毛片 | 国产福利a | 国产精品国产亚洲精品看不卡 | 亚洲精品免费视频 | 欧美另类sm图片 | 免费欧美精品 | 1000部国产精品成人观看 | 欧美日韩视频在线观看一区二区 | 成人免费观看视频网站 | 亚洲伦理一区二区 | 狠狠操狠狠 | av在线官网| 99热这里只有精品久久 | 久久亚洲专区 | 天天拍天天操 | 啪啪免费试看 | 成人在线视频免费观看 | 国产露脸91国语对白 | 国产高清视频免费在线观看 | 久久艹免费 | 91av手机在线观看 | 国内丰满少妇猛烈精品播放 | 亚洲最大成人网4388xx | 久久久久久久久久国产精品 | 日韩欧美精品在线观看视频 | 97在线观看视频 | 亚洲精品国产自产拍在线观看 | 在线激情电影 | 日韩免费一区二区在线观看 | 91精品视频播放 | 999久久久久久久久久久 | 99中文视频在线 | 日韩欧美高清视频在线观看 | 五月天天在线 | 国产黄影院色大全免费 | 国产日韩视频在线观看 | 久久99精品久久久久久三级 | 丝袜网站在线观看 | 精品国产理论 | 日韩网页 | 久久久综合九色合综国产精品 | 亚洲精品视频二区 | 亚洲理论在线观看电影 | 99视频精品免费视频 | 免费看成年人 | 久久99久国产精品黄毛片入口 | 国产精品av电影 | av免费在线免费观看 | 国产网站色| 韩国精品视频在线观看 | 国产精品第72页 | 亚洲v欧美v国产v在线观看 | 亚洲视频 视频在线 | 欧美另类激情 | 最近高清中文字幕 | 婷婷在线免费 | 国产视频资源在线观看 | 久久黄色网页 | 97色免费视频 | 久草视频国产 | 久草精品免费 | 色噜噜日韩精品欧美一区二区 | 国产玖玖精品视频 | 免费亚洲精品视频 | 国产精品国产毛片 | 日韩精品你懂的 | 波多野结衣在线中文字幕 | 久草视频在线资源 | 天堂激情网 | 2023亚洲精品国偷拍自产在线 | 一级大片在线观看 | 国产精品第一 | 成人黄色在线视频 | 久久综合桃花 | 亚洲欧美视频 | 亚洲精品影院在线观看 | 青草视频在线播放 | 日本高清免费中文字幕 | 国产亚洲婷婷免费 | 国产一区二区手机在线观看 | 人人干人人搞 | 精品欧美在线视频 | 成人av影视| 免费成人av电影 | 国产精品中文字幕在线 | 国产中文自拍 | 一级a性色生活片久久毛片波多野 | 欧美日韩国产色综合一二三四 | 欧美日韩在线精品一区二区 | 色婷婷伊人 | 99久久精品日本一区二区免费 | www狠狠 | 人人爽人人爽人人片av免 | 中文字幕日本电影 | 又黄又爽又色无遮挡免费 | 国产九色在线播放九色 | 日韩综合一区二区三区 | 免费观看的黄色 | 色综合久久综合 | 亚洲国产精品一区二区久久,亚洲午夜 | 日韩 | 国产在线视频一区二区 | a天堂免费| wwwwww黄| 国产在线p | 99精品国产成人一区二区 | 久久久高清视频 | 婷婷久操| 久久图 | 18国产精品福利片久久婷 | 久草网视频在线观看 | 国产在线视频资源 | 欧美热久久| 久久黄页| 日韩色av色资源 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 久久国产精品99久久久久久老狼 | 亚洲国产播放 | 一区在线播放 | 波多野结衣日韩 | 国产精品美女久久久久久久久久久 | 在线不卡中文字幕播放 | 欧美性爽爽| 久久精品国产亚洲精品2020 | 成人免费视频在线观看 | 日韩激情视频在线观看 | 99热超碰在线 | 久久人人爽人人爽 | 日韩精品视频免费看 | 精品高清美女精品国产区 | 国产99免费视频 | 国产精品高清在线 | 精品999在线 | 91视频国产免费 | 久久久国产在线视频 | 国产成人av| 亚洲黄色片在线 | 欧美日韩不卡一区 | 99激情网 | 亚州av成人 | 中文字幕高清 | 国产理论免费 | 久久免费精品视频 | 高清一区二区 | 成人在线免费小视频 | 福利久久久 | 国产 日韩 欧美 中文 在线播放 | 欧美成人h版 | 在线国产视频 | 色综合国产 | 久久精品视频日本 | 9在线观看免费高清完整版在线观看明 | 久久精品一区 | 97色综合| 国产69精品久久久久久久久久 | 天天操天天草 | 狠狠色噜噜狠狠狠合久 | 亚洲精品影视在线观看 | 亚洲精品久久久久中文字幕m男 | 97精品视频在线播放 | 91精品久久久久久久久久久久久 | 麻豆影视在线观看 | 免费av片在线 | 在线视频日韩欧美 | 日韩美一区二区三区 | 91.dizhi永久地址最新 | 伊人婷婷| 在线看日韩 | 免费的国产精品 | 国产视频久久久久 | 亚洲日本精品 | 国产精品久久久久久高潮 | 成人啪啪18免费游戏链接 | 超碰97公开 | av网站在线免费观看 | 久久乐九色婷婷综合色狠狠182 | 激情婷婷在线 | 91丨九色丨国产女 | 91爱爱免费观看 | 久久亚洲综合国产精品99麻豆的功能介绍 | 美女精品久久久 | 日韩中字在线观看 | 九九热免费精品视频 | 97在线视频免费播放 | 午夜视频福利 | 久草视频在线免费播放 | 亚洲精品午夜国产va久久成人 | 日韩av电影免费在线观看 | 国产天天综合 | 韩国av三级 | 日韩免费看的电影 | 日韩电影久久 | www.av免费| 国产精品99免费看 | 国产精品久久99综合免费观看尤物 | 色视频在线免费观看 | 亚洲国产精品女人久久久 | 久久爱资源网 | 国产成人一二三 | 精品少妇一区二区三区在线 | 在线观看亚洲免费视频 | 999久久国精品免费观看网站 | 波多野结衣精品在线 | 精品一区欧美 | 手机在线看a | 青青草在久久免费久久免费 | 成人蜜桃 | 国产免费a| 成人在线视频你懂的 | 久一久久| 国产伦精品一区二区三区照片91 | 狠狠色丁香婷婷综合 | 最近更新的中文字幕 | www久久精品| 日韩精品黄 | 美女视频免费精品 | 国产香蕉视频在线观看 | av一级免费 | 日韩一区二区三区免费视频 | 日韩成人一级大片 | 97色婷婷成人综合在线观看 | 久久九九久久 | 精品久久久久久国产91 | 狠狠狠的干 | 久久久www成人免费精品 | 欧美视频二区 | 日韩黄色中文字幕 | 日本精品视频免费 | 色婷婷久久一区二区 | 狠狠的操| 亚洲视频h | 久久1电影院 | 高清av不卡 | 亚洲精品久久久久中文字幕二区 | 中文字幕在线日 | 久久你懂得 | 中文字幕在线观看第一页 | 亚洲精品美女久久久久网站 | 狠狠狠综合 | 免费亚洲视频在线观看 | 国产午夜不卡 | 欧洲精品码一区二区三区免费看 | 美女黄濒 | 操处女逼 | 久久久久久久久久久久久久av | 国产精品久久久久久久av大片 | 国产成人久久av免费高清密臂 | 91chinese在线| 国产在线综合视频 | 国产亚洲精品v | 国产精品久久精品 | 久久精品视频在线播放 | 色在线亚洲 | 日韩电影在线视频 | 91av电影| 91一区啪爱嗯打偷拍欧美 | 国产日韩精品在线观看 | 亚洲高清精品在线 | 粉嫩aⅴ一区二区三区 |