国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

手把手教你部署一個最小化的 Kubernetes 集群!

共 52037字,需瀏覽 105分鐘

 ·

2021-08-29 00:39

在下方公眾號后臺回復:面試手冊,可獲取杰哥匯總的 3 份面試 PDF 手冊。

雖然網(wǎng)上有大量從零搭建 K8S 的文章,但大都針對老版本,若直接照搬去安裝最新的 1.20 版本會遇到一堆問題。故此將我的安裝步驟記錄下來,希望能為讀者提供 copy and paste 式的集群搭建幫助。

1. 部署準備工作

部署最小化 K8S 集群:master + node1 + node2

Ubuntu 是一款基于 Debian Linux 的以桌面應用為主的操作系統(tǒng),內(nèi)容涵蓋文字處理、電子郵件、軟件開發(fā)工具和 Web 服務等,可供用戶免費下載、使用和分享。

? vgs
Current machine states:
master                    running (virtualbox)
node1                     running (virtualbox)
node2                     running (virtualbox)

1.1 基礎環(huán)境信息

設置系統(tǒng)主機名以及 Host 文件各節(jié)點之間的相互解析

  • 使用這個的 Vagrantfile 啟動的三節(jié)點服務已經(jīng)配置好了

  • 以下使用 master 節(jié)點進行演示查看,其他節(jié)點操作均一致

# hostnamectl
vagrant@k8s-master:~$ hostnamectl
   Static hostname: k8s-master

# hosts
vagrant@k8s-master:~$ cat /etc/hosts
127.0.0.1        localhost
127.0.1.1        vagrant.vm    vagrant
192.168.30.30    k8s-master
192.168.30.31    k8s-node1
192.168.30.32    k8s-node2

# ping
vagrant@k8s-master:~$ ping k8s-node1
PING k8s-node1 (192.168.30.3156(84) bytes of data.
64 bytes from k8s-node1 (192.168.30.31): icmp_seq=1 ttl=64 time=0.689 ms

1.2 阿里源配置

配置 Ubuntu 的阿里源來加速安裝速度

  • 阿里源鏡像地址

# 登錄服務器
? vgssh master/node1/nod2
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-50-generic x86_64)

# 設置阿里云Ubuntu鏡像
$ sudo cp /etc/apt/sources.list{,.bak}
$ sudo vim /etc/apt/sources.list

# 配置kubeadm的阿里云鏡像源
$ sudo vim /etc/apt/sources.list
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
$ sudo gpg --keyserver keyserver.ubuntu.com --recv-keys BA07F4FB
$ sudo gpg --export --armor BA07F4FB | sudo apt-key add -

# 配置docker安裝
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo vim /etc/apt/sources.list
deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable

# 更新倉庫
$ sudo apt update
$ sudo apt dist-upgrade

1.3 基礎工具安裝

部署階段的基礎工具安裝

  • 基礎組件 docker

  • 部署工具 kubeadm

  • 路由規(guī)則 ipvsadm

  • 時間同步 ntp

# 基礎工具安裝
$ sudo apt install -y \
    docker-ce docker-ce-cli containerd.io \
    kubeadm ipvsadm \
    ntp ntpdate \
    nginx supervisor

#
 將當前普通用戶加入docker組(需重新登錄)
$ sudo usermod -a -G docker $USER

#
 服務啟用
$ sudo systemctl enable docker.service
$ sudo systemctl start docker.service
$ sudo systemctl enable kubelet.service
$ sudo systemctl start kubelet.service

1.4 操作系統(tǒng)配置

操作系統(tǒng)相關配置

  • 關閉緩存

  • 配置內(nèi)核參數(shù)

  • 調(diào)整系統(tǒng)時區(qū)

  • 升級內(nèi)核版本(默認為4.15.0的版本)

# 關閉緩存
$ sudo swapoff -a

# 為K8S來調(diào)整內(nèi)核參數(shù)
$ sudo touch /etc/sysctl.d/kubernetes.conf
$ sudo cat > /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1 # 開啟網(wǎng)橋模式(必須)
net.bridge.bridge-nf-call-ip6tables = 1 # 開啟網(wǎng)橋模式(必須)
net.ipv6.conf.all.disable_ipv6 = 1 # 關閉IPv6協(xié)議(必須)
net.ipv4.ip_forward = 1 # 轉(zhuǎn)發(fā)模式(默認開啟)
vm.panic_on_oom=0 # 開啟OOM(默認開啟)
vm.swappiness = 0 # 禁止使用swap空間
vm.overcommit_memory=1 # 不檢查物理內(nèi)存是否夠用
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max = 52706963 # 設置文件句柄數(shù)量
fs.nr_open = 52706963 # 設置文件的最大打開數(shù)量
net.netfilter.nf_conntrack_max = 2310720
EOF

# 查看系統(tǒng)內(nèi)核參數(shù)的方式
$ sudo sysctl -a | grep xxx
# 使內(nèi)核參數(shù)配置文件生效
$ sudo sysctl -p /etc/sysctl.d/kubernetes.conf
# 設置系統(tǒng)時區(qū)為中國/上海
$ sudo timedatectl set-timezone Asia/Shanghai

# 將當前的UTC時間寫入硬件時鐘
$ sudo timedatectl set-local-rtc 0

1.5 開啟 ipvs 服務

開啟 ipvs 服務

  • kube-proxy 開啟 ipvs 的前置條件

# 載入指定的個別模塊
$ modprobe br_netfilter

# 修改配置
$ cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv
EOF

# 加載配置
$ chmod 755 /etc/sysconfig/modules/ipvs.modules \
    && bash /etc/sysconfig/modules/ipvs.modules \
    && lsmod | grep -e ip_vs -e nf_conntrack_ipv

2. 部署 Master 節(jié)點

節(jié)點最低配置: 2C+2G 內(nèi)存;從節(jié)點資源盡量充足

kubeadm 工具的 init 命令,即可初始化以單節(jié)點部署的 master。為了避免翻墻,這里可以使用阿里云的谷歌源來代替。在執(zhí)行 kubeadm 部署命令的時候,指定對應地址即可。當然,可以將其加入本地的鏡像庫之中,更易維護。

注意事項

  • 阿里云谷歌源地址

  • 使用 kubeadm 定制控制平面配置

# 登錄服務器
? vgssh master
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-50-generic x86_64)

# 部署節(jié)點(命令行)
# 注意pod和service的地址需要不同(否則會報錯)
$ sudo kubeadm init \
    --kubernetes-version=1.20.2 \
    --image-repository registry.aliyuncs.com/google_containers \
    --apiserver-advertise-address=192.168.30.30 \
    --pod-network-cidr=10.244.0.0/16 \
    --service-cidr=10.245.0.0/16

# 部署鏡像配置(配置文件)
$ sudo kubeadm init --config ./kubeadm-config.yaml
Your Kubernetes control-plane has initialized successfully!

# 查看IP段是否生效(iptable)
$ ip route show
10.244.0.0/24 dev cni0 proto kernel scope link src 10.244.0.1
10.244.1.0/24 via 10.244.1.0 dev flannel.1 onlink
10.244.2.0/24 via 10.244.2.0 dev flannel.1 onlink

# # 查看IP段是否生效(ipvs)
$ ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

配置文件定義

  • 接口使用了 v1beta2 版本

  • 配置主節(jié)點 IP 地址為 192.168.30.30

  • 為 flannel 分配的是 10.244.0.0/16 網(wǎng)段

  • 選擇的 kubernetes 是當前最新的 1.20.2 版本

  • 加入了 controllerManager 的水平擴容功能

# kubeadm-config.yaml
# sudo kubeadm config print init-defaults > kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.20.2
apiServer:
  extraArgs:
    advertise-address: 192.168.30.30
networking:
  podSubnet: 10.244.0.0/16
controllerManager:
  ExtraArgs:
    horizontal-pod-autoscaler-use-rest-clients: "true"
    horizontal-pod-autoscaler-sync-period: "10s"
    node-monitor-grace-period: "10s"

執(zhí)行成功之后會輸出如下信息,需要安裝如下步驟操作下

第一步 在 kubectl 默認控制和操作集群節(jié)點的時候,需要使用到 CA 的密鑰,傳輸過程是通過 TLS 協(xié)議保障通訊的安全性。通過下面 3 行命令拷貝密鑰信息到當前用戶家目錄下,這樣 kubectl 執(zhí)行時會首先訪問 .kube 目錄,使用這些授權(quán)信息訪問集群。

第二步 之后添加 worker 節(jié)點時,要通過 token 才能保障安全性。因此,先把顯示的這行命令保存下來,以備后續(xù)使用會用到。

# master setting step one
To start cluster, you need to run the following as a regular user:
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:
  export KUBECONFIG=/etc/kubernetes/admin.conf

# master setting step two
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.30.30:6443 \
  --token lebbdi.p9lzoy2a16tmr6hq \
  --discovery-token-ca-cert-hash \
  sha256:6c79fd83825d7b2b0c3bed9e10c428acf8ffcd615a1d7b258e9b500848c20cae

將子節(jié)點加入主節(jié)點中

$ kubectl get nodes
NAME         STATUS     ROLES                  AGE   VERSION
k8s-master   NotReady   control-plane,master   62m   v1.20.2
k8s-node1    NotReady   <none>                 82m   v1.20.2
k8s-node2    NotReady   <none>                 82m   v1.20.2

# 查看token令牌
$ sudo kubeadm token list

# 生成token令牌
$ sudo kubeadm token create

# 忘記sha編碼
$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt \
    | openssl rsa -pubin -outform der 2>/dev/null \
    | openssl dgst -sha256 -hex | sed 's/^.* //'
# 生成一個新的 token 令牌(比上面的方便)
$ kubeadm token generate

# 直接生成 join 命令(比上面的方便)
$ kubeadm token create <token_generate> --print-join-command --ttl=0

執(zhí)行完成之后可以通過如下命令,查看主節(jié)點信息

默認生成四個命名空間

  • default、kube-system、kube-public、kube-node-lease

部署的核心服務有以下幾個 (kube-system)

  • coredns、etcd

  • kube-apiserver、kube-scheduler

  • kube-controller-manager、kube-controller-manager

此時 master 并沒有 ready 狀態(tài)(需要安裝網(wǎng)絡插件),下一章節(jié)中,我們將安裝 flannel 這個網(wǎng)絡插件

# 命名空間
$ kubectl get namespace
NAME              STATUS   AGE
default           Active   19m
kube-node-lease   Active   19m
kube-public       Active   19m
kube-system       Active   19m

# 核心服務
$ kubectl get pod -n kube-system
NAME                                 READY   STATUS    RESTARTS   AGE
coredns-7f89b7bc75-bh42f             1/1     Running   0          19m
coredns-7f89b7bc75-dvzpl             1/1     Running   0          19m
etcd-k8s-master                      1/1     Running   0          19m
kube-apiserver-k8s-master            1/1     Running   0          19m
kube-controller-manager-k8s-master   1/1     Running   0          19m
kube-proxy-5rlpv                     1/1     Running   0          19m
kube-scheduler-k8s-master            1/1     Running   0          19m

3. 部署 flannel 網(wǎng)絡

網(wǎng)絡服務用于管理 K8S 集群中的服務網(wǎng)絡

flannel 網(wǎng)絡需要指定 IP 地址段,即上一步中通過編排文件設置的 10.244.0.0/16。其實可以通過 flannel 官方和 HELM 工具直接部署服務,但是原地址是需要搭梯子的。所以,可以將其內(nèi)容保存在如下配置文件中,修改對應鏡像地址。

部署 flannel 服務的官方下載地址

# 部署flannel服務
# 1.修改鏡像地址(如果下載不了的話)
# 2.修改Network為--pod-network-cidr的參數(shù)IP段
$ kubectl apply -f ./kube-flannel.yml

# 如果部署出現(xiàn)問題可通過如下命令查看日志
$ kubectl logs kube-flannel-ds-6xxs5 --namespace=kube-system
$ kubectl describe pod kube-flannel-ds-6xxs5 --namespace=kube-system

如果使用當中存在問題的,可以參考官方的問題手冊

因為我們這里使用的是 Vagrant 虛擬出來的機器進行 K8S 的部署,但是在運行對應 yaml 配置的時候,會報錯。通過查看日志發(fā)現(xiàn)是因為默認綁定的是虛擬機上面的 eth0 這塊網(wǎng)卡,而這塊網(wǎng)卡是 Vagrant 使用的,我們應該綁定的是 eth1 才對。

Vagrant 通常為所有 VM 分配兩個接口,第一個為所有主機分配的 IP 地址為 10.0.2.15,用于獲得 NAT 的外部流量。這樣會導致 flannel 部署存在問題。通過官方問題說明,我們可以使用 --iface=eth1 這個參數(shù)選擇第二個網(wǎng)卡。

對應的參數(shù)使用方式,可以參考 flannel use –iface=eth1 中的回答自行添加,而這里我直接修改了啟動的配置文件,在啟動服務的時候通過 args 修改了,如下所示。

$ kubectl get pods -n kube-system
NAME                                 READY   STATUS    RESTARTS   AGE
coredns-7f89b7bc75-bh42f             1/1     Running   0          61m
coredns-7f89b7bc75-dvzpl             1/1     Running   0          61m
etcd-k8s-master                      1/1     Running   0          62m
kube-apiserver-k8s-master            1/1     Running   0          62m
kube-controller-manager-k8s-master   1/1     Running   0          62m
kube-flannel-ds-zl148                1/1     Running   0          44s
kube-flannel-ds-ll523                1/1     Running   0          44s
kube-flannel-ds-wpmhw                1/1     Running   0          44s
kube-proxy-5rlpv                     1/1     Running   0          61m
kube-scheduler-k8s-master            1/1     Running   0          62m

配置文件如下所示

---
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: psp.flannel.unprivileged
  annotations:
    seccomp.security.alpha.kubernetes.io/allowedProfileNames: docker/default
    seccomp.security.alpha.kubernetes.io/defaultProfileName: docker/default
    apparmor.security.beta.kubernetes.io/allowedProfileNames: runtime/default
    apparmor.security.beta.kubernetes.io/defaultProfileName: runtime/default
spec:
  privileged: false
  volumes:
    - configMap
    - secret
    - emptyDir
    - hostPath
  allowedHostPaths:
    - pathPrefix: "/etc/cni/net.d"
    - pathPrefix: "/etc/kube-flannel"
    - pathPrefix: "/run/flannel"
  readOnlyRootFilesystem: false
  # Users and groups
  runAsUser:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny
  fsGroup:
    rule: RunAsAny
  # Privilege Escalation
  allowPrivilegeEscalation: false
  defaultAllowPrivilegeEscalation: false
  # Capabilities
  allowedCapabilities: ["NET_ADMIN""NET_RAW"]
  defaultAddCapabilities: []
  requiredDropCapabilities: []
  # Host namespaces
  hostPID: false
  hostIPC: false
  hostNetwork: true
  hostPorts:
    - min0
      max65535
  # SELinux
  seLinux:
    # SELinux is unused in CaaSP
    rule: "RunAsAny"
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: flannel
rules:
  - apiGroups: ["extensions"]
    resources: ["podsecuritypolicies"]
    verbs: ["use"]
    resourceNames: ["psp.flannel.unprivileged"]
  - apiGroups:
      - ""
    resources:
      - pods
    verbs:
      - get
  - apiGroups:
      - ""
    resources:
      - nodes
    verbs:
      - list
      - watch
  - apiGroups:
      - ""
    resources:
      - nodes/status
    verbs:
      - patch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: flannel
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: flannel
subjects:
  - kind: ServiceAccount
    name: flannel
    namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: flannel
  namespace: kube-system
---
kind: ConfigMap
apiVersion: v1
metadata:
  name: kube-flannel-cfg
  namespace: kube-system
  labels:
    tier: node
    app: flannel
data:
  cni-conf.json: |
    {
      "name""cbr0",
      "cniVersion""0.3.1",
      "plugins": [
        {
          "type""flannel",
          "delegate": {
            "hairpinMode"true,
            "isDefaultGateway"true
          }
        },
        {
          "type""portmap",
          "capabilities": {
            "portMappings"true
          }
        }
      ]
    }
  net-conf.json: |
    {
      "Network""10.244.0.0/16",
      "Backend": {
        "Type""vxlan"
      }
    }
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: kube-flannel-ds
  namespace: kube-system
  labels:
    tier: node
    app: flannel
spec:
  selector:
    matchLabels:
      app: flannel
  template:
    metadata:
      labels:
        tier: node
        app: flannel
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: kubernetes.io/os
                    operator: In
                    values:
                      - linux
      hostNetwork: true
      priorityClassName: system-node-critical
      tolerations:
        - operator: Exists
          effect: NoSchedule
      serviceAccountName: flannel
      initContainers:
        - name: install-cni
          image: quay.io/coreos/flannel:v0.13.1-rc1
          command:
            - cp
          args:
            - -f
            - /etc/kube-flannel/cni-conf.json
            - /etc/cni/net.d/10-flannel.conflist
          volumeMounts:
            - name: cni
              mountPath: /etc/cni/net.d
            - name: flannel-cfg
              mountPath: /etc/kube-flannel/
      containers:
        - name: kube-flannel
          image: quay.io/coreos/flannel:v0.13.1-rc1
          command:
            - /opt/bin/flanneld
          args:
            - --ip-masq
            - --kube-subnet-mgr
            - --iface=eth1
          resources:
            requests:
              cpu: "100m"
              memory: "50Mi"
            limits:
              cpu: "100m"
              memory: "50Mi"
          securityContext:
            privileged: false
            capabilities:
              add: ["NET_ADMIN""NET_RAW"]
          env:
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
          volumeMounts:
            - name: run
              mountPath: /run/flannel
            - name: flannel-cfg
              mountPath: /etc/kube-flannel/
      volumes:
        - name: run
          hostPath:
            path: /run/flannel
        - name: cni
          hostPath:
            path: /etc/cni/net.d
        - name: flannel-cfg
          configMap:
            name: kube-flannel-cfg

至此集群部署成功!如果有參數(shù)錯誤需要修改,你也可以在 reset 后重新 init 集群。

$ kubectl get nodes
NAME         STATUS   ROLES                  AGE   VERSION
k8s-master   Ready    control-plane,master   62m   v1.20.2
k8s-node1    Ready    control-plane,master   82m   v1.20.2
k8s-node2    Ready    control-plane,master   82m   v1.20.2

# 重啟集群
$ sudo kubeadm reset
$ sudo kubeadm init

4. 部署 dashboard 服務

以 WEB 頁面的可視化 dashboard 來監(jiān)控集群的狀態(tài)

這個還是會遇到需要搭梯子下載啟動配置文件的問題,下面是對應的下載地址,可以下載之后上傳到服務器上面在進行部署。

部署 dashboard 服務的官方下載地址

# 部署flannel服務
$ kubectl apply -f ./kube-dashboard.yaml

# 如果部署出現(xiàn)問題可通過如下命令查看日志
$ kubectl logs \
    kubernetes-dashboard-c9fb67ffc-nknpj \
    --namespace=kubernetes-dashboard
$ kubectl describe pod \
    kubernetes-dashboard-c9fb67ffc-nknpj \
    --namespace=kubernetes-dashboard

$ kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
dashboard-metrics-scraper   ClusterIP   10.245.214.11    <none>        8000/TCP   26s
kubernetes-dashboard        ClusterIP   10.245.161.146   <none>        443/TCP    26s

需要注意的是 dashboard 默認不允許外網(wǎng)訪問,即使通過 kubectl proxy 允許外網(wǎng)訪問。但 dashboard 又只允許 HTTPS 訪問,這樣 kubeadm init 時自簽名的 CA 證書是不被瀏覽器承認的。

我采用的方案是 Nginx 作為反向代理,使用 Lets Encrypt 提供的有效證書對外提供服務,再經(jīng)由 proxy_pass 指令反向代理到 kubectl proxy 上,如下所示。此時,本地可經(jīng)由 8888 訪問到 dashboard 服務,再通過 Nginx 訪問它。

# 代理(可以使用supervisor)
$ kubectl proxy --accept-hosts='^*$'
$ kubectl proxy --port=8888 --accept-hosts='^*$'
# 測試代理是否正常(默認監(jiān)聽在8001端口上)
$ curl -X GET -L http://localhost:8001

# 本地(可以使用nginx)
proxy_pass http://localhost:8001;
proxy_pass http://localhost:8888;

# 外網(wǎng)訪問如下URL地址
https://mydomain/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login

配置文件整理

  • nginx

  • supervisor

# k8s.conf

client_max_body_size     80M;
client_body_buffer_size  128k;
proxy_connect_timeout    600;
proxy_read_timeout       600;
proxy_send_timeout       600;

server {
    listen       8080 ssl;
    server_name  _;

    ssl_certificate     /etc/kubernetes/pki/ca.crt;
    ssl_certificate_key /etc/kubernetes/pki/ca.key;

    access_log /var/log/nginx/k8s.access.log;
    error_log  /var/log/nginx/k8s.error.log  error;

    location / {
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_set_header   Host              $http_host;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_pass http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/;
    }
}

# k8s.conf

[program:k8s-master]
command=kubectl proxy --accept-hosts='^*$'
user=vagrant
environment=KUBECONFIG="/home/vagrant/.kube/config"
stopasgroup=true
stopasgroup=true
autostart=true
autorestart=unexpected
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_logfile=/var/log/supervisor/k8s-stderr.log
stdout_logfile=/var/log/supervisor/k8s-stdout.log

配置文件如下所示

# Copyright 2017 The Kubernetes Authors.
#
# 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 at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless 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.

apiVersion: v1
kind: Namespace
metadata:
  name: kubernetes-dashboard

---
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard

---
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard

---
apiVersion: v1
kind: Secret
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard-certs
  namespace: kubernetes-dashboard
type: Opaque

---
apiVersion: v1
kind: Secret
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard-csrf
  namespace: kubernetes-dashboard
type: Opaque
data:
  csrf: ""

---
apiVersion: v1
kind: Secret
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard-key-holder
  namespace: kubernetes-dashboard
type: Opaque

---
kind: ConfigMap
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard-settings
  namespace: kubernetes-dashboard

---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
rules:
  # Allow Dashboard to get, update and delete Dashboard exclusive secrets.
  - apiGroups: [""]
    resources: ["secrets"]
    resourceNames:
      [
        "kubernetes-dashboard-key-holder",
        "kubernetes-dashboard-certs",
        "kubernetes-dashboard-csrf",
      ]
    verbs: ["get""update""delete"]
    # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.
  - apiGroups: [""]
    resources: ["configmaps"]
    resourceNames: ["kubernetes-dashboard-settings"]
    verbs: ["get""update"]
    # Allow Dashboard to get metrics.
  - apiGroups: [""]
    resources: ["services"]
    resourceNames: ["heapster""dashboard-metrics-scraper"]
    verbs: ["proxy"]
  - apiGroups: [""]
    resources: ["services/proxy"]
    resourceNames:
      [
        "heapster",
        "http:heapster:",
        "https:heapster:",
        "dashboard-metrics-scraper",
        "http:dashboard-metrics-scraper",
      ]
    verbs: ["get"]

---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
rules:
  # Allow Metrics Scraper to get metrics from the Metrics server
  - apiGroups: ["metrics.k8s.io"]
    resources: ["pods""nodes"]
    verbs: ["get""list""watch"]

---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: kubernetes-dashboard
subjects:
  - kind: ServiceAccount
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: kubernetes-dashboard
subjects:
  - kind: ServiceAccount
    name: kubernetes-dashboard
    namespace: kubernetes-dashboard

---
kind: Deployment
apiVersion: apps/v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: kubernetes-dashboard
  template:
    metadata:
      labels:
        k8s-app: kubernetes-dashboard
    spec:
      containers:
        - name: kubernetes-dashboard
          image: registry.cn-shanghai.aliyuncs.com/jieee/dashboard:v2.0.4
          imagePullPolicy: Always
          ports:
            - containerPort: 8443
              protocol: TCP
          args:
            - --auto-generate-certificates
            - --namespace=kubernetes-dashboard
            # Uncomment the following line to manually specify Kubernetes API server Host
            # If not specified, Dashboard will attempt to auto discover the API server and connect
            # to it. Uncomment only if the default does not work.
            # - --apiserver-host=http://my-address:port
          volumeMounts:
            - name: kubernetes-dashboard-certs
              mountPath: /certs
              # Create on-disk volume to store exec logs
            - mountPath: /tmp
              name: tmp-volume
          livenessProbe:
            httpGet:
              scheme: HTTPS
              path: /
              port: 8443
            initialDelaySeconds: 30
            timeoutSeconds: 30
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            runAsUser: 1001
            runAsGroup: 2001
      volumes:
        - name: kubernetes-dashboard-certs
          secret:
            secretName: kubernetes-dashboard-certs
        - name: tmp-volume
          emptyDir: {}
      serviceAccountName: kubernetes-dashboard
      nodeSelector:
        "kubernetes.io/os": linux
      # Comment the following tolerations if Dashboard must not be deployed on master
      tolerations:
        - key: node-role.kubernetes.io/master
          effect: NoSchedule

---
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: dashboard-metrics-scraper
  name: dashboard-metrics-scraper
  namespace: kubernetes-dashboard
spec:
  ports:
    - port: 8000
      targetPort: 8000
  selector:
    k8s-app: dashboard-metrics-scraper

---
kind: Deployment
apiVersion: apps/v1
metadata:
  labels:
    k8s-app: dashboard-metrics-scraper
  name: dashboard-metrics-scraper
  namespace: kubernetes-dashboard
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: dashboard-metrics-scraper
  template:
    metadata:
      labels:
        k8s-app: dashboard-metrics-scraper
      annotations:
        seccomp.security.alpha.kubernetes.io/pod: "runtime/default"
    spec:
      containers:
        - name: dashboard-metrics-scraper
          image: registry.cn-shanghai.aliyuncs.com/jieee/metrics-scraper:v1.0.4
          ports:
            - containerPort: 8000
              protocol: TCP
          livenessProbe:
            httpGet:
              scheme: HTTP
              path: /
              port: 8000
            initialDelaySeconds: 30
            timeoutSeconds: 30
          volumeMounts:
            - mountPath: /tmp
              name: tmp-volume
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            runAsUser: 1001
            runAsGroup: 2001
      serviceAccountName: kubernetes-dashboard
      nodeSelector:
        "kubernetes.io/os": linux
      # Comment the following tolerations if Dashboard must not be deployed on master
      tolerations:
        - key: node-role.kubernetes.io/master
          effect: NoSchedule
      volumes:
        - name: tmp-volume
          emptyDir: {}

第一種:登錄 dashboard 的方式(配置文件)

  • 采用 token 方式

  • 采用秘鑰文件方式

# 創(chuàng)建管理員帳戶(dashboard)
$ cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard
EOF

# 將用戶綁定已經(jīng)存在的集群管理員角色
$ cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kubernetes-dashboard
EOF

# 獲取可用戶于訪問的token令牌
$ kubectl -n kubernetes-dashboard describe secret \
    $(kubectl -n kubernetes-dashboard get secret \
    | grep admin-user | awk '{print $1}')

登錄界面展示

針對 Chrome 瀏覽器,在空白處點擊然后輸入:thisisunsafe
針對 Firefox 瀏覽器,遇到證書過期,添加例外訪問

第二種:授權(quán) dashboard 權(quán)限(不適用配置文件)

  • 如果登錄之后提示權(quán)限問題的話,可以執(zhí)行如下操作

  • 把 serviceaccount 綁定在 clusteradmin

  • 授權(quán) serviceaccount 用戶具有整個集群的訪問管理權(quán)限

# 創(chuàng)建serviceaccount
$ kubectl create serviceaccount dashboard-admin -n kube-system

# 把serviceaccount綁定在clusteradmin
# 授權(quán)serviceaccount用戶具有整個集群的訪問管理權(quán)限
$ kubectl create clusterrolebinding \
    dashboard-cluster-admin --clusterrole=cluster-admin \
    --serviceaccount=kube-system:dashboard-admin

# 獲取serviceaccount的secret信息,可得到token令牌的信息
$ kubectl get secret -n kube-system

# 通過上邊命令獲取到dashboard-admin-token-slfcr信息
$ kubectl describe secret <dashboard-admin-token-slfcr> -n kube-system

# 瀏覽器訪問登錄并把token粘貼進去登錄即可
https://192.168.30.30:8080/

# 快捷查看token的命令
$ kubectl describe secrets -n kube-system \
    $(kubectl -n kube-system get secret | awk '/admin/{print $1}')

推薦閱讀

23 道 Kubernetes 面試題!


生產(chǎn)環(huán)境中的 Kubernetes 最佳實踐


Kubernetes 日志收集的原理,看這一篇就夠了


原來Kubernetes部署如此簡單,看完全明白了


Kubernetes 從入門到進階實戰(zhàn)教程 (2021 最新萬字干貨版)


Kubernetes 的這些原理,你一定要了解

瀏覽 38
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 500部大龄熟乱4K视频| 3D动漫精品啪啪一区二区| 亚洲欧美国产精品专区久久 | 东京热国产| 91精品国产一区二区三区| 一本色道久久综合狠狠躁| 青娱乐精品| 婷婷久久久久| 五月天婷婷色色| 人妻啪啪| 中文字幕精品久久久久人妻红杏Ⅰ | 欧美操逼图片| 日韩有码在线观看| 操美女视频网站| 精品国产999久久久免费| 成人aV免费观看| 成人黄色免费网站| 四虎欧美| 国产精品porn| 国产成人综合在线| 水蜜桃视频在线播放| 日本一级片在线播放| 中文字幕在线一区| 婷婷六月激情| 91色综合| 三级片亚洲| 日本色天堂| 强开小嫩苞毛片一二三区| 久久丁香五月婷婷五月天激情视频 | 国产精品操逼视频| 欧美国产日本| 午夜成人福利剧场| 精品av在线观看| 人人色网站| 91丨牛牛丨国产人妻| www.操逼| 色综合久久88色综合天天| 操逼视频观看| 国产香蕉视频在线观看| 一级片黄片| 18禁网站在线播放| 亚洲AV片一区二区三区| 99色播| 国产内射视频| 色五月在线| 美女黄色视频网站| 日韩免费看| 91中文字幕在线播放| 黄片网站免费在线观看| 中文字幕av网站| 免费在线性爱视频| 成人片成人网久久蜜桃臀| 中文字幕在线免费视频| 久草免费在线视频| 水蜜桃91| 一区二区三区免费看| 一级性爽A√毛片| 日本电影一区二区| 91视频高清无码| 成人网站一区二区| 久久露脸国语精品国产91| 国内精产品一二区秘| 免费观看黄色视频| 波多野结衣视频网站| 日本免费黄色片| av大全在线观看| 秋霞午夜视频| 亚洲另类天堂| 国色天香网站| 国产精品美女久久久久AV爽| 影音先锋色AV| 永久免费AV无码| 亚洲一在线| 97人妻一区二区精品免费视频| 97操逼网| 国产操屄网| 最近中文字幕2022在线观看A| 久草在线| 欧亚无码| 91人妻人人澡人人精品| 日韩高清在线| 神马午夜精品96| 大香蕉69| 精品乱子伦一区二区三区| 亚洲无码视频网站| 欧美成人三级| 国产四区| 在线免费观看中文字幕| 日一日干一干| 囯产精品久久久久久久久久辛辛 | 先锋影音一区二区三区| 日韩av三级在线观看| 就要操| 婷婷涩嫩草鲁丝久久午夜精品| 黄网在线看| 天天干天天干天天日| 蝌蚪窝在线观看| 先锋影音资源av| 亚洲一区二区av| 成人网| 亚洲免费成人网站| ThePorn人妻白浆| 精品av| 99在线视频精品| 古装一级无遮挡A片| 成年人A片| 农村一级婬片A片AAA毛片古装| 俺去草| 伊人视频在线| 免费欧美性爱视频| 无码av免费精品一区二区三区| 在线观看99| 18毛片| 香蕉网址| 欧美亚洲激情| 人人爱人人射| 亚洲色图综合| 五月婷婷AV| 美女一级片| 三级片视频网站| 国产69精品久久久久久久久久久久 | 黄色A片免费看| 天天日夜夜添| 日韩成人无码电影| 青娱乐亚洲自拍| 操逼操逼操逼操逼| 国产成人精品无码免费| 久操国产| 欧美一区二区三区在线观看| 丁香五月在线观看| 亚洲91视频| 五夜福利成人视频| 88海外华人免费一区| 精品国产免费观看久久久_久久天天| 国产性爱一级片| 免费观看高清无码视频| 成人免费A片视频| 欧美久久婷婷| 亚洲高清无码中字| 亚洲无码视频在线免费观看| 欧美伊人久久| 亚洲精品中文字幕乱码三区91| 91干干干| 在线免费看a片| 麻豆免费成人视频| 青青草成人网| 国产免费无码| 逼特逼| 韩日黄色| 老司机在线免费视频| 国内精品人妻无码久久久影院蜜桃| 三级影片在线观看性| 精品热99| 停停五月天| 自拍偷拍15p| 精品成人免费视频| 三级片网站大全| 天天草天天射| 亚洲免费婷婷| footjobvk| 黄色A一级| 国产wwwww| 午夜视频网站| v天堂| 日日摸日日操| 亚洲AV资源| 免费黄色毛片| 97精品视频| 久久精品视频久久| 大香蕉久在线| 天天日日干| 操日本少妇| AV无码电影| 欧美精品一二三区| 丁香五月在线观看| 中文无码精品欧美日韩| 夜色精品视频| 亚洲天堂在线观看免费视频 | 亚洲精品操逼| 欧美午夜成人一区二区三区| 人妻操| 精品国产无码怀孕| 黄色一区在线| 91人妻一区二区三区无不码超满| 亚洲婷婷在线观看| 欧美伊人久久| 国精产品秘成人一区二| 爱爱视频日本| 天堂AV色| jizz在线观看免费视频| 蜜桃传媒入口| 色色色亚洲| 欧美日韩综合| 91在线看| 免费无码成人| 超碰九色| 中文成人无字幕乱码精品区| 西西444www无码精品| www.99| 欧美成人片免费看| 男人天堂亚洲| 麻豆熟女| 狠狠操狠狠操狠狠操| 黄色性爱小说| 一本大道香蕉av久久精东影业 | 黄色在线播放| 免费欧美A片| 亚洲69视频| 樱桃码一区二区三区| 久草一区二区三区| 中文字幕AV在线免费观看| 亚洲伊人综合| 丁香五月天网站| 九色自拍| 国产精品aaa| 国产人成| AV无码免费一区二区三区不卡| 最新中文字幕在线视频| 操逼网123| 日本特黄一级片| 成人免费网站在线观看| 日韩性爱小视频| AAA片| 激情麻豆论坛| 天堂中文资源在线观看| 日韩成人无码免费视频| 国产免费一区二区| 一级黄色大片| 少妇喷水在线观看| 日韩精品在线视频观看| 久久久久久久久久8888| 久操国产| 亚洲AV三级片| 久热人妻| 国产精品视频网站| 国产又爽又黄免费网站校园里| 成人区123| 东北奇淫老老妇| 久操视频免费在线观看| AV三级片在线观看| 中文字幕免费在线看一区七区| 无码一区二区三区免费看| 欧美性猛交XXXX乱大交HD| 亚洲天堂色| 精品无码国产一区二区三区51安| 精品多人P群无码视频| 国产精品一区二区在线观看| 人妻无码专区| 驲韩在线视频免费观看| 少妇性受XXXX黑人XYX性爽| 密臀久久| 超碰成人免费| 国产欧美日韩三级| AV自拍| 一区二区三区黄色| 青草娱乐| ThePorn精品无码| 超碰人人爽| 五月天福利导航| 射射AV| 人人操人人干人人看| 国产精品96久久久| 免费看毛片中文字幕| 亚洲无码中文字幕在线| 国产精品免费观看视频| 中文字幕色| 欧美日韩一级黄片| 操操网站| 亚洲免费视频观看| 四虎影院最新地址| 成人福利午夜A片公司| 全国最大成人网站| 亚洲日韩毛片| 毛片A级| 色五月婷婷中文字幕| 欧美精品xxx| 激情五月激情综合网| 香蕉视频在线看| 在线综合国产欧美| 亚洲综合视频网| 日韩午夜成人电影| 中文人妻av| 理论在线视频| 97在线观看免费| 这里只有精品91| 日韩欧美成人片| 成人做爰黄AAA片免费直播岛国 | 中文字幕无码免费| 亚洲小说区图片区都市| 国产精品电影大全| 自拍三级| 激情av| 欧美激情内射| 亚洲精品一区二区三区无码电影| 成人午夜无码福利视频| 操逼视频国产91| 高清无码专区| 久久亚洲视频| 欧美老熟妇BBBBB搡BBB| 国产内射精品| 超碰成人福利| 先锋资源国产| 久草网在线| 黄色操逼网站?| 欧美黄色免费在线观看| 人人草在线视频| 久久亚洲Aⅴ成人无码国产丝袜| 久久久免费观看视频| 一本道高清无码视频| 日韩欧美性爱网站| 成人国产在线无码AV免费| 蜜柚av| 超碰九一| 四虎黄色网址| 91视频福利网| 黄色小视频在线免费看| 日韩无码网站| 四川少妇搡bbw搡bbbb| 老熟女露脸25分钟91秒| 中文字幕亚洲观看| 久操福利视频| 国产婷婷久久Av免费高清| 在线亚洲欧洲| 四川少妇BBB| 午夜福利AV电影| 免费三级网| 大黑逼网| 日本色电影在线观看| 欧美精产国品一二三区| 日本成人一区二区| 国产精品久久久久久久久久久免费看 | 嫩草视频在线观看免费网站| 永久久久久久久| 国产精品内射婷婷一级二| 国产影视av| 无码一区二| 人人操人人操人人操人人操人人操 | 国产成人精品国内自产拍免费看 | 人妻av无码| 一区二区AV| 精品三级在线观看| 日本色色色| 老熟女--91XX| 国产精品视频免费看| 青娱乐亚洲精品视频| 国产伊人影院| 中文字幕东京热加勒比| 日本精品黄色| 日韩一级免费| 在线啊啊啊| 黄色片在线看| 搡bbbb| 99自拍视频| 99色热视频| 色五月婷婷五月| 欧美日韩中文在线观看| 国产资源在线观看| 不卡AV在线播放| 精品人妻午夜一区二区三区四区| 激情乱伦网| 另类色综合| 亚洲性生活| 色综合激情| 成人精品一区二区三区视频| 中文字幕aV在线| 丹麦电影《下午》| 久久婷婷六月| 久久久久久精品国产三级| 免费成人视频| 欧洲天堂在线视频网站| 一区二区无码精品| 法国《少女日记》电影| 日韩无码高清一区| 欧美城综合在线观看网| 一级片免费网站| 小佟丽娅大战91哥| 成人片免费看| 做爱的网站| 成人片无码| 91精品国产成人www| 男人天堂视频在线观看| 无码不卡视频在线| 熟女久久| 天天干在线观看视频| 人人澡人人爽人人精品| 成人做爰黄级A片免费看土方| 最近中文字幕| 91精品久久久久久综合五月天| 91女人18毛片水多的意思| 日韩第三页| 嫩草在线观看| 粉嫩99精品99久久久久久特污| 国产午夜视频在线观看| 精品999999| 免费一级黄色电影| 黑人精品| 韩国AV三级| 欧美第二页| 瘦精品无码一区二区三区四区五区六区七区八区 | 国产真人无码| 国产黄色精品| 免费一级AAAAA片在线播放| 99国产在线视频| 婷婷高清无码| 色999网址| 日韩中文无| 国产美女久久久| 91在线看片| 国产免费观看AV| 波多野结衣无码视频在线观看 | 国产熟妇毛多久久久久一区| 日韩AV免费在线播放| 欧美日韩国产一区二区| 无码五月天| 好吊视频一区二区三区| 熟女中文| 日韩日日操| 无码乱伦视频| 精品一区二区三区四区五区| 国产综合久久| 中文字幕日本精品5| 成人无码视频在线| 亚洲无码成人在线| 91人妻人人澡人人爽人人DVD| 亚洲婷婷在线| 五月激情六月| 中文字幕日本欧美| 国产日韩一区| 国产精品香蕉国产| 大香蕉伊人视频| 北京熟妇搡BBBB搡BBBB| 蜜臀av一区二区三区| 99热免费观看| 天天视频入口| 亚洲成人无码在线| 色五月在线观看| 五月天婷婷在线播放视频免费观看| 操逼网站免费观看| 色老板网址| 狼友视频在在观看| 国产av一级片| av天堂一区| 高清一区二区三区| 国产成人无码精品久在线观看| 操小逼视频| 久久中文视频| 亚洲黄色免费观看| 亚洲污网| 天天看天天日| 日韩一区二区无码| 黄色内射视频| 色婷婷视频一区二区| 7777影视电视剧在线观看官网 | 一道本不卡视频| 日韩无码一二三| 国产videos| 国产18女人水真多免费看| 久久久亚洲熟妇熟女| 中文字幕无码影院| 日本高清一区二区高清免费视频| 精品免费国产一区二区三区四区| 国产成人精品a视频一区| 日韩成人无码一区二区视频| 91精品丝袜久久久久久久久粉嫩| 91丨精品丨国产丨丝袜| 国内久久| 国产在线视频一区二区三区| 波多野结衣AV网站| 精品一二三区| 手机在线观看av| av视屏| 亚洲黄色在线观看| 91蝌蚪视频在线观看| 人人妻人人操人人干| 97人妻| 亚洲操逼逼| 久久精品视频国产| 欧美日韩性爰视频| 3D动漫啪啪精品一区二区中文字幕| 97国产精品手机| 中文字幕一区三区三A片密月| 特级毛片www| 在线观看视频国产| 天天三级片| 亚洲黄色大片| 亚洲中文字幕在线视频观看 | 色综合五月| www.黄色在线观看| 日韩一级免费电影| 成人性生交片无码免费看人| 中文无码av| 噜噜在线| 国产xxxx视频| 久久青青婷婷| 午夜精品18| 蜜臀久久99精品久久久久酒店更新时间 | 国产又爽又黄免费网站在线| 黄色爱爱视频| 日本久久久久久久久视频在线观看 | 亚洲91黄色片| 国产成人精品无码免费| 国产精品porn| 少妇搡BBBB搡BBB搡18禁| 亚洲天堂在线观看视频| 七十路の高齢熟妇无码| 国产无遮挡又黄又爽又色视频| 丁香激情视频| 成人无码www在线看免费| 青草视频在线免费观看| 免费一区视频| 影音先锋av色| 一区二区三区视频在线观看| 无码秘人妻一区二区三-百度| 欧美污视频在线观看| 成人视频91| 夜夜操影院| 毛片毛片毛片毛片毛片| 91久久久久久久久久久久18| 特级毛片AAAAAA蜜桃| 亚洲无码在线播放| 精品亚洲无码视频| 伊人大香在线| 嫩BBB槡BBBB槡BBB小号| 成人一级A片| 中文字幕在线观看不卡| 精东av| 久久香视频| 亚洲精品无码在线观看| 日韩艹| 亚洲成人免费观看| 午夜试看120秒体验区的特点| 999精品视频在线| 婷婷五月天激情小说| 久久99久久99久久99| aaa在线观看| 99热在线中文字幕| 一级片在线播放| 午夜丁香| 97爱爱爱| 亚洲热视频在线观看| 久操精品视频| 天天干夜夜爽| 亚州激情| 亚洲自拍网站| 色老板网址| 思思精品在线| 悠悠AV导航| 国产成人AⅤ| 高清无码激情| 久久公开视频| 动漫3D成人H无码国漫| 青青草成人免费在线视频| 先锋影音在线资源| 成人网站av| 一级a一级a爰片免费| 亚洲AV无码成人片在线| 精品国产一二三| 综合久久99| 久久国产精品网站| 日批视频在线观看| 欧美人操逼视频| 亚洲色婷婷在线| 777欧美| A片网| 伊人久艹| 亚洲中文字幕网站| 亚洲精选一区二区三区| 亚洲色图欧美| 日韩极品视频在线| 欧美级毛片高潮| 牛牛在线视频| 国产理论电影在线观看| 手机在线看A片| 少妇A片| 国产欧美另类| 亚洲午夜福利一区二区三区| 人人色人人操| 亚洲无码电影网| 亚洲小视频在线| 极品久久| 校园春色av| 操b视频在线播放| 国产高清精品在线| 亚洲av成人网| 中文字字幕在线中文乱码更新时间 | 西西特级WWW444无码| 日本一区免费观看| 国产wwwww| 日韩aaa视频| 亚洲AV成人片色在线观看麻豆| 午夜无码电影| 人人摸人人射| 色综合综合色| 欧美aaa视频| 日韩免费不卡| 最近中文字幕在线观看| 北条麻妃A片在线播放| 欧美视频色| 一区二区三区精品| 8050网午夜| 1级毛片| 欧美熟妇性爱| jizzjizz欧美| 亚洲免费观看高清完整版在va线观看 | 在线成人视频网站大香蕉在线网站| 另类老妇性BBwBBw| 婷婷五月天中文字幕| 免费看黃色AAAAAA片| 一级AA毛片| 福利在线| 久操视频免费在线观看| 色爱av| 人人干人人操人人| 狠狠撸天天操| 91一区在线观看| 国产一级二级三级视频| 日韩免费福利视频| 精品无码国产一区二区三区51安| 91人妻无码一区二区三区| 免费V片| 欧美日韩一区在线| 黄色网址在线免费观看| 超碰碰碰碰| 欧美一级AA| 亚洲精品秘一区二区三区在线观看| 美女特黄视频| 波多野结衣无码一区| 亚洲色a| 成人做爰黄级A片免费看土方| 在线看片国产| 人妻少妇一区二区| 一本一道久久a久久精品综合| 日韩无码成人| 日本免费A片| 亚洲资源在线| 久艹视频在线观看| 欧美色婷婷| 无码人妻一区二区一牛影视| 亚洲成人视频在线| 国产黄A片免费网站免费| 777免费视频| 亚洲操逼逼| 成人精品无码免费视频| A片免费在线播放| 青青草91视频| 久久国产精品一区二区三区| 国产成人精品一区二| 亚洲成人性爱视频| 日本在线一区二区| 一本色道综合久久欧美日韩精品 | 亚洲激情小说| 青青青操| 一级AA片| 成人三级片在线观看| 国产精品视频播放| 亚洲色情电影| 中文字幕+乱码+中文乱码91| 国产视频中文字幕| 99热最新网址| 日韩高清无码一区二区| 蜜臀久久99精品久久久电影| 翔田千里珍藏版无码| 中日韩一级片| 狠狠撸狠狠干| 成人在线视频免费| 狠狠干网| 强伦轩农村人妻| 亚洲精品黄色| 高潮视频在线观看| a在线| 久草中文在线| 无码人妻一区二区三区四区老鸭窝| 三级视频在线播放| 老女人操逼视频| 蜜桃视频一区二区三区| 99热9| 亚洲精品视频在线观看网站| 欧美日韩视频一区二区三区| www.青青草视频| 色丁香视频在线观看的| 最新av资源| 国产三级高清无码| 北岛玲视频在线| 国产精品久久77777| 2024av在线| 香蕉国产在线| 欧美亚韩| 成人69AV| 91成人久久| 黄在观看线| 久久精品视频9| 豆花视频免费观看| 九九激情| 成人在线黄色| av无码中文字幕| 91在线无码精品秘入口动作| 国产精品一二三区夜夜躁| 北条麻妃中文字幕在线| 久久毛片| 无码一区二区三区四区| 欧美淫秽视频| 北条麻纪视频| 亚洲国产精品18久久久久久| 国产精品乱码一区二区三区| 人人摸人人看人人| 黑人在线视频| 欧美福利在线观看| 翔田千里在线播放| 亚洲不卡在线观看| 国产成人精品免高潮在线人与禽一| 黄片视频在线免费观看| 久久精品三级| 亚洲在线看| 日本黄色片| 操女人逼AV| 久久动图| 一级成人电影| 影音先锋91久久网| 超碰人人操97| 日韩成人网站在线观看| 亚洲国产爱| 日韩国产中文字幕| 蜜桃视频无码| 欧美在线视频99| 人人操人人干97| 黄色一级在线| 黄色小视频免费| 国产精品久久久久久久久久久久久久久久 | 日产电影一区二区三区| 五月天亚洲色图| 国产黄片免费在线观看| 国产黄在线观看| 黄色成人网站在线免费观看| 精品一二三区| 无码AV高清| 欧美大鸡巴视频| 欧美粗大| 中文字幕第11页| 51国产黑料吃瓜在线入口| 91网站免费看| 黄片网站视频| 超碰中文字幕| 九九草在线视频| 91精品国产综合久久久蜜臀图片| 日本中文字幕在线免费观看| 自拍偷拍激情视频| 91三级在线观看| 日韩高清无码专区| 天天干天天拍| 黄片无码| 淫色综合网| 天堂中文资源在线观看| 欧美熟妇搡BBBB搡BBBBB| 日韩不卡一区| 五月天欧美性爱| 久久精品免费观看| 色999网址| 一区二区三区三级片| 久久综合色色| www.五月丁香| 丰满老妇高潮一级A片| 精品香蕉视频| 在线观看一区| 3D动漫精选啪啪一期二期三期| 国产美女自拍| 91人妻人人澡人人爽人人爽| 国产欧美综合在线| 乱伦三级| 天天干天天日天天操| 人人妻日日摸狠狠躁| AAA精品| 色色视频免费看| 日日综合网| 国内精品久久久久久久久久| 亚洲av无码乱码| 久久无码高清视频| 伊人网在线播放| 国产精品aaa| 国产又粗又大又长| 欧美日韩亚洲视频| 亚洲无码视频网站| 日本免费A片| 亚洲北条麻妃一级A片| 九九99精品视频| 特级欧美AAAAAA| 69国产精品| 亚洲资源在线| 黄色电影毛片| 精品久热| 五月丁香激情综合| 国产高清自拍视频| 无码一二区| 欧美日韩高清一区| 日韩无码AV中文字幕| 欧美色图综合| 玖玖精品| 91欧美黑人| 日本成人不卡| 色色五月丁香婷婷| 91成人电影在线| www.| 欧美男人天堂网| 久久伊人电影| 北条麻妃在线一区| 无码av在线播放| 女神思瑞精品一区二区三区| 中文在线不卡| 中文字幕一区三区人妻视频| 黄色一级大片在线免费看国产| 日韩无码五月天| 免费无码一区二区三区| 在线观看日韩三级片av| 日本一区二区三区视频在线观看| 东北操逼视频| 国产免费一区| 久久成人免费视频| 亚洲成人77777| 久久婷婷国产综合| 黄色影片在线观看| 99热免费| 蜜臀网在线观看| 亚洲AV无码精品久久一区二区| 久久亚洲欧美| 驲韩在线视频免费观看| 久久国产精彩视频| 真人无码| 成人区精品一区二区婷婷| 德美日三级片在线观看| 高清在线无码视频| 久久一区二区三区四区五区| 国产图区| 韩日黄色| 超碰九一| 热99视频| 97国产视频| 一级A片黃色A片| 亚洲高清无码网站| 国产色情视频| 欧美淫秽视频| 久热人妻| avwww| 日韩一级二级| 欧美成人免费精品| 成人一级a片| 麻豆91精品人妻成人无码| 操逼不卡视频| 亚洲成人午夜电影| 国产又爽又黄在线看视频| 精品乱伦| 日韩av在线看| 欧美操逼网址| 亚洲国产91| 一级片直播| 男人的天堂手机在线| 欧美日韩免费在线观看| 99久久99久久99久久久99国产 | 另类老妇奶性生BBwBBw偷拍| 1024在线| 中文字字幕在线中文乱码电影| A片免费的| 欧美日韩精品一区二区三区视频播放 | 成人在线三级片| 日韩av免费在线观看| 国产日韩性爱视频| 国产成人在线视频免费| 亚洲福利网站| 亚洲韩国中文字幕| 超碰九一| 热热AV| 午夜无码鲁丝片午夜精品| 亚洲AV无码乱码国产| 99这里有精品视频| 亚洲九九| 欧美日韩国产91| 91久久香蕉囯产熟女线看蜜桃| 亚洲无码A片在线观看APP| 亚洲性爱小说网址| 国产一区二区三区视频在线观看| 精品人妻一区二区三区四区不卡在| 激情五月天综合网| www天天干| 99re欧美激情| 日韩成人av在线| 久操视频在线播放| 人妻少妇被猛烈进入中文字幕 | 免费无码婬片AAAA片直播| 综合色国产精品欧美在线| 日本无码精品| 日批网站在线观看| 精品无码久久久久久久久app| 五月天婷婷影院影院| BBW老熟女BBw| 国产69av| 人人摸人人操人人射| 一区色| 日韩av在线看| 日韩高清无码一区二区三区| 日韩经典视频在线播放| 91熊猫| 爱看福利视频|