精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

AIOps系列 | 開(kāi)發(fā) K8s GPT 故障診斷工具

人工智能
我們使用一個(gè)?map[string][]string?來(lái)保存 pod 的事件和日志信息,然后通過(guò)?client-go?獲取?warning?級(jí)別的事件,最后過(guò)濾需要的?pod?事件以及?pod?相關(guān)信息,然后繼續(xù)通過(guò)?client-go?獲取對(duì)應(yīng)?pod?的日志,然后把這些信息放到?map?中。

前面我們介紹了 《開(kāi)發(fā) K8s Chat 命令行工具》,實(shí)現(xiàn)了通過(guò)和 Kubernetes 進(jìn)行交互的方式進(jìn)行運(yùn)維,雖然文章中所描述的功能比較簡(jiǎn)單,但是可以以此進(jìn)行擴(kuò)展,豐富功能。

那本章,我們將在 《開(kāi)發(fā) K8s Chat 命令行工具》的基礎(chǔ)之上,增加 Kubernetes 故障診斷工具,其主要功能點(diǎn)是:

  • 獲取集群的 event 時(shí)間,特別關(guān)注 warning 級(jí)別事件
  • 然后進(jìn)入對(duì)應(yīng)的 pod 獲取日志
  • 大模型結(jié)合事件和日志進(jìn)行分析,得出解決問(wèn)題的建議

當(dāng)然,這里也只是起到一個(gè)拋磚引玉的作用,提供簡(jiǎn)單的思路,可以自行擴(kuò)展。

開(kāi)發(fā)過(guò)程

(1)首先使用 cobra-cli 新增一個(gè) analyze 命令

cobra-cli add analyze

(2)然后在 analyze 下面添加一個(gè)子命令 event,專門用于分析事件

cobra-cli add event -p 'analyzeCmd'

(3)設(shè)計(jì)一個(gè)方法 getPodEventsAndLogs 用于獲取 K8s 的事件和日志

// int64Ptr 輔助函數(shù),用于創(chuàng)建 int64 指針
func int64Ptr(i int64) *int64 {
 return &i
}

func getPodEventsAndLogs() (map[string][]string, error) {
 // 創(chuàng)建 Kubernetes 客戶端
 clientGo, err := utils.NewClientGo(kubeconfig)
 if err != nil {
  return nil, fmt.Errorf("創(chuàng)建 Kubernetes 客戶端失敗: %v", err)
 }

 // 存儲(chǔ)每個(gè) Pod 的事件和日志信息
 result := make(map[string][]string)
 processedPods := make(map[string]bool) // 避免重復(fù)處理同一個(gè) Pod

 // 獲取 Warning 級(jí)別的事件
 events, err := clientGo.Clientset.CoreV1().Events("").List(context.TODO(), metav1.ListOptions{
  FieldSelector: "type=Warning",
 })
 if err != nil {
  return nil, fmt.Errorf("獲取事件失敗: %v", err)
 }

 for _, event := range events.Items {
  // 只處理 Pod 相關(guān)的事件
  if event.InvolvedObject.Kind != "Pod" {
   continue
  }

  podName := event.InvolvedObject.Name
  namespace := event.InvolvedObject.Namespace
  message := event.Message
  podKey := fmt.Sprintf("%s/%s", namespace, podName)

  // 避免重復(fù)處理同一個(gè) Pod
  if processedPods[podKey] {
   // 如果已經(jīng)處理過(guò)這個(gè) Pod,只添加新的事件信息
   result[podKey] = append(result[podKey], fmt.Sprintf("Additional Event: %s", message))
   continue
  }

  // 標(biāo)記為已處理
  processedPods[podKey] = true

  // 獲取 Pod 日志(添加限制和更好的錯(cuò)誤處理)
  logOptions := &corev1.PodLogOptions{
   TailLines: int64Ptr(100), // 限制日志行數(shù)為最后100行
   LimitBytes: int64Ptr(1024 * 1024), // 限制日志大小為1MB
  }

  req := clientGo.Clientset.CoreV1().Pods(namespace).GetLogs(podName, logOptions)
  podLogs, err := req.Stream(context.TODO())
  if err != nil {
   // 即使獲取日志失敗,也保存事件信息
   result[podKey] = append(result[podKey], fmt.Sprintf("Event Message: %s", message))
   result[podKey] = append(result[podKey], fmt.Sprintf("Namespace: %s", namespace))
   result[podKey] = append(result[podKey], fmt.Sprintf("日志獲取失敗: %v", err))
   continue
  }

  // 使用匿名函數(shù)確保資源及時(shí)釋放
  func() {
   defer podLogs.Close()

   buf := new(bytes.Buffer)
   _, err = buf.ReadFrom(podLogs)
   if err != nil {
    // 日志讀取失敗,但仍保存事件信息
    result[podKey] = append(result[podKey], fmt.Sprintf("Event Message: %s", message))
    result[podKey] = append(result[podKey], fmt.Sprintf("Namespace: %s", namespace))
    result[podKey] = append(result[podKey], fmt.Sprintf("日志讀取失敗: %v", err))
    return
   }

   // 成功獲取日志,保存完整信息
   result[podKey] = append(result[podKey], fmt.Sprintf("Event Message: %s", message))
   result[podKey] = append(result[podKey], fmt.Sprintf("Namespace: %s", namespace))
   result[podKey] = append(result[podKey], fmt.Sprintf("Logs:\n%s", buf.String()))
  }()
 }

 return result, nil
}

我們使用一個(gè) map[string][]string 來(lái)保存 pod 的事件和日志信息,然后通過(guò) client-go 獲取 warning 級(jí)別的事件,最后過(guò)濾需要的 pod 事件以及 pod 相關(guān)信息,然后繼續(xù)通過(guò) client-go 獲取對(duì)應(yīng) pod 的日志,然后把這些信息放到 map 中。

(4)設(shè)計(jì)一個(gè) sendToChatGPT 的方法,接受 pod 的事件和日志信息,然后通過(guò) AI 對(duì)其進(jìn)行分析

// sendToChatGPT 函數(shù)接受 podInfo map,發(fā)送給 OpenAI 的 ChatGPT 獲取診斷建議
func sendToChatGPT(podInfo map[string][]string) (string, error) {
 // 檢查輸入數(shù)據(jù)
 if len(podInfo) == 0 {
  return "未發(fā)現(xiàn)任何 Pod Warning 事件", nil
 }

 // 創(chuàng)建 OpenAI 客戶端
 client, err := utils.NewOpenAIClient()
 if err != nil {
  return "", fmt.Errorf("創(chuàng)建 OpenAI 客戶端失敗: %v", err)
 }

 // 構(gòu)建結(jié)構(gòu)化的信息字符串
 combinedInfo := buildPodInfoString(podInfo)

 // 輸出調(diào)試信息(可選,生產(chǎn)環(huán)境可移除)
 fmt.Printf("正在分析 %d 個(gè) Pod 的問(wèn)題...\n", len(podInfo))
 fmt.Println("詳細(xì)信息:")
 fmt.Println(combinedInfo)
 fmt.Println("正在請(qǐng)求 AI 分析...")

 // 構(gòu)造優(yōu)化的 ChatGPT 請(qǐng)求消息
 messages := []openai.ChatCompletionMessage{
  {
   Role: openai.ChatMessageRoleSystem,
   Content: `您是一位資深的 Kubernetes 專家和故障診斷專家。您的任務(wù)是:
1. 分析 Pod 的 Warning 事件和日志
2. 識(shí)別根本原因
3. 提供具體的、可操作的解決方案
4. 優(yōu)先推薦命令行解決方案,必要時(shí)提供 YAML 配置
5. 按問(wèn)題嚴(yán)重程度排序建議`,
  },
  {
   Role: openai.ChatMessageRoleUser,
   Content: fmt.Sprintf(`請(qǐng)分析以下 Kubernetes Pod 問(wèn)題:

%s

請(qǐng)?zhí)峁?1. 問(wèn)題根本原因分析
2. 具體解決步驟(優(yōu)先使用 kubectl 命令)
3. 預(yù)防措施建議
4. 如果需要 YAML 配置,請(qǐng)?zhí)峁┩暾纠?
請(qǐng)確保建議具體可操作,避免泛泛而談。`, combinedInfo),
  },
 }

 // 請(qǐng)求 ChatGPT 獲取建議
 resp, err := client.Client.CreateChatCompletion(
  context.TODO(),
  openai.ChatCompletionRequest{
   Model:       openai.GPT4oMini,
   Messages:    messages,
   MaxTokens:   2000, // 限制響應(yīng)長(zhǎng)度
   Temperature: 0.1,  // 降低隨機(jī)性,提高一致性
  },
 )
 if err != nil {
  return "", fmt.Errorf("調(diào)用 OpenAI API 失敗: %v", err)
 }

 // 驗(yàn)證響應(yīng)
 if len(resp.Choices) == 0 {
  return "", fmt.Errorf("OpenAI 返回空響應(yīng)")
 }

 responseText := resp.Choices[0].Message.Content
 if responseText == "" {
  return "AI 分析完成,但未返回具體建議", nil
 }

 return responseText, nil
}

// buildPodInfoString 構(gòu)建格式化的 Pod 信息字符串
func buildPodInfoString(podInfo map[string][]string) string {
 var builder strings.Builder
 builder.WriteString("發(fā)現(xiàn)以下 Pod Warning 事件及其日志:\n\n")

 podCount := 0
 for podKey, info := range podInfo {
  podCount++
  builder.WriteString(fmt.Sprintf("=== Pod %d: %s ===\n", podCount, podKey))

  // 分類顯示信息
  for _, line := range info {
   if strings.HasPrefix(line, "Event Message:") {
    builder.WriteString(fmt.Sprintf("?? %s\n", line))
   } else if strings.HasPrefix(line, "Namespace:") {
    builder.WriteString(fmt.Sprintf("?? %s\n", line))
   } else if strings.HasPrefix(line, "Logs:") {
    builder.WriteString(fmt.Sprintf("?? %s\n", line))
   } else if strings.HasPrefix(line, "Additional Event:") {
    builder.WriteString(fmt.Sprintf("?? %s\n", line))
   } else {
    builder.WriteString(fmt.Sprintf("%s\n", line))
   }
  }
  builder.WriteString("\n")
 }

 return builder.String()
}

和 AI 的對(duì)話主要就是 prompt 的設(shè)計(jì),然后把具體的參數(shù)傳進(jìn)去即可,沒(méi)有特別的地方。

(5)使用 k8scopilot.exe analyze event 進(jìn)行分析驗(yàn)證

分析結(jié)果如下:

正在請(qǐng)求 AI 分析...
根據(jù)您提供的 Kubernetes Pod 日志和事件信息,以下是對(duì)問(wèn)題的根本原因分析、解決步驟、預(yù)防措施建議以及必要的 YAML 配置示例。

### 1. 問(wèn)題根本原因分析

- **資源不足**:
  - 多個(gè) Pod 報(bào)告了 `ephemeral-storage` 不足的問(wèn)題,導(dǎo)致 Pod 無(wú)法正常運(yùn)行或重啟。
  - 許多 Pod 由于節(jié)點(diǎn)的 `DiskPressure` 狀態(tài)而無(wú)法調(diào)度或運(yùn)行。

- **網(wǎng)絡(luò)連接問(wèn)題**:
  - 多個(gè) Pod 的就緒探針和存活探針失敗,顯示連接超時(shí)或連接被拒絕,表明服務(wù)未能在指定端口上啟動(dòng)。

- **依賴注入失敗**:
  - 一些 Pod 報(bào)告了 Spring Boot 應(yīng)用程序的依賴注入失敗,特別是與 Dubbo 相關(guān)的服務(wù)未能正確配置。

- **鏡像拉取失敗**:
  - 一些 Pod 報(bào)告了 `ImagePullBackOff`,這通常是由于鏡像不存在或訪問(wèn)權(quán)限問(wèn)題。

### 2. 具體解決步驟

#### 2.1 解決資源不足問(wèn)題

- **清理節(jié)點(diǎn)上的不必要的資源**:
  kubectl delete pod --all -n kube-system
  kubectl delete pod --all -n log

- **增加節(jié)點(diǎn)的存儲(chǔ)資源**:
  如果可能,增加節(jié)點(diǎn)的存儲(chǔ)容量,或者添加新的節(jié)點(diǎn)。

- **調(diào)整 Pod 的資源請(qǐng)求和限制**:
  確保 Pod 的 `ephemeral-storage` 請(qǐng)求和限制設(shè)置合理。可以通過(guò)以下命令編輯 Pod 的 YAML 配置:
  ```bash
  kubectl edit deployment <deployment-name> -n <namespace>

  在容器部分添加:
  resources:
    requests:
      ephemeral-storage: "100Mi"
    limits:
      ephemeral-storage: "200Mi"

#### 2.2 解決網(wǎng)絡(luò)連接問(wèn)題

- **檢查服務(wù)是否正常運(yùn)行**:
  確保 Pod 中的服務(wù)在預(yù)期的端口上啟動(dòng)。可以通過(guò)以下命令查看 Pod 的狀態(tài):
  ```bash
  kubectl get pods -n <namespace>

- **查看 Pod 日志**:
  kubectl logs <pod-name> -n <namespace>

- **增加探針的超時(shí)時(shí)間**:
  如果服務(wù)啟動(dòng)較慢,可以增加就緒探針和存活探針的超時(shí)時(shí)間:
  readinessProbe:
    httpGet:
      path: /health
      port: 8080
    initialDelaySeconds: 30
    periodSeconds: 10
    timeoutSeconds: 5

#### 2.3 解決依賴注入失敗

- **檢查 Dubbo 配置**:
  確保 Dubbo 的注冊(cè)中心配置正確。可以在應(yīng)用的配置文件中添加:
  dubbo:
    registry:
      address: "zookeeper://localhost:2181"

- **重啟相關(guān) Pod**:
  ```bash
  kubectl rollout restart deployment <deployment-name> -n <namespace>

#### 2.4 解決鏡像拉取失敗

- **檢查鏡像是否存在**:
  確保指定的鏡像在容器注冊(cè)中心中存在,并且訪問(wèn)權(quán)限正確。

- **更新鏡像標(biāo)簽**:
  如果鏡像標(biāo)簽不正確,可以更新為正確的標(biāo)簽:
  kubectl set image deployment/<deployment-name> <container-name>=<new-image>:<tag> -n <namespace>

### 3. 預(yù)防措施建議

- **監(jiān)控資源使用情況**:
  使用 Kubernetes 的監(jiān)控工具(如 Prometheus 和 Grafana)監(jiān)控節(jié)點(diǎn)和 Pod 的資源使用情況,及時(shí)發(fā)現(xiàn)并解決資源不足的問(wèn)題。

- **設(shè)置合理的資源請(qǐng)求和限制**:
  在 Pod 的 YAML 配置中設(shè)置合理的資源請(qǐng)求和限制,以避免資源爭(zhēng)用。

- **定期清理不必要的資源**:
  定期檢查和清理不再使用的 Pod 和鏡像,以釋放存儲(chǔ)空間。

從上面的分析結(jié)果可以看到基本能夠給出比較準(zhǔn)確的建議。

當(dāng)然,這里只是診斷問(wèn)題,還可以對(duì)其功能進(jìn)行擴(kuò)展,比如:

  1. 故障自愈:
  • 結(jié)合 Function Calling 實(shí)現(xiàn)自動(dòng)修復(fù)簡(jiǎn)單問(wèn)題
  1. 增強(qiáng)分析:
  • 增加更多診斷數(shù)據(jù)源(metrics、節(jié)點(diǎn)狀態(tài)等)
  • 實(shí)現(xiàn)歷史問(wèn)題匹配和知識(shí)庫(kù)
  1. 可視化:
  • 生成 HTML 格式的診斷報(bào)告
  • 支持問(wèn)題嚴(yán)重程度分級(jí)展示

最后

本文在《開(kāi)發(fā) K8s Chat 命令行工具》的基礎(chǔ)上,進(jìn)一步實(shí)現(xiàn)了 Kubernetes 故障診斷功能,核心思路是通過(guò)工具獲取集群中 Warning 級(jí)別的事件及對(duì)應(yīng) Pod 的日志,再借助大模型分析并輸出解決方案,為運(yùn)維工作提供了便捷的故障排查途徑。

具體而言,開(kāi)發(fā)過(guò)程通過(guò) cobra-cli 新增 analyze 命令及子命令 event,構(gòu)建 getPodEventsAndLogs 方法獲取相關(guān)事件與日志,設(shè)計(jì) sendToChatGPT 方法將信息傳入大模型進(jìn)行分析。

責(zé)任編輯:武曉燕 來(lái)源: 運(yùn)維開(kāi)發(fā)故事
相關(guān)推薦

2025-08-06 01:45:00

2010-09-26 12:19:28

DHCP故障診斷

2013-05-22 17:18:13

2023-09-15 07:34:15

AIOps云原生項(xiàng)目

2010-08-03 13:41:22

路由器命令

2021-11-25 10:36:04

DNS命令Linux

2009-11-11 17:07:13

路由器故障

2021-12-21 08:31:07

k8s診斷工具kubectl-deb

2009-05-19 16:40:41

TTL網(wǎng)絡(luò)故障科來(lái)軟件

2009-11-17 18:44:44

2009-11-24 18:34:23

網(wǎng)絡(luò)故障診斷路由器

2020-05-03 12:52:39

VMware Hori虛擬桌面虛擬機(jī)

2011-07-28 11:22:50

2009-11-12 14:07:16

路由器故障

2012-10-09 16:00:35

交換機(jī)故障

2021-04-23 08:35:16

k8s故障檢測(cè)

2011-05-07 14:29:26

復(fù)合機(jī)

2022-04-22 13:32:01

K8s容器引擎架構(gòu)

2009-09-11 03:21:00

網(wǎng)絡(luò)故障診斷

2023-02-27 08:07:47

語(yǔ)言模型數(shù)據(jù)庫(kù)故障
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲天堂av女优| 青青草免费在线视频| 久cao在线| 一本久道综合久久精品| 亚洲三级理论片| 全亚洲最色的网站在线观看| 免费不卡av网站| 中文字幕 视频一区| 久久精品色综合| 亚洲久本草在线中文字幕| 国产成+人+综合+亚洲欧美丁香花| 精品人妻一区二区三区免费| 97在线视频免费观看完整版| 国产成人精品1024| 欧美精品一区二区三区国产精品| 最近免费中文字幕中文高清百度| 黄色片一区二区三区| 欧美成人69av| 91麻豆精品国产91久久久久久久久 | 国产成人av一区二区三区| 国产午夜精品福利视频| 国产91xxx| 久草福利资源在线| 97精品国产综合久久久动漫日韩| 91美女在线观看| 性欧美xxxx交| 日本性生活一级片| 丰乳肥臀在线| 成人av片在线观看| 91国在线精品国内播放| 中国极品少妇videossexhd| 成人性生交大片免费看在线播放| 国产精品久久三| 91传媒视频在线观看| 妺妺窝人体色www聚色窝仙踪| 国产成人免费av一区二区午夜| 中文字幕一区二区在线播放| 91久久久精品| 97色在线播放视频| 美女黄色一级视频| 99er精品视频| 亚洲精品综合在线| 欧美日韩在线高清| 尤物视频免费观看| 欧美大片aaaa| 日韩欧美三级在线| 狠狠97人人婷婷五月| av在线app| 99久久婷婷国产综合精品电影| 91tv亚洲精品香蕉国产一区7ujn| 色婷婷在线视频观看| 91精品视频一区二区| 91久久精品网| 一级特黄妇女高潮| 亚洲av成人无码网天堂| 日韩成人免费看| 欧美裸体男粗大视频在线观看 | 老司机精品视频导航| 精品国产区一区二区三区在线观看| 一区二区三区四区毛片| 国产极品人妖在线观看| 亚洲激情自拍偷拍| 欧美日韩电影一区二区三区| 亚洲av成人精品一区二区三区在线播放| 成人小视频在线观看| 国产97在线|亚洲| 午夜精品福利在线视频| 一区二区蜜桃| 亚洲视频在线观看| 亚洲熟妇一区二区三区| 国产精品白丝久久av网站| 7777精品伊人久久久大香线蕉经典版下载 | 国产亚洲成人av| 精品国产一区二区三区小蝌蚪| 91麻豆精品国产91久久久| 夜夜夜夜夜夜操| 亚洲成av人片在线观看www| 欧美性生交大片免费| 在线观看18视频网站| av网址在线播放| 国产免费观看久久| 好吊色欧美一区二区三区四区| 精品国产www| 日韩午夜在线| 国产精品99久久久久久www| 中文字幕一区二区免费| 国产精品一区二区91| 国产精品丝袜白浆摸在线 | 成人一区二区电影| 中文字幕国产在线观看| 亚洲性视频h| 久久五月情影视| 国产综合精品在线| 亚洲第一福利社区| 亚洲国产精品人人爽夜夜爽| 婷婷中文字幕在线观看| 福利视频一区| 精品国产凹凸成av人网站| www.com久久久| 国偷自产av一区二区三区| 欧美一区二区美女| 网站在线你懂的| 精品久久97| 最好看的2019的中文字幕视频| 免费在线观看你懂的| 久久中文字幕二区| 91av在线网站| 国产深喉视频一区二区| 另类小说综合欧美亚洲| 国产精品一区二区a| 午夜久久久久久久久久| 国产伦理精品不卡| 欧美久久在线| 久久久123| 亚洲a一区二区| 男女超爽视频免费播放| 欧美xxxx网站| 337p亚洲精品色噜噜噜| av网站免费在线播放| 欧美精品福利| 久久久日本电影| 国产女同在线观看| 欧美一级久久| 国产国语刺激对白av不卡| 精品久久无码中文字幕| 国产精品嫩草99a| 999香蕉视频| 欧美激情99| 亚洲欧美制服另类日韩| 国产一级片播放| 亚洲制服少妇| 国产精品一国产精品最新章节| 黄色网页在线免费看| 在线观看日韩电影| www.51色.com| 久久精品国产99久久| 国产精品极品美女在线观看免费 | 欧美一区二区三区四区在线观看| 欧美偷拍一区二区三区| 一区二区动漫| 精品乱色一区二区中文字幕| 久久亚洲资源| 精品嫩草影院久久| 欧美特黄一区二区三区| 欧美国产偷国产精品三区| 国产精品v片在线观看不卡| 偷拍自拍在线| 国产精品久久久久久亚洲伦| 黄色片在线免费| 国产午夜久久av| 久久手机精品视频| 国产深喉视频一区二区| 亚洲女与黑人做爰| 91丨porny丨九色| 少妇高潮一区二区三区| 中文字幕国产亚洲| 欧美交换国产一区内射| 激情六月婷婷久久| 明星裸体视频一区二区| 日韩精品成人av| 亚洲高清视频中文字幕| 五月婷婷之综合激情| eeuss国产一区二区三区四区| 亚洲欧美日韩天堂| 国内偷拍精品视频| 日韩av一级片| 精品国产乱码久久久久久郑州公司 | 韩国精品福利一区二区三区| 8090成年在线看片午夜| 男男电影完整版在线观看| 亚洲三级在线免费观看| 色男人天堂av| 日韩香蕉视频| 视频一区视频二区视频| free性护士videos欧美| 99精品视频免费观看视频| 91高清视频免费| 国产在线91| 亚洲主播在线观看| 国产亚洲视频一区| 国产不卡av一区二区| 欧美大片免费观看| 国产精品毛片一区二区在线看舒淇 | 日韩免费高清在线观看| av福利精品| 精品久久久久久久久久国产| 美女被艹视频网站| 影音先锋久久精品| 欧美日韩高清免费| 国产美女亚洲精品7777| 91禁国产网站| 美女写真理伦片在线看| 欧洲一区二区三区在线| 五月天激情丁香| 91麻豆国产福利在线观看| 国产日韩欧美久久| 亚洲人成网站77777在线观看| 国产精品99免视看9| v天堂福利视频在线观看| 日韩成人在线视频观看| 久久久国产精品黄毛片| 2020国产精品久久精品美国| av网站手机在线观看| 欧美视频三区| 九九精品在线观看| 欧美日本网站| 日韩亚洲欧美在线观看| 国产黄在线免费观看| 91在线视频网址| 免费看一级大黄情大片| 欧美h版在线| 蜜桃传媒视频麻豆一区| 日韩精品视频一区二区三区| 日韩美女主播视频| 19禁羞羞电影院在线观看| 色婷婷综合成人| 色就是色亚洲色图| 精品国产一区二区精华| 97av免费视频| 亚洲黄一区二区三区| 亚洲av成人无码久久精品| 日本中文字幕一区| 欧美亚洲一二三区| 黄色日韩精品| 蜜桃传媒视频第一区入口在线看| 激情久久免费视频| 国产欧美在线播放| gogo在线高清视频| 一区二区三区无码高清视频| 欧美一级做a爰片免费视频| 亚洲第一久久影院| 印度午夜性春猛xxx交| 国产精品久线在线观看| 在线免费观看视频| 久久久久久久久久久久久夜| 2025韩国理伦片在线观看| 国产一区二区你懂的| 日韩欧美在线一区二区| 超薄肉色丝袜脚交一区二区| 日韩亚洲成人av在线| 国产尤物视频在线| 亚洲男人天堂视频| 视频国产在线观看| 日韩禁在线播放| 亚洲色图狠狠干| 日韩激情视频在线播放| 日本天堂影院在线视频| 日韩av在线影院| 午夜影院在线视频| 亚洲品质视频自拍网| 牛牛影视精品影视| 一区二区亚洲欧洲国产日韩| 天堂网www中文在线| 亚洲精品在线网站| 99久久一区二区| 欧美日韩美女在线| 女同久久另类69精品国产| 国产不卡视频在线观看| 第一页在线视频| 亚洲乱码视频| 在线国产伦理一区| 婷婷五月色综合香五月| 久久精品女人的天堂av| **国产精品| 91av免费看| caoporn成人| 欧美不卡福利| 色综合天天综合网中文字幕| 久久精品欧美| 精品国产日韩欧美| 一区二区三区久久网| 国产区精品视频在线观看豆花| 国产精品初高中精品久久| 美女av一区| 丝袜美腿玉足3d专区一区| 四虎国产精品免费观看| 黄色特一级视频| 欧美www视频在线观看| 免费观看国产视频在线| 国内久久视频| 成年人在线看片| 精品一区二区影视| 91香蕉视频导航| 国产精品综合在线视频| 久久免费精品国产| 国产欧美日韩不卡免费| 老女人性淫交视频| 欧美午夜美女看片| 国产精品高潮呻吟av| 亚洲国产精品999| 精品久久无码中文字幕| 精品视频久久久| 天堂中文在线看| 精品国产一区二区在线观看| 欧美日韩影视| 久久久国产视频91| 欧美极品视频| 隔壁老王国产在线精品| 高清在线一区| 精品国产综合| 亚洲经典一区| 艳母动漫在线观看| 亚洲欧美久久久| 欧美一级免费在线| 久久久久久久网| 国产一级一片免费播放放a| 欧美三级视频在线| 国产情侣呻吟对白高潮| 精品久久久久久久久久久久包黑料| 麻豆国产在线播放| 欧美裸体xxxx极品少妇| 78精品国产综合久久香蕉| 国产伦精品一区二区三| 亚洲精品a级片| 宅男噜噜噜66国产免费观看| 国产69精品久久777的优势| 在线观看天堂av| 疯狂蹂躏欧美一区二区精品| 国产精品一级二级| 亚洲图片欧美日产| 福利在线播放| 色黄久久久久久| 鲁鲁在线中文| 国产aⅴ夜夜欢一区二区三区| 一区二区在线视频观看| 国产欧美综合精品一区二区| 麻豆国产欧美一区二区三区r| 天天干天天色天天爽| 日本亚洲最大的色成网站www| 好男人香蕉影院| 亚洲一区二区三区国产| 婷婷激情五月网| 欧美三区免费完整视频在线观看| 日韩一级中文字幕| 亚洲日本成人女熟在线观看| xxxx成人| 国产美女精品在线观看| 亚洲成人精品| 久久久久xxxx| 中文字幕在线视频一区| 一区二区三区麻豆| 中文字幕在线看视频国产欧美| 亚洲成人不卡| 51精品国产人成在线观看| 91亚洲一区| 日本77777| 亚洲欧美日韩一区二区| 国产精品久久久久久久久毛片 | 亚洲国产精品久久久| brazzers在线观看| 国产精品一区视频网站| 亚洲图片在线| 国产人成视频在线观看| 午夜精品视频一区| 视频在线观看你懂的| 欧美在线一区二区三区四| 亚洲人成网www| 香蕉视频禁止18| 亚洲欧洲中文日韩久久av乱码| av老司机久久| 午夜精品免费视频| 天堂成人娱乐在线视频免费播放网站| 干日本少妇首页| 国产综合色产在线精品| 极品粉嫩小仙女高潮喷水久久| 中文字幕一区二区三区av| 国产精品伦理一区| 欧美高跟鞋交xxxxxhd| 久久综合五月婷婷| 国模吧无码一区二区三区| 国产欧美日韩视频一区二区| 在线播放亚洲精品| 日韩av在线免费观看| 小视频免费在线观看| 99精品国产高清在线观看| 欧美限制电影| 日日碰狠狠添天天爽超碰97| 久久精品日韩一区二区三区| 日韩黄色在线视频| 日韩一区二区三区免费看| 国产精品69xx| 视频一区国产精品| 国产999精品久久久久久| www.youjizz.com亚洲| 亚洲性生活视频在线观看| 91成人短视频在线观看| 91免费黄视频| 国产麻豆精品一区二区| 日韩av一区二区在线播放| 伊人久久免费视频| 在这里有精品| 无人在线观看的免费高清视频| 99国产麻豆精品| 中文字幕第一页在线播放| 欧美极品少妇xxxxⅹ喷水| 国产精品99久久免费| 久久国产亚洲精品无码| 国产精品传媒在线| 无码精品黑人一区二区三区| 国产主播欧美精品|