成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > 使用client-go工具調(diào)用kubernetes API接口的教程詳解(v1.17版本)

使用client-go工具調(diào)用kubernetes API接口的教程詳解(v1.17版本)

熱門標(biāo)簽:400手機(jī)電話免費(fèi)辦理 上海企業(yè)外呼系統(tǒng)排名 如何利用高德地圖標(biāo)注家 電腦外呼系統(tǒng)輻射大嗎 開通400電話申請(qǐng)流程 百度地圖標(biāo)注位置網(wǎng)站 揚(yáng)州電銷外呼系統(tǒng)軟件 智能語(yǔ)音電銷的機(jī)器人 武漢百應(yīng)人工智能電銷機(jī)器人

說(shuō)明

可以調(diào)取k8s API 接口的工具有很多,這里我就介紹下client-go

gitlab上client-go項(xiàng)目地址: https://github.com/kubernetes/client-go  

這個(gè)工具是由kubernetes官方指定維護(hù)的,大家可以放心使用

效果

運(yùn)行完成后,可以直接獲取k8s集群信息等

實(shí)現(xiàn)

1、拉取工具源碼

注意事項(xiàng):https://github.com/kubernetes/client-go/blob/master/INSTALL.md

總結(jié):一定要拉取跟集群對(duì)應(yīng)版本的工具源碼,比如我這里集群是1.17版本,那我就拉取17版本

go get k8s.io/client-go@v0.17.0

我是1.17版本的集群,所有依賴文件放在這了,可以直接使用client-go k8s1.17 api

2、創(chuàng)建目錄結(jié)構(gòu)

集群的角色配置文件(默認(rèn)在/root/.kube/config)
kube/config

查詢代碼實(shí)例

查詢pod信息

查看ferry命名空間下pod的信息,pod名字、pod的IP

vim kube-api.go

package main

import (
	"fmt"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

	"k8s.io/client-go/kubernetes"

	"k8s.io/client-go/tools/clientcmd"
)

func main() {

	config, err := clientcmd.BuildConfigFromFlags("", "kube/config")
	if err != nil {
		panic(err)
	}
	client, _ := kubernetes.NewForConfig(config)
	pods ,err := client.CoreV1().Pods("ferry").List(metav1.ListOptions{})
	if err != nil {
		fmt.Println(err)
		return
	}

	for _,v := range  pods.Items {
		fmt.Printf(" 命名空間是:%v\n pod名字:%v\n IP:%v\n\n",v.Namespace,v.Name,v.Status.PodIP)
	}
}

自動(dòng)關(guān)聯(lián)依賴

go mod tidy

運(yùn)行結(jié)果

$ go run kube-api.go

 命名空間是:ferry
 pod名字:ferry-backend-7949596679-h8lxb
 IP:10.42.1.14

 命名空間是:ferry
 pod名字:ferry-mysql-8db8d49f7-6psbv
 IP:10.42.1.11

查詢一個(gè)pod是否在一個(gè)命名空間下

https://github.com/kubernetes/client-go/blob/master/examples/in-cluster-client-configuration/main.go
每3秒檢查下nginx-74959fc858-cp48w是否在default命名空間下

package main

import (
	"context"
	"fmt"
	"k8s.io/apimachinery/pkg/api/errors"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/tools/clientcmd"
	"time"
)

func main() {

	config, err := clientcmd.BuildConfigFromFlags("", "kube/config")
	if err != nil {
		panic(err)
	}
	clientset, err := kubernetes.NewForConfig(config)
	if err != nil {
		panic(err.Error())
	}
	for {
		// get pods in all the namespaces by omitting namespace
		// Or specify namespace to get pods in particular namespace
		pods, err := clientset.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{})
		if err != nil {
			panic(err.Error())
		}
		fmt.Printf("There are %d pods in the cluster\n", len(pods.Items))

		// Examples for error handling:
		// - Use helper functions e.g. errors.IsNotFound()
		// - And/or cast to StatusError and use its properties like e.g. ErrStatus.Message
		_, err = clientset.CoreV1().Pods("default").Get(context.TODO(), "nginx-74959fc858-cp48w", metav1.GetOptions{})
		if errors.IsNotFound(err) {
			fmt.Printf("Pod nginx-74959fc858-cp48w not found in default namespace\n")
		} else if statusError, isStatus := err.(*errors.StatusError); isStatus {
			fmt.Printf("Error getting pod %v\n", statusError.ErrStatus.Message)
		} else if err != nil {
			panic(err.Error())
		} else {
			fmt.Printf("Found nginx-74959fc858-cp48w pod in default namespace\n")
		}

	 time.Sleep(3 * time.Second)
	}
}

運(yùn)行結(jié)果

$ go run kube-api.go
There are 22 pods in the cluster
Found nginx-74959fc858-cp48w pod in default namespace
There are 22 pods in the cluster
Found nginx-74959fc858-cp48w pod in default namespace
There are 22 pods in the cluster
Found nginx-74959fc858-cp48w pod in default namespace
There are 23 pods in the cluster
Found nginx-74959fc858-cp48w pod in default namespace
There are 22 pods in the cluster
Found nginx-74959fc858-cp48w pod in default namespace
There are 22 pods in the cluster
Found nginx-74959fc858-cp48w pod in default namespace
There are 21 pods in the cluster
\\在集群種手動(dòng)刪除了這個(gè)pod
Pod nginx-74959fc858-cp48w not found in default namespace
There are 21 pods in the cluster
Pod nginx-74959fc858-cp48w not found in default namespace

查詢deployment服務(wù)類型信息

查詢default命名空間下的deployment服務(wù)信息,服務(wù)名字、服務(wù)副本數(shù)

package main

import (
	"fmt"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

	"k8s.io/client-go/kubernetes"

	"k8s.io/client-go/tools/clientcmd"
)

func main() {

	config, err := clientcmd.BuildConfigFromFlags("", "kube/config")
	if err != nil {
		panic(err)
	}
	client, _ := kubernetes.NewForConfig(config)
	deploymentList, err := client.AppsV1().Deployments("default").List(metav1.ListOptions{})
	if err != nil {
		fmt.Println(err)
		return
	}

	for _,v := range deploymentList.Items {
		fmt.Printf(" 命名空間是:%v\n deployment服務(wù)名字:%v\n 副本個(gè)數(shù):%v\n\n",v.Namespace,v.Name,v.Status.Replicas)
	}

}

運(yùn)行結(jié)果

$ go run kube-api.go
 命名空間是:default
 deployment服務(wù)名字:nginx
 副本個(gè)數(shù):2

創(chuàng)建deployment資源

https://github.com/kubernetes/client-go/blob/master/examples/create-update-delete-deployment/main.go

復(fù)制一個(gè)config文件到當(dāng)前目錄下

創(chuàng)建一個(gè)deployment類型的nginx服務(wù)

vim deployment-create.go

package main

import (
	"context"
	"flag"
	"fmt"

	"path/filepath"

	appsv1 "k8s.io/api/apps/v1"
	apiv1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/tools/clientcmd"
	"k8s.io/client-go/util/homedir"
	//
	// Uncomment to load all auth plugins
	// _ "k8s.io/client-go/plugin/pkg/client/auth"
	//
	// Or uncomment to load specific auth plugins
	// _ "k8s.io/client-go/plugin/pkg/client/auth/azure"
	// _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
	// _ "k8s.io/client-go/plugin/pkg/client/auth/oidc"
	// _ "k8s.io/client-go/plugin/pkg/client/auth/openstack"
)

func main() {
	var kubeconfig *string
	if home := homedir.HomeDir(); home != "" {
		kubeconfig = flag.String("kubeconfig", filepath.Join("config"), "(optional) absolute path to the kubeconfig file")
	} else {
		kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
	}
	flag.Parse()

	config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
	if err != nil {
		panic(err)
	}
	clientset, err := kubernetes.NewForConfig(config)
	if err != nil {
		panic(err)
	}

	deploymentsClient := clientset.AppsV1().Deployments(apiv1.NamespaceDefault)

	deployment := appsv1.Deployment{
		ObjectMeta: metav1.ObjectMeta{
			Name: "nginx-deployment",
		},
		Spec: appsv1.DeploymentSpec{
			Replicas: int32Ptr(2),
			Selector: metav1.LabelSelector{
				MatchLabels: map[string]string{
					"app": "nginx",
				},
			},
			Template: apiv1.PodTemplateSpec{
				ObjectMeta: metav1.ObjectMeta{
					Labels: map[string]string{
						"app": "nginx",
					},
				},
				Spec: apiv1.PodSpec{
					Containers: []apiv1.Container{
						{
							Name:  "web",
							Image: "nginx:1.12",
							Ports: []apiv1.ContainerPort{
								{
									Name:          "http",
									Protocol:      apiv1.ProtocolTCP,
									ContainerPort: 80,
								},
							},
						},
					},
				},
			},
		},
	}

	// Create Deployment
	fmt.Println("Creating deployment nginx...")
	result, err := deploymentsClient.Create(context.TODO(), deployment, metav1.CreateOptions{})
	if err != nil {
		panic(err)
	}
	fmt.Printf("Created deployment %q.\n", result.GetObjectMeta().GetName())

}

運(yùn)行結(jié)果

$ go run deployment-create.go
Creating deployment nginx...
Created deployment "nginx-deployment".

更新deployment類型服務(wù)

https://github.com/kubernetes/client-go/blob/master/examples/create-update-delete-deployment/main.go
更改服務(wù)的副本數(shù),由上一步創(chuàng)建的2修改成1,并修改鏡像由nginx1.12–>nginx1.13

package main

import (
	"context"
	"flag"
	"fmt"
	"path/filepath"

	apiv1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/tools/clientcmd"
	"k8s.io/client-go/util/homedir"
	"k8s.io/client-go/util/retry"
	//
	// Uncomment to load all auth plugins
	// _ "k8s.io/client-go/plugin/pkg/client/auth"
	//
	// Or uncomment to load specific auth plugins
	// _ "k8s.io/client-go/plugin/pkg/client/auth/azure"
	// _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
	// _ "k8s.io/client-go/plugin/pkg/client/auth/oidc"
	// _ "k8s.io/client-go/plugin/pkg/client/auth/openstack"
)

func main() {
	var kubeconfig *string
	if home := homedir.HomeDir(); home != "" {
		kubeconfig = flag.String("kubeconfig", filepath.Join("config"), "(optional) absolute path to the kubeconfig file")
	} else {
		kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
	}
	flag.Parse()

	config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
	if err != nil {
		panic(err)
	}
	clientset, err := kubernetes.NewForConfig(config)
	if err != nil {
		panic(err)
	}

	deploymentsClient := clientset.AppsV1().Deployments(apiv1.NamespaceDefault)

	retryErr := retry.RetryOnConflict(retry.DefaultRetry, func() error {
		// Retrieve the latest version of Deployment before attempting update
		// RetryOnConflict uses exponential backoff to avoid exhausting the apiserver
		result, getErr := deploymentsClient.Get(context.TODO(), "nginx-deployment", metav1.GetOptions{})
		if getErr != nil {
			panic(fmt.Errorf("Failed to get latest version of Deployment: %v", getErr))
		}

		result.Spec.Replicas = int32Ptr(1)                           // reduce replica count
		result.Spec.Template.Spec.Containers[0].Image = "nginx:1.13" // change nginx version
		_, updateErr := deploymentsClient.Update(context.TODO(), result, metav1.UpdateOptions{})
		return updateErr
	})
	if retryErr != nil {
		panic(fmt.Errorf("Update failed: %v", retryErr))
	}
	fmt.Println("Updated deployment nginx")

}
func int32Ptr(i int32) *int32 { return i }

運(yùn)行結(jié)果

$ go run deployment-update.go
Updated deployment nginx

刪除deployment類型服務(wù)

刪除上面創(chuàng)建的nginx-deployment資源,刪除之前添加了確認(rèn)語(yǔ)句

package main

import (
	"bufio"
	"context"
	"flag"
	"fmt"
	"os"
	"path/filepath"

	apiv1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/tools/clientcmd"
	"k8s.io/client-go/util/homedir"
	//
	// Uncomment to load all auth plugins
	// _ "k8s.io/client-go/plugin/pkg/client/auth"
	//
	// Or uncomment to load specific auth plugins
	// _ "k8s.io/client-go/plugin/pkg/client/auth/azure"
	// _ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
	// _ "k8s.io/client-go/plugin/pkg/client/auth/oidc"
	// _ "k8s.io/client-go/plugin/pkg/client/auth/openstack"
)

func main() {
	var kubeconfig *string
	if home := homedir.HomeDir(); home != "" {
		kubeconfig = flag.String("kubeconfig", filepath.Join( "config"), "(optional) absolute path to the kubeconfig file")
	} else {
		kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
	}
	flag.Parse()

	config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
	if err != nil {
		panic(err)
	}
	clientset, err := kubernetes.NewForConfig(config)
	if err != nil {
		panic(err)
	}

	deploymentsClient := clientset.AppsV1().Deployments(apiv1.NamespaceDefault)

     prompt()
	fmt.Println("Deleting deployment nginx...")
	deletePolicy := metav1.DeletePropagationForeground
	if err := deploymentsClient.Delete(context.TODO(), "nginx-deployment", metav1.DeleteOptions{
		PropagationPolicy: deletePolicy,
	}); err != nil {
		panic(err)
	}
	fmt.Println("Deleted deployment.")
}

func prompt() {
	fmt.Printf("-> Press Return key to continue, will delete!")
	scanner := bufio.NewScanner(os.Stdin)
	for scanner.Scan() {
		break
	}
	if err := scanner.Err(); err != nil {
		panic(err)
	}
	fmt.Println()
}

func int32Ptr(i int32) *int32 { return i }

運(yùn)行結(jié)果

$ go run deployment-delete.go
-> Press Return key to continue, will delete! 這里點(diǎn)擊回車后繼續(xù)刪除資源

Deleting deployment nginx...
Deleted deployment.

到此這篇關(guān)于使用client-go工具調(diào)kubernetes API接口(v1.17版本)的文章就介紹到這了,更多相關(guān)client-go調(diào)用kubernetes API內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Django mysqlclient安裝和使用詳解
  • golang使用http client發(fā)起get和post請(qǐng)求示例
  • Django單元測(cè)試工具test client使用詳解
  • Golang 使用http Client下載文件的實(shí)現(xiàn)方法
  • PHP使用mongoclient簡(jiǎn)單操作mongodb數(shù)據(jù)庫(kù)示例
  • 使用httpclient實(shí)現(xiàn)免費(fèi)的google翻譯api

標(biāo)簽:江西 黑龍江 宜賓 武漢 新余 延邊 嘉峪關(guān) 張掖

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用client-go工具調(diào)用kubernetes API接口的教程詳解(v1.17版本)》,本文關(guān)鍵詞  使用,client-go,工具,調(diào)用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《使用client-go工具調(diào)用kubernetes API接口的教程詳解(v1.17版本)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于使用client-go工具調(diào)用kubernetes API接口的教程詳解(v1.17版本)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    天堂网www在线网| 最近2019中文字幕第三页视频| 免费男女羞羞的视频网站中文子暮| 77777影视视频在线观看| 欧美日韩激情四射| 91性高湖久久久久久久久_久久99| 国产精品av免费在线观看| 欧美怡春院一区二区三区| 国产粉嫩一区二区三区在线观看| 性生交大片免费全黄| 精品国自产拍在线观看| 国产精品网在线观看| 精品日本高清在线播放| 国产精品系列在线观看| av色影在线看免费| 国产一区二区三区国产精品| 国产成人精品久久| 亚洲v欧美v另类v综合v日韩v| www.久久久久久.com| 国产午夜麻豆影院在线观看| 日韩欧美在线免费观看| www一区二区三区| 一区二区三区区四区播放视频在线观看| 一级在线免费观看| 欧美日韩激情一区二区| 中文字幕在线观看日| 国产探花在线精品| 欧美一区二区三区艳史| 性久久久久久| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲精品国产精品粉嫩| 国模一区二区三区白浆| 中文一区在线观看| 黑人一级大毛片| 妖精视频在线观看免费| 一区二区三区在线播放| 精品午夜久久福利影院| 日韩大片免费在线观看| 9久草视频在线视频精品| 国产精品高清免费在线观看| 国产欧美一区二区三区在线观看视频| 欧美第一区第二区| 2019年中文字幕| 免费在线观看av网址| 视频福利在线| 国产精品视频白浆合集| 99免费在线视频观看| 亚洲一区二区三区四区不卡| 久久99精品国产自在现线小黄鸭| 五月天亚洲综合情| 国产乱色精品成人免费视频| 国产麻豆一区二区三区| 欧美精品手机在线| 日韩色在线观看| 国产亚洲精久久久久久无码77777| 久久久午夜精品福利内容| 久久精品www人人爽人人| 中文字幕亚洲欧美日韩| 欧美日韩国产色综合一二三四| 国产麻豆一区二区三区精品视频| 视频三区二区一区| 宅男午夜电影| 国产又黄又粗又猛又爽| 亚洲精品成a人ⅴ香蕉片| 国产精品视频一区二区三区不卡| av老司机久久| 美女爽到高潮91| 久久精品日韩欧美| 影音先锋男人每日资源站| 亚洲成人一区在线观看| 国产在线视频三区| 精品国产a一区二区三区v免费| 成人午夜福利视频| 色总=综合色| 国产一区精品二区| 黄色激情网站| 激情深爱一区二区| 精品久久久一区二区| 国产一卡二卡三卡| 国产男女无套在线播放| 蜜桃视频污在线观看| eeuss影院www在线播放| 99精品在免费线中文字幕网站一区| 超碰在线成人| 亚洲第一av网站| 天天av天天爱| 欧洲亚洲国产日韩| 日本少妇性生活| 中文字幕亚洲综合久久菠萝蜜| 国产精品污www一区二区三区| 成人三级伦理片| 91在线观看入口| 2019国产精品| 欧美激情网站| 国产主播中文字幕| 欧美日本韩国一区二区三区视频| 亚洲色图制服丝袜| 97久久超碰国产精品| 日韩欧美一区二区不卡| 久久嫩草精品久久久精品| 波多野结衣a v在线| 欧美精品一区二区久久| 亚洲黄色小说网| 波多野结衣一区| 在线欧美一区| 美女免费黄视频网站| 日韩av中文字幕在线免费观看| 久艹视频在线观看| 国产精品国产三级欧美二区| 色www永久免费视频首页在线| 日本夜夜草视频网站| 综合网在线视频| 日韩熟女精品一区二区三区| 欧美搞黄网站| 在线观看岛国av| 91亚洲国产成人精品一区二三| 国产精选一区二区三区不卡催乳| 九九久久久久久久久激情| 欧美一卡二卡在线观看| 久久精品日韩无码| 亚洲精品午夜视频| 亚洲精品永久免费视频| 国产精品自拍三区| 国产在线观看不卡一区二区三区| 久久福利视频网| 一区二区三区国| 成人免费av网站| 进去里视频在线观看| 91国拍精品国产粉嫩亚洲一区| 久久久久久久久久久久久夜| 99re这里有精品| 国产欧美日韩综合精品一区二区三区| 亚洲成人精品电影在线观看| 粉嫩粉嫩芽的虎白女18在线视频| 婷婷亚洲一区二区三区| 亚洲精品无码专区在线播放| 日韩不卡高清视频| 亚洲专区在线| av网站在线观看不卡| 一区二区三区免费观看| 亚州欧美在线| 美女搞黄视频在线观看| av永久免费观看| 中文字幕亚洲免费| 9191国语精品高清在线| 国产精品99久久免费| 久草热久草热线频97精品| 国产一起色一起爱| 国产特级嫩嫩嫩bbb| 91精品国产乱码久久久久久久| 久久精品99国产精品| 久久婷婷国产综合国色天香| 国产又粗又猛又爽又黄的视频一| 亚洲免费一级视频| a级片在线观看视频| 亚洲视频国产| 久久人人爽人人爽人人片av高请| 久久精品99久久无色码中文字幕| 99在线免费观看| 亚洲高清免费| 亚洲av无码一区二区三区网址| 国产乱码精品一区二区三区亚洲人| 久久影院资源网| 国产日本韩国在线播放| 91sp网站在线观看入口| 日韩精品视频一区二区在线观看| 国产欧美一区二区三区在线老狼| 成人在线观看免费网站| 久久精品动漫| 中文字幕av久久爽av| 欧美日韩成人在线观看| 第一社区sis001原创亚洲| 91影院未满十八岁禁止入内| 91视频久久久| 欧美猛烈性xbxbxbxb| 国产高清亚洲| 欧美精品一区二区三区四区| www黄在线观看| 日韩亚洲电影在线| 亚洲国产天堂久久国产91| 美女91精品| 亚洲天堂电影在线观看| 国产精品毛片高清在线完整版| 久久高清精品| 中文在线资源观看网站视频免费不卡| 亚洲剧情一区二区| 色哟哟在线观看视频| 色橹橹高清视频在线播放| 欧美日韩蜜桃| 亚洲性夜色噜噜噜7777| 欧洲专线二区三区| 99在线精品一区二区三区| 亚洲欧美日韩精品在线| 日日夜夜天天综合入口| 未满十八勿进黄网站一区不卡| 首页国产精品| 成人天堂噜噜噜| 在线观看精品国产视频| 国产在线播放精品| 久久久久久久久久国产| 久久一区二区电影| 欧美国产禁国产网站cc| 夜夜春成人影院| 人妻少妇被粗大爽9797pw| 蜜桃av色综合| 综合国产在线视频| 97超级碰在线看视频免费在线看| 久久亚洲国产精品日日av夜夜| 伊人久久久久久久久久久久久久| 日本午夜精品电影| 欧美亚洲免费在线一区| 成人高清av| 骚视频在线观看| 成人午夜精品福利免费| 成年人在线网站| 欧美日韩精品中文字幕| 91人妻一区二区三区| 日批在线观看视频| 日本中文字幕在线观看视频| 天堂а在线中文在线无限看推荐| 天堂av2024| 性欧美丰满熟妇xxxx性久久久| 91免费版视频| 欧美日韩亚洲国内综合网俺| 九九热国产视频| 亚洲精品一二三四| 日韩成人精品在线| 无码人妻丰满熟妇奶水区码| 日韩精品一区二区三区蜜臀| 一区二区三区电影网| 成人免费一区二区三区视频| 在线视频你懂得一区二区三区| 亚洲欧洲闷骚av少妇影院| 日韩丝袜视频| 欧美伦理片在线观看| 一区二区三区视频免费在线观看| 99视频在线精品国自产拍免费观看| 麻豆亚洲av熟女国产一区二| 在线观看免费视频一区| 在线免费观看的av| 亚洲国产精品天堂| 国产在线观看免费视频软件| 国产精品久久久久久久电影| 欧美一级淫片007| 蜜臀久久99精品久久久画质超高清| 国产a级全部精品| 精品美女久久| 国产美女永久免费| 97热在线精品视频在线观看| 精品久久久久国产| 亚洲午夜在线观看视频在线| 成人在线一区二区三区| 青青草视频在线免费观看| sihu影院永久在线影院| 久久亚洲色图| 日韩一区二区三区色| 国产成人免费视频精品含羞草妖精| 91精品办公室少妇高潮对白| av网址在线| 不卡av在线免费观看| 亚洲欧洲视频| 欧美日韩免费不卡视频一区二区三区| 精品久久久久久久中文字幕| 91制片厂免费观看| 第四色在线视频| 青草青草久热精品视频在线网站| 91老师国产黑色丝袜在线| 中文字幕视频在线播放| 青青青爽在线视频免费观看| 国产在线高潮| 日韩免费观看高清完整版| 91精品一区二区三区在线观看| 非洲一级黄色片| 欧美色视频日本版| 国产免费视频一区二区三区| 成年人免费网站| 亚洲成人激情在线| 成人欧美大片| 男人添女人下部高潮视频在观看| 欧美日韩精品在线观看| 国产精品久久久久影院亚瑟| 国产成人精品免费视频大全软件| 国产精品白浆一区二小说| 精品人妻一区二区三区日产乱码卜| 欧美,日韩,国产在线| 精品久久久中文字幕人妻| 国产精品亚洲色图| 日韩精品电影在线| 超碰这里只有精品| 国产伦精品一区二区三区视频网站| 精品免费日产一区一区三区免费| 国产三级三级三级看三级| 波多野结衣一区二区三区| 人妻体内射精一区二区| 国产精品久久久99| 国产精品aaa| 中文天堂av| 日韩精品高清在线观看| 丁香婷婷深情五月亚洲| 国产精品一区二区果冻传媒| 日韩一区二区三区高清免费看看| 久久亚洲精品中文字幕蜜潮电影| 不卡一本毛片| 韩日欧美一区| 三年中国中文观看免费播放| 亚洲国产精品狼友在线观看| 日本午夜激情视频| 日韩欧美一区视频| а√最新版地址在线天堂| 国产电影精品久久禁18| 久久久人成影片免费观看| 国产一区2区在线观看| 91传媒免费视频| 精品视频全国免费看| 国产成人高清视频| 欧美日韩亚洲激情| 亚洲老女人视频免费| 成人三级做爰av| 一本大道香蕉8中文在线视频| 在线观看一区二区三区三州| 在线观看免费播放网址成人| 在线成人午夜影院| 久久精品国产一区二区三区不卡| av一级毛片| 亚洲二区在线视频| 日韩欧美电影一二三| free性欧美| 成人永久aaa|