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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Kubernetes进阶使用(二)

發(fā)布時間:2023/12/14 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kubernetes进阶使用(二) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、使用configmap為nginx提供一個配置文件并驗證

configMap 卷 提供了向 Pod 注入配置數(shù)據(jù)的方法。 ConfigMap 對象中存儲的數(shù)據(jù)可以被 configMap 類型的卷引用,然后被 Pod 中運行的 容器化應用使用。
引用 configMap 對象時,你可以在 volume 中通過它的名稱來引用。 你可以自定義 ConfigMap 中特定條目所要使用的路徑。

說明:

  • 在使用 ConfigMap 之前你首先要創(chuàng)建它。
  • 容器以 subPath 卷掛載方式使用 ConfigMap 時,將無法接收 ConfigMap 的更新。
  • 文本數(shù)據(jù)掛載成文件時采用 UTF-8 字符編碼。如果使用其他字符編碼形式,可使用 binaryData 字段。
#進行編寫configmap的yaml文件 root@master1:~/yaml/20210925/case-yaml/case6# vim deploy_configmap.yml apiVersion: v1 kind: ConfigMap metadata:name: nginx-config data:default: |server {listen 80;server_name www.mysite.com;index index.html;location / {root /data/nginx/html;if (!-e $request_filename) {rewrite ^/(.*) /index.html last;}}}--- apiVersion: apps/v1 kind: Deployment metadata:name: nginx-deployment spec:replicas: 1selector:matchLabels:app: ng-deploy-80template:metadata:labels:app: ng-deploy-80spec:containers:- name: ng-deploy-80image: nginx ports:- containerPort: 80volumeMounts:- mountPath: /data/nginx/htmlname: nginx-static-dir- name: nginx-configmountPath: /etc/nginx/conf.dvolumes:- name: nginx-static-dirhostPath:path: /data/nginx/linux39- name: nginx-configconfigMap:name: nginx-configitems:- key: defaultpath: mysite.conf--- apiVersion: v1 kind: Service metadata:name: ng-deploy-80 spec:ports:- name: httpport: 81targetPort: 80nodePort: 30019protocol: TCPtype: NodePortselector:app: ng-deploy-80root@master1:~/yaml/20210925/case-yaml/case6# kubectl apply -f deploy_configmap.yml root@master1:~/yaml/20210925/case-yaml/case6# kubectl get pod NAME READY STATUS RESTARTS AGE net-test1 1/1 Running 3 17d net-test2 1/1 Running 4 17d net-test3 1/1 Running 4 17d nginx-deployment-6b86dd48c8-hdw2x 1/1 Running 0 6m54s#檢查配置文件,進行驗證,發(fā)現(xiàn)配置文件和configmap的一樣 root@nginx-deployment-6b86dd48c8-hdw2x:/# cat /etc/nginx/conf.d/mysite.conf server {listen 80;server_name www.mysite.com;index index.html;location / {root /data/nginx/html;if (!-e $request_filename) {rewrite ^/(.*) /index.html last;}} }

進行網站的驗證

root@master1:~/yaml/20210925/case-yaml/case6# kubectl exec -it deploy/nginx-deployment -- bash root@nginx-deployment-6b86dd48c8-hdw2x:/# cd /data/nginx/html/ root@nginx-deployment-6b86dd48c8-hdw2x:/data/nginx/html# echo "ceshi"> index.html

二、PV/和PVC的特性

2.1 PV的使用

PV作為存儲資源,主要包括存儲能力、訪問模式、存儲類型、回收策略、后端存儲類型等關鍵信息的設置。是對底層網絡存儲的抽象,即將網咯存儲資源,一個整體的存儲資源拆分成多份后給不同的業(yè)務使用。

#nfs的話要先在對應的主機上面運行nfs-server,配置好 root@node1:/data/svc# mkdir /data/k8sdata/test/redis-datadir -p root@node1:/data/svc# apt install -y nfs-kernel-server root@node1:~# vim /etc/exports /data/svc 10.0.0.0/24(rw,no_root_squash,sync) root@node1:~# systemctl restart nfs-kernel-server.service root@node1:/data/svc# systemctl enable nfs-kernel-server.service Synchronizing state of nfs-kernel-server.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable nfs-kernel-server #運行pv root@master1:~/yaml# vim redis-pv.yaml apiVersion: v1 kind: PersistentVolume metadata:name: redis-data-pvnamespace: test spec:capacity: #當前pv大小storage: 10GiaccessModes: #訪問模式- ReadWriteOncenfs:path: /data/k8sdata/test/redis-datadir server: 10.0.0.111

2.2 PVC的使用

PVC作為用戶對存儲資源的需求申請,主要包括存儲空間請求、訪問模式、PV選擇條件和存儲類別等信息的設置。是對PV資源的申請調用,就像POD消費node節(jié)點一樣,pod是通過pvc將數(shù)據(jù)保存至pv,pv再保存至存儲中。

root@master1:~/yaml# vim redis-pvc.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata:name: redis-data-pvcnamespace: test spec:volumeName: redis-data-pv #要綁定的PV名稱accessModes:- ReadWriteOnceresources:requests:storage: 10Giroot@master1:~/yaml# kubectl apply -f redis-pvc.yaml #綁定之后狀態(tài)會從 Available變成Bound root@master1:~/yaml# kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE redis-data-pv 10Gi RWO Retain Bound test/redis-data-pvc 33m

三、k8s實戰(zhàn)案例

3.1 k8s實戰(zhàn)案例之zookeeper集群:

基于PV與PVC作為后端存儲,實現(xiàn)zookeeper集群

3.1.1 構建zookeeper鏡像

zookeeper鏡像下載地址: http://archive.apache.org/dist/zookeeper/

root@master1:~/Dockerfile/zookeeper# wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz root@master1:~/Dockerfile/zookeeper# wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz.asc root@master1:~/yaml# docker pull elevy/slim_java:8 root@master1:~# docker tag elevy/slim_java:8 10.0.0.104/baseimages/slim_java:8 root@master1:~# docker push 10.0.0.104/baseimages/slim_java:8#準備文件 root@master1:~/Dockerfile/zookeeper# ll total 36852 drwxr-xr-x 2 root root 4096 Nov 19 14:31 ./ drwxr-xr-x 8 root root 4096 Nov 19 13:44 ../ -rwxr-xr-x 1 root root 123 Nov 19 14:24 build.sh* -rw-r--r-- 1 root root 1562 Nov 19 14:23 Dockerfile -rwxr-xr-x 1 root root 309 Nov 19 13:51 entrypoint.sh* -rw-r--r-- 1 root root 5637 Nov 19 14:31 KEYS -rw-r--r-- 1 root root 1852 Nov 19 13:53 log4j.properties -rw-r--r-- 1 root root 5637 Nov 19 14:31 public-file.key -rw-r--r-- 1 root root 91 Nov 19 13:51 repositories -rwxr-xr-x 1 root root 102 Nov 19 13:52 zkReady.sh* -rw-r--r-- 1 root root 507 Nov 19 13:52 zoo.cfg -rw-r--r-- 1 root root 37676320 Nov 19 13:54 zookeeper-3.4.14.tar.gz -rw-r--r-- 1 root root 836 Apr 1 2019 zookeeper-3.4.14.tar.gz.ascroot@master1:~/Dockerfile/zookeeper# cat entrypoint.sh #!/bin/bash echo ${MYID:-1} > /zookeeper/data/myid if [ -n "$SERVERS" ]; thenIFS=\, read -a servers <<<"$SERVERS"for i in "${!servers[@]}"; do printf "\nserver.%i=%s:2888:3888" "$((1 + $i))" "${servers[$i]}" >> /zookeeper/conf/zoo.cfgdone fi cd /zookeeper exec "$@"root@master1:~/Dockerfile/zookeeper# cat zkReady.sh #!/bin/bash /zookeeper/bin/zkServer.sh status | egrep 'Mode: (standalone|leading|following|observing)'root@master1:~/Dockerfile/zookeeper# cat repositories http://mirrors.aliyun.com/alpine/v3.6/main http://mirrors.aliyun.com/alpine/v3.6/communityroot@master1:~/Dockerfile/zookeeper# cat log4j.properties # # ZooKeeper Logging Configuration # # Format is "<default threshold> (, <appender>)+ # DEFAULT: console appender only log4j.rootLogger=${zookeeper.root.logger} # Example with rolling log file #log4j.rootLogger=DEBUG, CONSOLE, ROLLINGFILE # Example with rolling log file and tracing #log4j.rootLogger=TRACE, CONSOLE, ROLLINGFILE, TRACEFILE # # Log INFO level and above messages to the console # log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Threshold=${zookeeper.console.threshold} log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n # # Add ROLLINGFILE to rootLogger to get log file output # Log DEBUG level and above messages to a log file log4j.appender.ROLLINGFILE=org.apache.log4j.RollingFileAppender log4j.appender.ROLLINGFILE.Threshold=${zookeeper.log.threshold} log4j.appender.ROLLINGFILE.File=${zookeeper.log.dir}/${zookeeper.log.file} # Max log file size of 10MB log4j.appender.ROLLINGFILE.MaxFileSize=10MB # uncomment the next line to limit number of backup files log4j.appender.ROLLINGFILE.MaxBackupIndex=5 log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L] - %m%n # # Add TRACEFILE to rootLogger to get log file output # Log DEBUG level and above messages to a log file log4j.appender.TRACEFILE=org.apache.log4j.FileAppender log4j.appender.TRACEFILE.Threshold=TRACE log4j.appender.TRACEFILE.File=${zookeeper.tracelog.dir}/${zookeeper.tracelog.file} log4j.appender.TRACEFILE.layout=org.apache.log4j.PatternLayout ### Notice we are including log4j's NDC here (%x) log4j.appender.TRACEFILE.layout.ConversionPattern=%d{ISO8601} [myid:%X{myid}] - %-5p [%t:%C{1}@%L][%x] - %m%n#KEYS的獲取,沒有KEY會報錯 進行查看 root@master1:~/Dockerfile/zookeeper# gpg --verify zookeeper-3.4.14.tar.gz.asc gpg: assuming signed data in 'zookeeper-3.4.14.tar.gz' gpg: Signature made Wed 06 Mar 2019 06:47:14 PM UTC gpg: using RSA key FFE35B7F15DFA1BA gpg: Can't check signature: No public key #下載公鑰 root@master1:~/Dockerfile/zookeeper# gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys FFE35B7F15DFA1BA gpg: key FFE35B7F15DFA1BA: public key "Andor Molnar <andor@apache.org>" imported gpg: Total number processed: 1 gpg: imported: 1 root@master1:~/Dockerfile/zookeeper# gpg --verify zookeeper-3.4.14.tar.gz.asc gpg: assuming signed data in 'zookeeper-3.4.14.tar.gz' gpg: Signature made Wed 06 Mar 2019 06:47:14 PM UTC gpg: using RSA key FFE35B7F15DFA1BA gpg: Good signature from "Andor Molnar <andor@apache.org>" [unknown] gpg: aka "Andor Molnar <andor@cloudera.com>" [unknown] gpg: aka "Andor Molnár <andor@apache.org>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: 3F7A 1D16 FA42 17B1 DC75 E1C9 FFE3 5B7F 15DF A1BA #查看所有key root@master1:~/Dockerfile/zookeeper# gpg -k /root/.gnupg/pubring.kbx ------------------------ pub rsa4096 2018-06-19 [SC]3F7A1D16FA4217B1DC75E1C9FFE35B7F15DFA1BA uid [ unknown] Andor Molnar <andor@apache.org> uid [ unknown] Andor Molnar <andor@cloudera.com> uid [ unknown] Andor Molnár <andor@apache.org> sub rsa4096 2018-06-19 [E] #進行導出公鑰 root@master1:~/Dockerfile/zookeeper# gpg -a -o KEYS --export 3F7A1D16FA4217B1DC75E1C9FFE35B7F15DFA1BAroot@master1:~/Dockerfile/zookeeper# cat Dockerfile FROM 10.0.0.104/baseimages/slim_java:8 ENV ZK_VERSION 3.4.14 ADD repositories /etc/apk/repositories COPY zookeeper-3.4.14.tar.gz /tmp/zk.tgz COPY zookeeper-3.4.14.tar.gz.asc /tmp/zk.tgz.asc COPY KEYS /tmp/KEYS RUN apk add --no-cache --virtual .build-deps \ca-certificates \gnupg \tar \wget && \apk add --no-cache \bash && \export GNUPGHOME="$(mktemp -d)" && \gpg -q --batch --import /tmp/KEYS && \gpg -q --batch --no-auto-key-retrieve --verify /tmp/zk.tgz.asc /tmp/zk.tgz && \mkdir -p /zookeeper/data /zookeeper/wal /zookeeper/log && \tar -x -C /zookeeper --strip-components=1 --no-same-owner -f /tmp/zk.tgz && \cd /zookeeper && \cp dist-maven/zookeeper-${ZK_VERSION}.jar . && \rm -rf \*.txt \*.xml \bin/README.txt \bin/*.cmd \conf/* \contrib \dist-maven \docs \lib/*.txt \lib/cobertura \lib/jdiff \recipes \src \zookeeper-*.asc \zookeeper-*.md5 \zookeeper-*.sha1 && \apk del .build-deps && \rm -rf /tmp/* "$GNUPGHOME" COPY zoo.cfg /zookeeper/conf/zoo.cfg COPY log4j.properties /zookeeper/conf/log4j.properties COPY zkReady.sh /zookeeper/bin/zkReady.sh COPY entrypoint.sh / ENV PATH=/zookeeper/bin:${PATH} \ZOO_LOG_DIR=/zookeeper/log \ZOO_LOG4J_PROP="INFO, CONSOLE, ROLLINGFILE" \JMXPORT=9010 ENTRYPOINT [ "/entrypoint.sh" ] CMD [ "zkServer.sh", "start-foreground" ] EXPOSE 2181 2888 3888 9010root@master1:~/Dockerfile/zookeeper# cat build.sh #!/bin/bash imagename="10.0.0.104/baseimages/zookeeper:v1" docker build -t "$imagename" . sleep 1 docker push "$imagename"#開始編譯生成鏡像,進行上傳harbor root@master1:~/Dockerfile/zookeeper# sh build.sh

3.1.2 測試zookeeper鏡像

root@master1:~/Dockerfile/zookeeper# docker run -it --rm 10.0.0.104/baseimages/zookeeper:v1 ZooKeeper JMX enabled by default ZooKeeper remote JMX Port set to 9010 ZooKeeper remote JMX authenticate set to false ZooKeeper remote JMX ssl set to false ZooKeeper remote JMX log4j set to true Using config: /zookeeper/bin/../conf/zoo.cfg log4j:ERROR setFile(null,true) call failed. java.io.FileNotFoundException: /zookeeper/log (Is a directory)at java.io.FileOutputStream.open0(Native Method)at java.io.FileOutputStream.open(FileOutputStream.java:270)at java.io.FileOutputStream.<init>(FileOutputStream.java:213)at java.io.FileOutputStream.<init>(FileOutputStream.java:133)at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)at org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:207)at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:172)at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:104)at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:842)at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:768)at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:648)at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:514)at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:580)at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:526)at org.apache.log4j.LogManager.<clinit>(LogManager.java:127)at org.slf4j.impl.Log4jLoggerFactory.<init>(Log4jLoggerFactory.java:66)at org.slf4j.impl.StaticLoggerBinder.<init>(StaticLoggerBinder.java:72)at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:45)at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383)at org.apache.zookeeper.server.quorum.QuorumPeerMain.<clinit>(QuorumPeerMain.java:67) 2021-11-19 14:45:57,568 [myid:] - INFO [main:QuorumPeerConfig@136] - Reading configuration from: /zookeeper/bin/../conf/zoo.cfg 2021-11-19 14:45:57,576 [myid:] - INFO [main:DatadirCleanupManager@78] - autopurge.snapRetainCount set to 3 2021-11-19 14:45:57,576 [myid:] - INFO [main:DatadirCleanupManager@79] - autopurge.purgeInterval set to 1 2021-11-19 14:45:57,580 [myid:] - WARN [main:QuorumPeerMain@116] - Either no config or no quorum defined in config, running in standalone mode 2021-11-19 14:45:57,598 [myid:] - INFO [PurgeTask:DatadirCleanupManager$PurgeTask@138] - Purge task started. 2021-11-19 14:45:57,602 [myid:] - INFO [main:QuorumPeerConfig@136] - Reading configuration from: /zookeeper/bin/../conf/zoo.cfg 2021-11-19 14:45:57,604 [myid:] - INFO [main:ZooKeeperServerMain@98] - Starting server 2021-11-19 14:45:57,626 [myid:] - INFO [main:Environment@100] - Server environment:zookeeper.version=3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT 2021-11-19 14:45:57,627 [myid:] - INFO [main:Environment@100] - Server environment:host.name=060cc2930585 2021-11-19 14:45:57,628 [myid:] - INFO [main:Environment@100] - Server environment:java.version=1.8.0_144 2021-11-19 14:45:57,628 [myid:] - INFO [main:Environment@100] - Server environment:java.vendor=Oracle Corporation 2021-11-19 14:45:57,628 [myid:] - INFO [main:Environment@100] - Server environment:java.home=/usr/lib/jvm/java-8-oracle 2021-11-19 14:45:57,628 [myid:] - INFO [main:Environment@100] - Server environment:java.class.path=/zookeeper/bin/../zookeeper-server/target/classes:/zookeeper/bin/../build/classes:/zookeeper/bin/../zookeeper-server/target/lib/*.jar:/zookeeper/bin/../build/lib/*.jar:/zookeeper/bin/../lib/slf4j-log4j12-1.7.25.jar:/zookeeper/bin/../lib/slf4j-api-1.7.25.jar:/zookeeper/bin/../lib/netty-3.10.6.Final.jar:/zookeeper/bin/../lib/log4j-1.2.17.jar:/zookeeper/bin/../lib/jline-0.9.94.jar:/zookeeper/bin/../lib/audience-annotations-0.5.0.jar:/zookeeper/bin/../zookeeper-3.4.14.jar:/zookeeper/bin/../zookeeper-server/src/main/resources/lib/*.jar:/zookeeper/bin/../conf: 2021-11-19 14:45:57,628 [myid:] - INFO [main:Environment@100] - Server environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib 2021-11-19 14:45:57,629 [myid:] - INFO [main:Environment@100] - Server environment:java.io.tmpdir=/tmp 2021-11-19 14:45:57,629 [myid:] - INFO [main:Environment@100] - Server environment:java.compiler=<NA> 2021-11-19 14:45:57,634 [myid:] - INFO [main:Environment@100] - Server environment:os.name=Linux 2021-11-19 14:45:57,634 [myid:] - INFO [main:Environment@100] - Server environment:os.arch=amd64 2021-11-19 14:45:57,634 [myid:] - INFO [main:Environment@100] - Server environment:os.version=5.4.0-90-generic 2021-11-19 14:45:57,634 [myid:] - INFO [main:Environment@100] - Server environment:user.name=root 2021-11-19 14:45:57,635 [myid:] - INFO [main:Environment@100] - Server environment:user.home=/root 2021-11-19 14:45:57,635 [myid:] - INFO [main:Environment@100] - Server environment:user.dir=/zookeeper 2021-11-19 14:45:57,627 [myid:] - INFO [PurgeTask:DatadirCleanupManager$PurgeTask@144] - Purge task completed. 2021-11-19 14:45:57,648 [myid:] - INFO [main:ZooKeeperServer@836] - tickTime set to 2000 2021-11-19 14:45:57,648 [myid:] - INFO [main:ZooKeeperServer@845] - minSessionTimeout set to -1 2021-11-19 14:45:57,649 [myid:] - INFO [main:ZooKeeperServer@854] - maxSessionTimeout set to -1 2021-11-19 14:45:57,668 [myid:] - INFO [main:ServerCnxnFactory@117] - Using org.apache.zookeeper.server.NIOServerCnxnFactory as server connection factory 2021-11-19 14:45:57,681 [myid:] - INFO [main:NIOServerCnxnFactory@89] - binding to port 0.0.0.0/0.0.0.0:2181

成功,沒什么報錯

3.1.3 創(chuàng)建pv和pvc

要提前在nfs-server機器上面創(chuàng)建zookeeper目錄

root@haproxy1:~# mkdir /data/k8sdata/zookeeper-data-{1..3}

進行pv和pvc的創(chuàng)建

root@master1:~/yaml/zookeeper# vim zk-pv.yaml apiVersion: v1 kind: PersistentVolume metadata:name: zookeeper-datadir-pv-1 spec:capacity:storage: 2GiaccessModes:- ReadWriteOncenfs:server: 10.0.0.109path: /data/k8sdata/zookeeper-data-1--- apiVersion: v1 kind: PersistentVolume metadata:name: zookeeper-datadir-pv-2 spec:capacity:storage: 2GiaccessModes:- ReadWriteOncenfs:server: 10.0.0.109path: /data/k8sdata/zookeeper-data-1--- apiVersion: v1 kind: PersistentVolume metadata:name: zookeeper-datadir-pv-3 spec:capacity:storage: 2GiaccessModes:- ReadWriteOncenfs:server: 10.0.0.109path: /data/k8sdata/zookeeper-data-1root@master1:~/yaml/zookeeper# vim zk-pvc.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata:name: zookeeper-datadir-pvc-1 spec:accessModes:- ReadWriteOncevolumeName: zookeeper-datadir-pv-1resources:requests:storage: 2Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata:name: zookeeper-datadir-pvc-2 spec:accessModes:- ReadWriteOncevolumeName: zookeeper-datadir-pv-2resources:requests:storage: 2Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata:name: zookeeper-datadir-pvc-3 spec:accessModes:- ReadWriteOncevolumeName: zookeeper-datadir-pv-3resources:requests:storage: 2Giroot@master1:~/yaml/zookeeper# kubectl apply -f zk-pv.yaml persistentvolume/zookeeper-datadir-pv-1 created persistentvolume/zookeeper-datadir-pv-2 created persistentvolume/zookeeper-datadir-pv-3 created root@master1:~/yaml/zookeeper# kubectl apply -f zk-pvc.yaml persistentvolumeclaim/zookeeper-datadir-pvc-1 created persistentvolumeclaim/zookeeper-datadir-pvc-2 created persistentvolumeclaim/zookeeper-datadir-pvc-3 createdroot@master1:~/yaml/zookeeper# kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE zookeeper-datadir-pvc-1 Bound zookeeper-datadir-pv-1 2Gi RWO 90s zookeeper-datadir-pvc-2 Bound zookeeper-datadir-pv-2 2Gi RWO 89s zookeeper-datadir-pvc-3 Bound zookeeper-datadir-pv-3 2Gi RWO 89s

3.1.4 創(chuàng)建zookeeper集群

root@master1:~/yaml/zookeeper# vim zk-deploy.yaml kind: Deployment apiVersion: apps/v1 metadata:name: zookeeper1 spec:replicas: 1selector:matchLabels:app: zookeepertemplate:metadata:labels:app: zookeeperserver-id: "1"spec:containers:- name: serverimage: 10.0.0.104/baseimages/zookeeper:v1imagePullPolicy: Alwaysenv:- name: MYIDvalue: "1"- name: SERVERSvalue: "zookeeper1,zookeeper2,zookeeper3"- name: JVMFLAGSvalue: "-Xmx2G"ports:- containerPort: 2181- containerPort: 2888- containerPort: 3888volumeMounts:- mountPath: "/zookeeper/data"name: zookeeper-datadir-pvc-1 volumes:- name: zookeeper-datadir-pvc-1 persistentVolumeClaim:claimName: zookeeper-datadir-pvc-1 --- kind: Deployment apiVersion: apps/v1 metadata:name: zookeeper2 spec:replicas: 1selector:matchLabels:app: zookeepertemplate:metadata:labels:app: zookeeperserver-id: "2"spec:containers:- name: serverimage: 10.0.0.104/baseimages/zookeeper:v1 imagePullPolicy: Alwaysenv:- name: MYIDvalue: "2"- name: SERVERSvalue: "zookeeper1,zookeeper2,zookeeper3"- name: JVMFLAGSvalue: "-Xmx2G"ports:- containerPort: 2181- containerPort: 2888- containerPort: 3888volumeMounts:- mountPath: "/zookeeper/data"name: zookeeper-datadir-pvc-2 volumes:- name: zookeeper-datadir-pvc-2persistentVolumeClaim:claimName: zookeeper-datadir-pvc-2 --- kind: Deployment apiVersion: apps/v1 metadata:name: zookeeper3 spec:replicas: 1selector:matchLabels:app: zookeepertemplate:metadata:labels:app: zookeeperserver-id: "3"spec:containers:- name: serverimage: 10.0.0.104/baseimages/zookeeper:v1imagePullPolicy: Alwaysenv:- name: MYIDvalue: "3"- name: SERVERSvalue: "zookeeper1,zookeeper2,zookeeper3"- name: JVMFLAGSvalue: "-Xmx2G"ports:- containerPort: 2181- containerPort: 2888- containerPort: 3888volumeMounts:- mountPath: "/zookeeper/data"name: zookeeper-datadir-pvc-3volumes:- name: zookeeper-datadir-pvc-3persistentVolumeClaim:claimName: zookeeper-datadir-pvc-3--- apiVersion: v1 kind: Service metadata:name: zookeeper spec:ports:- name: clientport: 2181selector:app: zookeeper --- apiVersion: v1 kind: Service metadata:name: zookeeper1 spec:type: NodePort ports:- name: clientport: 2181nodePort: 42181- name: followersport: 2888- name: electionport: 3888selector:app: zookeeperserver-id: "1" --- apiVersion: v1 kind: Service metadata:name: zookeeper2 spec:type: NodePort ports:- name: clientport: 2181nodePort: 42182- name: followersport: 2888- name: electionport: 3888selector:app: zookeeperserver-id: "2" --- apiVersion: v1 kind: Service metadata:name: zookeeper3 spec:type: NodePort ports:- name: clientport: 2181nodePort: 42183- name: followersport: 2888- name: electionport: 3888selector:app: zookeeperserver-id: "3"root@master1:~/yaml/zookeeper# kubectl apply -f zk-deploy.yaml root@master1:~/yaml/zookeeper# kubectl get pod NAME READY STATUS RESTARTS AGE zookeeper1-8484c8b5f5-q6fzl 1/1 Running 0 117s zookeeper2-794b6d6fcb-98wjb 1/1 Running 0 117s zookeeper3-7b867f89bf-7bl29 1/1 Running 0 117s

驗證共享存儲id文件是否唯一

在存儲上 root@haproxy1:/data/k8sdata# cat zookeeper-data-1/ myid version-2/ root@haproxy1:/data/k8sdata# cat zookeeper-data-1/myid 1 root@haproxy1:/data/k8sdata# cat zookeeper-data-2/myid 2 root@haproxy1:/data/k8sdata# cat zookeeper-data-3/myid 3 可以在任一zookeeper查看狀態(tài) root@master1:~/yaml/zookeeper# kubectl exec -it zookeeper1-8484c8b5f5-q6fzl bash bash-4.3# /zookeeper/bin/zkServer.sh status ZooKeeper JMX enabled by default ZooKeeper remote JMX Port set to 9010 ZooKeeper remote JMX authenticate set to false ZooKeeper remote JMX ssl set to false ZooKeeper remote JMX log4j set to true Using config: /zookeeper/bin/../conf/zoo.cfg Mode: leader

3.2 自定義鏡像運行nginx與tomcat

3.2.1制作nginx鏡像

準備運行腳本 root@master1:~/scripts/Dockerfile/nginx# cat run.sh #!/bin/bash service nginx start 準備配置文件 root@master1:~/scripts/Dockerfile/nginx# grep -v "#|^$" nginx.conf worker_processes 1; events {worker_connections 1024; } http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;upstream tomcat_server{server tomcat-svc.test.local:80;}server {listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location / {root html;index index.html index.htm;}location /webapp {root html;index index.html index.htm;} location /myapp {proxy_pass http://10.0.0.101:8080;proxy_set_header Host $host;proxy_set_header X_forwarded_For $proxy_add_x_forwarded_for;proxy_set_header X_Real-IP $remote_addr}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}} }#編寫Dockerfile tail -f /etc/hostsroot@master1:~/scripts/Dockerfile/nginx# cat Dockerfile FROM nginx:latestCOPY nginx.conf /usr/local/ngin/conf/ ADD run.sh /scripts/run.shEXPOSE 80 443CMD [ "/scripts/run.sh" ]#進行編譯到harbor倉庫 root@master1:~/scripts/Dockerfile/nginx# cat run-nginx.sh #!/bin/bash docker build -t 10.0.0.104/baseimages/nginx-base:v1.8.0 . sleep 1 docker push 10.0.0.104/baseimages/nginx-base:v1.8.0 root@master1:~/scripts/Dockerfile/nginx# bash run-nginx.sh

3.2.2制作tomcat鏡像

準備運行腳本 root@master1:~/scripts/Dockerfile/tomcat# cat run.sh #!/bin/bash /usr/local/tomcat/bin/catalina.sh start tail -f /etc/hosts #編寫Dockerfile root@master1:~/scripts/Dockerfile/tomcat# cat Dockerfile FROM 10.0.0.104/baseimages/jdk-base:v17 ADD apache-tomcat-9.0.54.tar.gz /usr/local/src RUN ln -sv /usr/local/src/apache-tomcat-9.0.54 /usr/local/tomcat && mkdir /usr/local/jdk/jre/bin -p && ln -sv /usr/local/jdk/bin/java /usr/local/jdk/jre/bin/java ADD app.tar.gz /usr/local/tomcat/webapp/test ADD run.sh /usr/local/tomcat/bin/run.shEXPOSE 8080 443CMD [ "/usr/local/tomcat/bin/run.sh" ]#進行編譯到harbor倉庫 root@master1:~/scripts/Dockerfile/tomcat# cat run-tomcat.sh #!/bin/bash docker build -t 10.0.0.104/baseimages/tomcat-base:v9.0.54 . sleep 1 docker push 10.0.0.104/baseimages/tomcat-base:v9.0.54 #進行編譯 root@master1:~/scripts/Dockerfile/tomcat# bash run-tomcat.sh

3.2.3 使用k8s運行nginx

#運行nginx root@master1:~/yaml/nginx-tomcat# cat nginx.yaml apiVersion: apps/v1 kind: Deployment metadata:name: nginxnamespace: testlabels:app: nginx spec:selector:matchLabels:app: nginxreplicas: 1template:metadata:labels:app: nginxspec:# initContainers:# Init containers are exactly like regular containers, except:# - Init containers always run to completion.# - Each init container must complete successfully before the next one starts.containers:- name: nginximage: 10.0.0.104/baseimages/nginx-base:v1.8.0resources:requests:cpu: 100mmemory: 100Milimits:cpu: 100mmemory: 100Miports:- containerPort: 80name: nginxvolumeMounts:- name: localtimemountPath: /etc/localtime- name: nginx-staticmountPath: /usr/share/nginx/html/readOnly: falsevolumes:- name: localtimehostPath:path: /usr/share/zoneinfo/Asia/Shanghai- name: nginx-static #進行nfs掛載,掛載前要先在對應的nfs server上面進行nfs server的安裝nfs:server: 10.0.0.111 path: /data/nginx/restartPolicy: Always --- apiVersion: v1 kind: Service metadata:name: nginx-svcnamespace: test spec:selector:app: nginxtype: NodePortports:- name: nginx-svcprotocol: TCPport: 85targetPort: 80# If you set the `spec.type` field to `NodePort` and you want a specific port number,# you can specify a value in the `spec.ports[*].nodePort` field.nodePort: 30010 root@master1:~/yaml/nginx-tomcat# kubectl apply -f nginx.yaml

3.2.4 使用k8s運行通tomcat

root@master1:~/yaml/nginx-tomcat# cat tomcat.yaml apiVersion: apps/v1 kind: Deployment metadata:name: tomcat-deploynamespace: testlabels:app: tomcat-deploy spec:selector:matchLabels:app: tomcat-deployreplicas: 1template:metadata:labels:app: tomcat-deployspec:containers:- name: tomcat-deployimage: 10.0.0.104/baseimages/tomcat-base:v9.0.54ports:- containerPort: 8080name: tomcat-svcvolumeMounts:- name: localtimemountPath: /etc/localtime- name: tomcat-htmlmountPath: /usr/local/tomcat/webapp/volumes:- name: localtimehostPath:path: /usr/share/zoneinfo/Asia/Shanghai- name: tomcat-htmlnfs:server: 10.0.0.111path: /data/tomcatrestartPolicy: Always---apiVersion: v1 kind: Service metadata:name: tomcat-svcnamespace: test spec:selector:app: tomcat-deploytype: NodePortports:- name: tomcat-svcprotocol: TCPport: 8081targetPort: 8080nodePort: 30004 root@master1:~/yaml/nginx-tomcat# kubectl apply -f tomcat.yaml

五、k8s結合ceph實現(xiàn)數(shù)據(jù)的持久化和共享

5.1 rbd結合k8s提供存儲卷及動態(tài)存儲卷使用

讓k8s中的pod可以訪問ceph中的rbd提供的鏡像作為存儲設備,需要在ceph創(chuàng)建rbd并且讓k8s node節(jié)點能夠通過ceph認證

5.1.1 創(chuàng)建初始化rbd

#創(chuàng)建存儲池 root@ceph-deploy:~# ceph osd pool create shijie-rbd-pool1 32 32 pool 'shijie-rbd-pool1' created root@ceph-deploy:~# ceph osd pool ls mypool myrbd1 shijie-rbd-pool1#存儲池啟用rbd root@ceph-deploy:~# ceph osd pool application enable shijie-rbd-pool1 rbd enabled application 'rbd' on pool 'shijie-rbd-pool1'#初始化rbd root@ceph-deploy:~# rbd pool init -p shijie-rbd-pool1

5.1.2 創(chuàng)建img鏡像

root@ceph-deploy:~# rbd create shijie-img-img1 --size 3G --pool shijie-rbd-pool1 --image-format 2 --image-feature layering root@ceph-deploy:~# rbd ls --pool shijie-rbd-pool1 shijie-img-img1 root@ceph-deploy:~# rbd --image shijie-img-img1 --pool shijie-rbd-pool1 info rbd image 'shijie-img-img1':size 3GiB in 768 objectsorder 22 (4MiB objects)block_name_prefix: rbd_data.375c6b8b4567format: 2features: layeringflags: create_timestamp: Wed Oct 27 00:40:41 2021

5.1.3 安裝ceph-common

在所有master和node都安裝上ceph-common

#更新源 wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add - sudo apt-add-repository 'deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific/ focal main' $sudo apt updateroot@master1:~# apt install ceph-common -y

5.1.4 創(chuàng)建ceph普通用戶與授權

root@ceph-deploy:~# ceph auth get-or-create client.test-shijie mon 'allow r' osd 'allow * pool=shijie-rbd-pool1' [client.test-shijie]key = AQAjCXlhxg6mHRAABELoPtsB0vrQipUGfRLO9g== 驗證用戶 root@ceph-deploy:~# ceph auth get client.test-shijie exported keyring for client.test-shijie [client.test-shijie]key = AQAjCXlhxg6mHRAABELoPtsB0vrQipUGfRLO9g==caps mon = "allow r"caps osd = "allow * pool=shijie-rbd-pool1"導出用戶信息到keyring文件 root@ceph-deploy:~/ceph-cluster# ceph auth get client.test-shijie -o ceph.client.test-shijie.keyring把ceph.conf和keyring文件拷貝到master和node root@ceph-deploy:~/ceph-cluster# scp /etc/ceph/ceph.conf ceph.client.test-shijie.keyring root@10.0.0.101:/etc/ceph/ root@ceph-deploy:~/ceph-cluster# scp /etc/ceph/ceph.conf ceph.client.test-shijie.keyring root@10.0.0.102:/etc/ceph/ root@ceph-deploy:~/ceph-cluster# scp /etc/ceph/ceph.conf ceph.client.test-shijie.keyring root@10.0.0.103:/etc/ceph/ root@ceph-deploy:~/ceph-cluster# scp /etc/ceph/ceph.conf ceph.client.test-shijie.keyring root@10.0.0.111:/etc/ceph/ root@ceph-deploy:~/ceph-cluster# scp /etc/ceph/ceph.conf ceph.client.test-shijie.keyring root@10.0.0.112:/etc/ceph/ root@ceph-deploy:~/ceph-cluster# scp /etc/ceph/ceph.conf ceph.client.test-shijie.keyring root@10.0.0.113:/etc/ceph/#進行驗證用戶 root@node1:~# ceph --user test-shijie -scluster:id: 7e77062f-814b-4782-ba3d-df00c48eafe6health: HEALTH_WARNapplication not enabled on 1 pool(s)services:mon: 3 daemons, quorum ceph-node1,ceph-node2,ceph-node3mgr: ceph-node1(active), standbys: ceph-node2osd: 9 osds: 9 up, 9 indata:pools: 3 pools, 128 pgsobjects: 11 objects, 670KiBusage: 9.07GiB used, 440GiB / 449GiB availpgs: 128 active+clean#驗證鏡像的訪問權限 root@node1:~# rbd --id test-shijie ls --pool=shijie-rbd-pool1 shijie-img-img1

5.1.5 k8s節(jié)點配置主機名解析

master和node

root@master1:~# vim /etc/hosts 10.0.0.91 ceph-deploy.example.local ceph-deploy 10.0.0.92 ceph-node1.example.local ceph-node1 10.0.0.93 ceph-node2.example.local ceph-node2 10.0.0.94 ceph-node3.example.local ceph-node3

5.1.6 通過keyring文件掛載rbd

基于ceph提供的rbd實現(xiàn)存儲卷的動態(tài)提供,由兩種實現(xiàn)方式,一是通過宿主機的keyring文件掛載rbd,另外一種是通過將keyring中的key定義為k8s中的secret,然后pod通過srcret掛載rbd

root@master1:~/yaml/20211010/ceph-case# cat case2-nginx-keyring.yaml apiVersion: apps/v1 kind: Deployment metadata:name: nginx-deployment spec:replicas: 1selector:matchLabels: #rs or deploymentapp: ng-deploy-80template:metadata:labels:app: ng-deploy-80spec:containers:- name: ng-deploy-80image: nginxports:- containerPort: 80volumeMounts:- name: rbd-data1mountPath: /datavolumes:- name: rbd-data1rbd:monitors:- '10.0.0.92:6789'- '10.0.0.93:6789'- '10.0.0.94:6789'pool: shijie-rbd-pool1image: shijie-img-img1fsType: ext4readOnly: falseuser: test-shijiekeyring: /etc/ceph/ceph.client.test-shijie.keyringroot@master1:~/yaml/20211010/ceph-case# kubectl apply -f case2-nginx-keyring.yaml#進行驗證掛載 root@master1:~/yaml/20211010/ceph-case# kubectl exec -it deploy/nginx-deployment sh # df -h|grep rbd /dev/rbd0 2.9G 9.1M 2.9G 1% /data # echo "123456" > /data/test.txt

5.1.7 通過secret掛載rbd

#準備好secret root@master1:~# cat /etc/ceph/ceph.client.test-shijie.keyring [client.test-shijie]key = AQAjCXlhxg6mHRAABELoPtsB0vrQipUGfRLO9g== #要使用到caps mon = "allow r"caps osd = "allow * pool=shijie-rbd-pool1"#進行base64進行加密獲取key root@master1:~# echo AQAjCXlhxg6mHRAABELoPtsB0vrQipUGfRLO9g== |base64#準備secret的配置文件生成secretRef root@master1:~/yaml/20211010/ceph-case# cat case3-secret-client-shijie.yaml apiVersion: v1 kind: Secret metadata:name: ceph-secret-test-shijie type: "kubernetes.io/rbd" data:key: QVFBakNYbGh4ZzZtSFJBQUJFTG9QdHNCMHZyUWlwVUdmUkxPOWc9PQo= #就是剛才生成的加密后#生成secretRef root@master1:~/yaml/20211010/ceph-case# kubectl apply -f case3-secret-client-shijie.yaml準備好deploy的配置文件 root@master1:~/yaml/20211010/ceph-case# cat case4-nginx-secret.yaml apiVersion: apps/v1 kind: Deployment metadata:name: nginx-deployment spec:replicas: 1selector:matchLabels: #rs or deploymentapp: ng-deploy-80template:metadata:labels:app: ng-deploy-80spec:containers:- name: ng-deploy-80image: nginxports:- containerPort: 80volumeMounts:- name: rbd-data1mountPath: /datavolumes:- name: rbd-data1rbd:monitors:- '10.0.0.92:6789'- '10.0.0.93:6789'- '10.0.0.94:6789'pool: shijie-rbd-pool1image: shijie-img-img1fsType: ext4readOnly: falseuser: test-shijiesecretRef:name: ceph-secret-test-shijie #生成的秘鑰文件#進行驗證 root@master1:~/yaml/20211010/ceph-case# kubectl get pod NAME READY STATUS RESTARTS AGE net-test1 1/1 Running 4 22d net-test3 1/1 Running 4 22d nginx-deployment-6f874c88dc-mmlsf 1/1 Running 0 6m11s # df -h|grep rbd /dev/rbd0 2.9G 9.1M 2.9G 1% /data # ls /data lost+found test.txt

5.1.8 通過StorageClass掛載rbd

獲取admin的key root@ceph-deploy:~/ceph-cluster# cat ceph.client.admin.keyring [client.admin]key = AQDkindhXMU6HxAA2wOghbO8vNRjhF5Z2ZM4Yg==#進行base64加密 root@ceph-deploy:~/ceph-cluster# echo AQDkindhXMU6HxAA2wOghbO8vNRjhF5Z2ZM4Yg== | base64 QVFEa2luZGhYTVU2SHhBQTJ3T2doYk84dk5SamhGNVoyWk00WWc9PQo=#進行生成admin的Secret root@master1:~/yaml/20211010/ceph-case# cat case5-secret-admin.yaml apiVersion: v1 kind: Secret metadata:name: ceph-secret-admin type: "kubernetes.io/rbd" data:key: QVFEa2luZGhYTVU2SHhBQTJ3T2doYk84dk5SamhGNVoyWk00WWc9PQo= #base64生成的keyroot@master1:~/yaml/20211010/ceph-case# kubectl apply -f case5-secret-admin.yaml secret/ceph-secret-admin created#進行驗證 root@master1:~/yaml/20211010/ceph-case# kubectl get secret NAME TYPE DATA AGE ceph-secret-admin kubernetes.io/rbd 1 31s default-token-bbngc kubernetes.io/service-account-token 3 22d#創(chuàng)建一個普通用戶 root@master1:~/yaml/20211010/ceph-case# kubectl apply -f case3-secret-client-shijie.yaml secret/ceph-secret-test-shijie created root@master1:~/yaml/20211010/ceph-case# kubectl get secret NAME TYPE DATA AGE ceph-secret-admin kubernetes.io/rbd 1 9m28s ceph-secret-test-shijie kubernetes.io/rbd 1 21s default-token-bbngc kubernetes.io/service-account-token 3 22d#創(chuàng)建存儲類 root@master1:~/yaml/20211010/ceph-case# cat case6-ceph-storage-class.yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata:name: ceph-storage-class-shijieannotations:storageclass.kubernetes.io/is-default-class: "true" #設置為默認存儲類 provisioner: kubernetes.io/rbd parameters:monitors: 10.0.0.92:6789,10.0.0.93:6789,10.0.0.94:6789adminId: adminadminSecretName: ceph-secret-adminadminSecretNamespace: default pool: shijie-rbd-pool1userId: test-shijieuserSecretName: ceph-secret-test-shijie root@master1:~/yaml/20211010/ceph-case# kubectl apply -f case6-ceph-storage-class.yaml storageclass.storage.k8s.io/ceph-storage-class-shijie created#進行驗證 root@master1:~/yaml/20211010/ceph-case# kubectl get storageclass NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE ceph-storage-class-shijie (default) kubernetes.io/rbd Delete Immediate false 4s#調用存儲類,創(chuàng)建pvc root@master1:~/yaml/20211010/ceph-case# cat case7-mysql-pvc.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata:name: mysql-data-pvc spec:accessModes:- ReadWriteOncestorageClassName: ceph-storage-class-shijie resources:requests:storage: '5Gi'root@master1:~/yaml/20211010/ceph-case# kubectl apply -f case7-mysql-pvc.yaml persistentvolumeclaim/mysql-data-pvc created#驗證查看 root@master1:~/yaml/20211010/ceph-case# kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE mysql-data-pvc Bound pvc-7704d1ac-d43c-4391-b4b6-25da14cb7d1b 5Gi RWO ceph-storage-class-shijie 3m31s#進行啟動mysql服務 root@master1:~/yaml/20211010/ceph-case# cat case8-mysql-single.yaml apiVersion: apps/v1 kind: Deployment metadata:name: mysql spec:selector:matchLabels:app: mysqlstrategy:type: Recreatetemplate:metadata:labels:app: mysqlspec:containers:- image: 10.0.0.104/baseimages/mysql:5.6.46 name: mysqlenv:# Use secret in real usage- name: MYSQL_ROOT_PASSWORDvalue: test123456ports:- containerPort: 3306name: mysqlvolumeMounts:- name: mysql-persistent-storagemountPath: /var/lib/mysqlvolumes:- name: mysql-persistent-storagepersistentVolumeClaim:claimName: mysql-data-pvc --- kind: Service apiVersion: v1 metadata:labels:app: mysql-service-label name: mysql-service spec:type: NodePortports:- name: httpport: 3306protocol: TCPtargetPort: 3306nodePort: 43306selector:app: mysqlroot@master1:~/yaml/20211010/ceph-case# kubectl apply -f case8-mysql-single.yaml deployment.apps/mysql created service/mysql-service unchanged#進行驗證 root@master1:~/yaml/20211010/ceph-case# kubectl exec -it deploy/mysql bash root@mysql-55f8f7d588-jzm5m:/# df -h Filesystem Size Used Avail Use% Mounted on overlay 19G 7.7G 11G 44% / tmpfs 64M 0 64M 0% /dev tmpfs 980M 0 980M 0% /sys/fs/cgroup /dev/mapper/ubuntu--vg-ubuntu--lv 19G 7.7G 11G 44% /etc/hosts shm 64M 0 64M 0% /dev/shm /dev/rbd0 4.9G 131M 4.8G 3% /var/lib/mysql #有的話證明成功 tmpfs 980M 12K 980M 1% /run/secrets/kubernetes.io/serviceaccount tmpfs 980M 0 980M 0% /proc/acpi tmpfs 980M 0 980M 0% /proc/scsi tmpfs 980M 0 980M 0% /sys/firmware

5.1.9 多節(jié)點掛載cephfs

要確保node下面有ceph admin的認證文件 root@ceph-deploy:~/ceph-cluster# scp ceph.client.admin.keyring 10.0.0.111:/etc/ceph/ root@10.0.0.111's password: ceph.client.admin.keyring 100% 63 26.0KB/s 00:00 root@ceph-deploy:~/ceph-cluster# scp ceph.client.admin.keyring 10.0.0.112:/etc/ceph/ root@10.0.0.112's password: ceph.client.admin.keyring 100% 63 59.1KB/s 00:00 root@ceph-deploy:~/ceph-cluster# scp ceph.client.admin.keyring 10.0.0.113:/etc/ceph/ root@10.0.0.113's password: ceph.client.admin.keyring root@master1:~/yaml/20211010/ceph-case# cat case9-nginx-cephfs.yaml apiVersion: apps/v1 kind: Deployment metadata:name: nginx-deployment spec:replicas: 3selector:matchLabels: #rs or deploymentapp: ng-deploy-80template:metadata:labels:app: ng-deploy-80spec:containers:- name: ng-deploy-80image: nginxports:- containerPort: 80volumeMounts:- name: test-staticdata-cephfs mountPath: /usr/share/nginx/html/ volumes:- name: test-staticdata-cephfscephfs:monitors:- '10.0.0.92:6789'- '10.0.0.93:6789'- '10.0.0.94:6789'path: /user: adminsecretRef:name: ceph-secret-adminroot@master1:~/yaml/20211010/ceph-case# kubectl apply -f case9-nginx-cephfs.yaml deployment.apps/nginx-deployment created#進行驗證 root@master1:~/yaml/20211010/ceph-case# kubectl exec -it nginx-deployment-5bf64679b6-2v8tv bash root@nginx-deployment-5bf64679b6-2v8tv:/# df -h Filesystem Size Used Avail Use% Mounted on 10.0.0.92:6789,10.0.0.93:6789,10.0.0.94:6789:/ 140G 0 140G 0% /usr/share/nginx/html

六、Pod狀態(tài)和探針

6.1 Pod 常見的狀態(tài)

  • Pending:掛起,我們在請求創(chuàng)建pod時,條件不滿足,調度沒有完成,沒有任何一個節(jié)點能滿足調度條件。已經創(chuàng)建了但是沒有適合它運行的節(jié)點叫做掛起,這其中也包含集群為容器創(chuàng)建網絡,或者下載鏡像的過程。

  • Running:Pod內所有的容器都已經被創(chuàng)建,且至少一個容器正在處于運行狀態(tài)、正在啟動狀態(tài)或者重啟狀態(tài)。

  • Succeeded:Pod中所以容器都執(zhí)行成功后退出,并且沒有處于重啟的容器。

  • Failed:Pod中所以容器都已退出,但是至少還有一個容器退出時為失敗狀態(tài)。

  • Unknown:未知狀態(tài),所謂pod是什么狀態(tài)是apiserver和運行在pod節(jié)點的kubelet進行通信獲取狀態(tài)信息的,如果節(jié)點之上的kubelet本身出故障,那么apiserver就連不上kubelet,得不到信息了,就會看Unknown

探針是由 kubelet 對容器執(zhí)行的定期診斷。要執(zhí)行診斷,kubelet 調用由容器實現(xiàn)的 Handler。有三種類型的處理程序:

  • ExecAction:在容器內執(zhí)行指定命令。如果命令退出時返回碼為 0 則認為診斷成功。
  • TCPSocketAction:對指定端口上的容器的 IP 地址進行 TCP 檢查。如果端口打開,則診斷被認為是成功的。
  • HTTPGetAction:對指定的端口和路徑上的容器的 IP 地址執(zhí)行 HTTP Get 請求。如果響應的狀態(tài)碼大于等于200 且小于 400,則診斷被認為是成功的

6.2 每次探測都將獲得以下三種結果之一:

成功:容器通過了診斷。
失敗:容器未通過診斷。
未知:診斷失敗,因此不會采取任何行動

6.3 Pod探針

6.3.1 Pod 兩種探針 livenessProbe和readinessProbe

  • livenessProbe(存活探針):指示容器是否正在運行。如果存活探測失敗,則 kubelet 會殺死容器,并且容器將受到其 重啟策略 的影響。如果容器不提供存活探針,則默認狀態(tài)為 Success ,livenessProbe用于控制是否重啟pod
  • readinessProbe(就緒探針):指示容器是否準備好服務請求。如果就緒探測失敗,端點控制器將從與 Pod 匹配的所有 Service 的端點中刪除該 Pod 的 IP 地址。初始延遲之前的就緒狀態(tài)默認為 Failure。如果容器不提供就緒探針,則默認狀態(tài)為 Success , readinessProbe用于控制pod是否添加到service

6.3.2 HTTP探針

用HTTP的OPTIONS:這個方法極少使用。它用于獲取當前URL所支持的方法。若請求成功,則它會在HTTP頭中包含一個名為“Allow”的頭,其中的值是所支持的方法,如“GET, POST”。這樣就能夠檢測出服務是否支持該方法繼而檢測存活

HTTP探針可以在 httpGet 上配置額外的字段:
host:連接使用的主機名,默認是 Pod 的 IP。也可以在 HTTP 頭中設置 “Host” 來代替。
scheme:用于設置連接主機的方式(HTTP 還是 HTTPS)。默認是 HTTP。
path:訪問 HTTP 服務的路徑。
httpHeaders:請求中自定義的 HTTP 頭。HTTP 頭字段允許重復。
port:訪問容器的端口號或者端口名。如果數(shù)字必須在 1 ~ 65535 之間。

案例:

root@master1:~/yaml/20211010/n56-yaml-20211010# cat nginx.yaml apiVersion: apps/v1 kind: Deployment metadata:name: nginx-deployment spec:replicas: 1selector:matchLabels: #rs or deploymentapp: ng-deploy-80#matchExpressions:# - {key: app, operator: In, values: [ng-deploy-80,ng-rs-81]}template:metadata:labels:app: ng-deploy-80spec:containers:- name: ng-deploy-80image: nginx:1.17.5 ports:- containerPort: 80#readinessProbe:livenessProbe:httpGet:#path: /monitor/monitor.htmlpath: /index.htmlport: 80initialDelaySeconds: 5periodSeconds: 3timeoutSeconds: 5successThreshold: 1failureThreshold: 3--- apiVersion: v1 kind: Service metadata:name: ng-deploy-80 spec:ports:- name: httpport: 81targetPort: 80nodePort: 40012protocol: TCPtype: NodePortselector:app: ng-deploy-80root@master1:~/yaml/20211010/n56-yaml-20211010# kubectl apply -f nginx.yaml deployment.apps/nginx-deployment created service/ng-deploy-80 created

6.3.3 TCP探針

如果僅需要檢查是否可以建立 TCP 連接,則可以指定 TCP 探針。如果建立 TCP 連接,則將 Pod 標記為運行狀況良好。對于不適合使用 HTTP 探針的 gRPC 或 FTP 服務器,TCP 探針可能會有用。

root@master1:~/yaml/20211010/n56-yaml-20211010# cat tcp.yaml apiVersion: apps/v1 kind: Deployment metadata:name: nginx-deployment spec:replicas: 1selector:matchLabels: #rs or deploymentapp: ng-deploy-80#matchExpressions:# - {key: app, operator: In, values: [ng-deploy-80,ng-rs-81]}template:metadata:labels:app: ng-deploy-80spec:containers:- name: ng-deploy-80image: nginx:1.17.5 ports:- containerPort: 80livenessProbe:tcpSocket:port: 80initialDelaySeconds: 5periodSeconds: 3timeoutSeconds: 5successThreshold: 1failureThreshold: 3--- apiVersion: v1 kind: Service metadata:name: ng-deploy-80 spec:ports:- name: httpport: 81targetPort: 80nodePort: 40012protocol: TCPtype: NodePortselector:app: ng-deploy-80 root@master1:~/yaml/20211010/n56-yaml-20211010# kubectl apply -f tcp.yaml deployment.apps/nginx-deployment configured service/ng-deploy-80 unchanged

6.3.2 ExecAction探針

可以基于指定命令對pod進行特定的狀態(tài)檢查

root@master1:~/yaml/20211010/n56-yaml-20211010# cat redis.yaml apiVersion: apps/v1 kind: Deployment metadata:name: redis-deployment spec:replicas: 1selector:matchLabels: #rs or deploymentapp: redis-deploy-6379#matchExpressions:# - {key: app, operator: In, values: [redis-deploy-6379,ng-rs-81]}template:metadata:labels:app: redis-deploy-6379spec:containers:- name: redis-deploy-6379image: redisports:- containerPort: 6379readinessProbe:exec:command:- /usr/local/bin/redis-cli- quitinitialDelaySeconds: 5periodSeconds: 3timeoutSeconds: 5successThreshold: 1failureThreshold: 3livenessProbe:exec:command:- /usr/local/bin/redis-cli- quitinitialDelaySeconds: 5periodSeconds: 3timeoutSeconds: 5successThreshold: 1failureThreshold: 3--- apiVersion: v1 kind: Service metadata:name: redis-deploy-6379 spec:ports:- name: httpport: 6379targetPort: 6379nodePort: 40016protocol: TCPtype: NodePortselector:app: redis-deploy-6379root@master1:~/yaml/20211010/n56-yaml-20211010# kubectl apply -f redis.yaml deployment.apps/redis-deployment created service/redis-deploy-6379 created

總結

以上是生活随笔為你收集整理的Kubernetes进阶使用(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

欧美久久九九 | 一区二区电影网 | 国内精品在线看 | 99热这里只有精品久久 | 国产精品99久久久久的智能播放 | 黄色av免费看 | 国产午夜免费视频 | 成年人在线观看 | 国产精品www | 亚洲精品99久久久久中文字幕 | 青青草国产精品 | 最近2019年日本中文免费字幕 | 日韩视频免费观看高清完整版在线 | 国产精品毛片久久久久久久久久99999999 | 国产视频久久久 | 欧美日韩高清一区 | 婷婷免费视频 | 免费看污在线观看 | av在线免费不卡 | 天天操天天射天天爽 | 天天干天天在线 | 国产传媒一区在线 | 久久九九视频 | 国产日韩一区在线 | 国产精品成人久久 | 日韩精品视频网站 | 啪啪小视频网站 | 日本黄色免费在线观看 | 国际精品久久久久 | 国产日韩精品一区二区在线观看播放 | 欧美日韩免费观看一区二区三区 | 色婷婷国产 | 爱爱av网 | 97超碰影视 | 免费a一级 | 国产精品永久在线 | 日韩精品一区二区在线观看视频 | 欧美一区成人 | 中文字幕一区在线观看视频 | 久久久精品国产一区二区 | 麻豆视频在线免费观看 | 免费a v在线| 三级动态视频在线观看 | 国产一级精品在线观看 | 波多野结衣久久资源 | 成人高清在线观看 | 狠狠的干 | 久久99国产精品免费 | 美女久久久 | 久久久激情网 | 精品一区 在线 | 亚洲国产精彩中文乱码av | 天天看天天干天天操 | 依人成人综合网 | 免费观看的av网站 | 久久亚洲私人国产精品 | 午夜精品一区二区三区在线视频 | 国内99视频 | 免费黄在线观看 | japanesexxxxfreehd乱熟| 69视频在线播放 | 亚洲精品国偷拍自产在线观看蜜桃 | 午夜av在线电影 | 国产精品区二区三区日本 | 欧美日韩国产高清视频 | 精品欧美一区二区三区久久久 | 九九九热精品免费视频观看网站 | 免费成人在线网站 | 超碰在线网| 欧美成人中文字幕 | 成人国产精品电影 | 国产成人精品一区二区 | 在线高清av| 精品久久久一区二区 | 在线免费国产视频 | 97色涩| 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 伊人久久婷婷 | 久久免费视频1 | 国产特级毛片aaaaaaa高清 | 国产在线播放一区二区 | www最近高清中文国语在线观看 | 国产精品a级 | 婷婷色中文 | 日产乱码一二三区别免费 | 成人免费在线电影 | 久久国产美女 | 手机看片午夜 | 一区二区三区免费在线观看 | 激情五月亚洲 | 免费在线色电影 | 亚洲免费在线观看视频 | 又大又硬又黄又爽视频在线观看 | 色网站视频 | www免费在线观看 | 久草网视频 | 精品国产乱码久久久久久天美 | 免费亚洲黄色 | 中文字幕xxxx | 2021av在线 | 日韩精品一区二区三区免费观看视频 | 伊人午夜视频 | av色综合网| 在线精品视频免费观看 | 色婷婷福利视频 | 激情深爱五月 | www视频在线免费观看 | 日韩精品免费一线在线观看 | 精品美女在线观看 | 久久精品视频在线观看 | 久久精品视频在线播放 | 天天摸夜夜添 | 国产精品久免费的黄网站 | 在线黄色av | 在线观看播放av | 天堂av高清 | 国产伦精品一区二区三区在线 | 久草久视频 | 久久少妇免费视频 | 二区视频在线观看 | 韩日电影在线 | 天天久久综合 | 欧美日本高清视频 | 在线视频国产区 | 综合网色 | 天天操天天吃 | 免费网址你懂的 | 播五月婷婷 | 婷婷六月天丁香 | 欧美激情综合色综合啪啪五月 | 午夜精品99久久免费 | 奇米影视777影音先锋 | 久久中文字幕导航 | 一区二区三区四区五区在线 | 一色屋精品视频在线观看 | 天天干夜夜爱 | 日韩大片免费在线观看 | 四虎小视频 | 国产一区二区三区视频在线 | 久久官网 | 日本女人逼 | 日韩欧美视频一区 | 成人在线播放网站 | 国产精品久久久久久久免费大片 | 久久久久国产精品一区 | 蜜臀av夜夜澡人人爽人人桃色 | 久久国产美女视频 | 亚洲一级特黄 | a色网站 | 婷婷激情久久 | 天海冀一区二区三区 | 午夜成人影视 | 成人三级网站在线观看 | 91伊人影院 | 激情综合网在线观看 | 精品国产亚洲在线 | 92av视频 | 五月婷在线视频 | 人人爽人人爽人人爽学生一级 | 在线观看日韩免费视频 | 狠狠操综合 | 国产精品女同一区二区三区久久夜 | 天天爱天天干天天爽 | 69精品 | 天天色天天干天天色 | 一级黄色片在线免费看 | 色综合久久五月 | 国产麻豆视频免费观看 | 顶级bbw搡bbbb搡bbbb | 99在线高清视频在线播放 | 在线观看色视频 | av在线影片 | 99久久精品视频免费 | 久久99亚洲网美利坚合众国 | 国模精品一区二区三区 | 亚洲伊人成综合网 | 日日夜夜中文字幕 | 成人动漫视频在线 | 日韩大陆欧美高清视频区 | 天天鲁一鲁摸一摸爽一爽 | 91av亚洲| 色综合 久久精品 | 亚洲午夜精品久久久 | 激情久久小说 | 蜜臀av性久久久久av蜜臀妖精 | av高清免费| 男女拍拍免费视频 | 久久久久久久久久网站 | 午夜a区 | 成人午夜黄色影院 | 国产精品毛片一区视频播不卡 | av电影不卡| 成人亚洲精品久久久久 | 黄色特级片| 成人免费在线网 | 天天爱天天射 | 国产在线中文字幕 | 成人影视免费看 | 欧美成人一区二区 | 日韩欧美在线观看一区二区三区 | 国产高清第一页 | 欧美日韩高清不卡 | 天天射成人 | 干狠狠 | 国产免费久久久久 | 999久久久精品视频 日韩高清www | 欧美日韩中文在线观看 | 天天做天天爱天天综合网 | 日本丶国产丶欧美色综合 | 日本中文字幕电影在线免费观看 | 国产综合久久 | 日本在线观看视频一区 | 一区二区三区视频网站 | 成人影音在线 | 91在线免费视频 | 91成人短视频在线观看 | 国产精品v a免费视频 | 日韩精品久久久久久久电影竹菊 | 午夜视频一区二区 | 91网址在线观看 | 色com | 日韩激情视频 | 深爱五月网 | 成人av观看 | 欧美日韩在线精品一区二区 | 日韩视频三区 | 日本黄色黄网站 | 青青河边草免费视频 | 黄毛片在线观看 | 亚洲国产成人精品在线观看 | 国产专区欧美专区 | 夜夜夜夜爽 | 精品视频在线看 | 波多野结衣综合网 | 久久99操| 日韩特黄一级欧美毛片特黄 | 伊甸园永久入口www 99热 精品在线 | 四虎国产精品免费 | 九九免费观看全部免费视频 | 91社区国产高清 | 成人综合婷婷国产精品久久免费 | 麻豆av电影 | 97超碰精品 | 成年人免费看的视频 | 精品中文字幕在线播放 | 国产va在线观看免费 | 久草亚洲视频 | 91在线看视频 | 麻豆系列在线观看 | 四虎4hu永久免费 | 免费观看视频黄 | 五月精品 | 91插插影库 | 免费看国产一级片 | 探花视频在线观看+在线播放 | 天天综合网久久 | 色爱区综合激月婷婷 | 91视频国产高清 | 在线观看视频黄色 | 国产又粗又硬又长又爽的视频 | 欧美性生活久久 | 午夜精品一区二区三区四区 | 日韩 精品 一区 国产 麻豆 | 亚洲高清av在线 | 日韩高清网站 | 免费日韩视 | 中文字幕久久精品 | 麻豆精品国产传媒 | 麻豆视频观看 | 久久高清国产视频 | 久久久久国产精品一区二区 | 久久视奸 | 亚洲乱亚洲乱亚洲 | 国产精品白丝jk白祙 | 成人免费一级 | 日韩视频中文字幕 | 亚洲四虎影院 | 国产清纯在线 | 国产日韩在线看 | 欧美福利片在线观看 | 免费视频二区 | 国产视频欧美视频 | 中文资源在线官网 | 国产91在线播放 | 亚洲精品在线观看的 | 免费亚洲精品 | 在线观看日韩精品视频 | 婷婷丁香狠狠爱 | 欧美一级片在线播放 | 久久情侣偷拍 | 国产福利精品一区二区 | 99久久夜色精品国产亚洲 | 黄色在线观看www | 久久99这里只有精品 | 欧美国产日韩一区二区三区 | 在线看黄色av| 久久理论片 | 日韩中文字幕亚洲一区二区va在线 | 美女免费视频黄 | av在线一二三区 | 久久久国产精品一区二区三区 | 91人人澡人人爽人人精品 | 91av超碰| 久久午夜色播影院免费高清 | 日本护士三级少妇三级999 | 国产91全国探花系列在线播放 | 九月婷婷色 | 综合久久综合久久 | 韩国精品在线观看 | 成人久久毛片 | 久久免费视频一区 | 久久电影网站中文字幕 | 日韩视频一区二区在线观看 | 91av电影在线 | 欧美日韩调教 | 亚洲国产精品成人av | 亚洲国产wwwccc36天堂 | 久久综合久色欧美综合狠狠 | 天天干天天插伊人网 | 综合久久久久久久 | 91免费国产在线观看 | 久久久影院一区二区三区 | 日韩欧美精品一区 | 国产精品手机在线 | 精品国产诱惑 | 91精彩在线视频 | 国产精品麻豆欧美日韩ww | 国产成人区| 色欧美成人精品a∨在线观看 | 天天干天天射天天爽 | 久久人人爽爽人人爽人人片av | 探花视频免费观看 | www99精品| 亚洲春色综合另类校园电影 | 伊人射 | 婷婷资源站 | 亚洲日韩中文字幕 | 91麻豆免费看 | 一区二区三区高清不卡 | 国产美女免费观看 | 成年人黄色在线观看 | 综合婷婷丁香 | 91视频成人免费 | 久av在线 | 天堂成人在线 | 精品欧美小视频在线观看 | 毛片.com| 国产蜜臀av| 亚洲精品毛片一级91精品 | 免费人成在线观看网站 | 园产精品久久久久久久7电影 | 色橹橹欧美在线观看视频高清 | 欧美一级爽 | 亚洲精品伦理在线 | 91在线播放综合 | 欧美资源在线观看 | 狠狠插狠狠操 | 99精品在线免费视频 | 青青网视频 | 亚洲国产精品久久久久 | 亚洲成人二区 | 日韩网站在线免费观看 | 国产69久久久欧美一级 | 久草热视频 | 国产精品理论片在线观看 | 久热久草 | 亚洲三级黄 | 91麻豆文化传媒在线观看 | 99久久久久成人国产免费 | 97人人人| 狠狠干夜夜操 | 久久免费视频在线观看 | 激情图片qvod| 久久av伊人| 一本之道乱码区 | 国产99久久九九精品 | 亚洲在线网址 | 97视频在线看 | 亚洲免费激情 | av免费观看网站 | av视屏在线| 欧美国产大片 | 最近中文字幕免费 | 夜夜操天天干 | 亚洲精品国偷自产在线91正片 | 操久久免费视频 | 婷婷在线免费观看 | 五月天国产| 国产看片 色| 午夜久操| 一区二区三区日韩视频在线观看 | 亚洲成a人片在线观看网站口工 | 人人射网站 | 亚洲欧洲精品一区 | 精品视频久久久久久 | 狠狠色丁香婷婷综合基地 | 制服丝袜在线 | 久亚洲 | 99九九热只有国产精品 | 国产韩国精品一区二区三区 | 亚洲精品在线观看视频 | 国产精品久久电影网 | 亚洲午夜久久久久久久久久久 | 精品成人久久 | 国产呻吟在线 | 国产精品2020 | 亚洲精品乱码久久久久久写真 | 日韩精品一区二区三区三炮视频 | 一级黄色av | 国产精品 欧美 日韩 | 99久久精品免费看国产麻豆 | 97国产情侣爱久久免费观看 | 国产男男gay做爰 | 99爱精品视频 | 国内外激情视频 | 色人久久 | 欧美资源| 日操操| 国产精品久久久久久久久蜜臀 | 国产精品久久久久久久久久久久午夜片 | 福利一区二区 | 中文av在线免费观看 | 免费黄在线观看 | av免费在线观看1 | 国产在线播放一区二区三区 | 亚洲视频在线播放 | 九九九在线观看视频 | 81精品国产乱码久久久久久 | 91色影院 | 国产专区一| 又色又爽又黄高潮的免费视频 | 日韩美女一级片 | www.日日操.com| 中文理论片 | 亚洲精品www久久久久久 | 91成人亚洲 | 国产精品久久久久永久免费 | 国产精品久久久久久久久久ktv | 在线观看av大片 | 婷婷在线不卡 | 天天做天天爱夜夜爽 | 国产一区二区三区在线免费观看 | 日韩av播放在线 | 久久久天天操 | 国产一区二区视频在线 | 九九久久影视 | 美女黄网站视频免费 | av观看免费在线 | 又黄又爽又湿又无遮挡的在线视频 | 欧美日韩视频 | 久久视频国产精品免费视频在线 | av天天草 | 99精品视频免费全部在线 | 99视频精品免费观看, | 黄污在线观看 | 高清av在线免费观看 | 久久另类小说 | 亚洲黄网址| 婷婷激情综合 | 亚洲综合黄色 | 国产成人精品在线 | www.久久色| 天天操天天操天天 | 欧美一级淫片videoshd | 国产一区观看 | 亚洲黑丝少妇 | 久久草网站 | 国产在线观看一区 | 九九热av| 午夜av在线播放 | 国产精品入口久久 | 在线观看国产www | 久久中文精品视频 | 天天操天天摸天天射 | 国产涩涩网站 | 成人午夜电影久久影院 | 国产韩国精品一区二区三区 | 香蕉视频网站在线观看 | 欧美性做爰猛烈叫床潮 | 亚洲精品国精品久久99热一 | 日韩欧美在线一区 | 岛国大片免费视频 | 国产精品美女久久久久久久久久久 | 精品国产一区二区三区在线观看 | 欧美在线视频一区二区三区 | 不卡日韩av | bbb搡bbb爽爽爽| 国产高清中文字幕 | 免费欧美精品 | 波多野结衣视频一区二区三区 | 超碰97在线资源 | 综合久久网 | 亚洲日本国产精品 | 亚洲色图色 | 欧美乱熟臀69xxxxxx | 国产高清av免费在线观看 | 日本精品中文字幕在线观看 | 国产九色视频在线观看 | 欧美一区免费在线观看 | 免费黄色网址大全 | 国产麻豆精品一区二区 | 亚洲欧美日韩不卡 | 亚洲成人动漫在线观看 | 一级黄色片在线观看 | 国产电影黄色av | 亚洲精选视频免费看 | 久精品视频 | 国产97碰免费视频 | 91久久电影 | 日韩精品中文字幕在线不卡尤物 | 亚一亚二国产专区 | 最新av电影网站 | 国产精品乱码一区二区视频 | 日韩久久精品一区二区 | 国产亚州av | 日日爽 | 国色天香第二季 | 日韩精品一区二区免费 | 天天躁天天操 | 天天干天天干天天操 | www.大网伊人 | h网站免费在线观看 | 免费看片网址 | 在线观看成人福利 | 天天射天天操天天干 | 免费h漫在线观看 | 99国内精品| 欧美成年人在线视频 | 国产高清视频免费最新在线 | 国产成人一区二区三区影院在线 | 在线观看一级视频 | 91免费网站在线观看 | 51久久成人国产精品麻豆 | 久久久久看片 | 在线国产福利 | 日本aaaa级毛片在线看 | 亚洲久久视频 | 天天干人人 | 天天玩天天干天天操 | 91精品国 | 亚洲激情视频在线 | 粉嫩av一区二区三区四区 | www欧美日韩 | 天天爱天天射天天干天天 | 国产aaa毛片 | 在线观看视频福利 | www.色婷婷.com| 国产成人精品一区二区三区在线观看 | 欧美一区二区三区激情视频 | 免费成人在线视频网站 | 免费看黄视频 | 午夜色站| 欧美精品久久久久久久久免 | 探花视频在线版播放免费观看 | 中文字幕丰满人伦在线 | 欧美性生活免费 | 日韩在线一二三区 | 天天爱天天射天天干天天 | 91av在线免费| 久草网站在线 | 中文字幕一区二区三区四区视频 | 免费观看午夜视频 | 激情综合网色播五月 | 中文不卡视频 | 超碰成人av | 在线观看视频在线观看 | 99在线免费观看 | 国产精品九九久久99视频 | 最新av在线网站 | 美女网站黄免费 | 日韩精品一区二区三区外面 | 久久免费视频1 | 高清久久久| 黄色国产高清 | 国产精品久久久久久久久久久免费 | 免费日韩电影 | 亚洲一二区精品 | 日韩一级电影在线 | 粉嫩一区二区三区粉嫩91 | 精品国产一区二区久久 | 狠狠的干狠狠的操 | 国产午夜精品一区二区三区欧美 | 日韩99热 | 成人免费大片黄在线播放 | 成人试看120秒 | 麻花传媒mv免费观看 | 久久九九影视网 | 久久久久久久久久久免费视频 | 五月综合激情婷婷 | 91丨九色丨高潮丰满 | 一区二区三区在线影院 | 黄色免费观看网址 | 狠狠狠的干 | 日韩av中文字幕在线免费观看 | av无限看| 中文字幕在线中文 | 日本大片免费观看在线 | 久久精品欧美一区二区三区麻豆 | 97av影院| 超碰在线观看av | 一本之道乱码区 | 国产精品国产三级国产专区53 | 久久久久99精品国产片 | 日韩欧美精品在线观看视频 | 久久久影院一区二区三区 | 国产网红在线观看 | 日韩欧在线 | 精品久久久一区二区 | 91日韩精品视频 | 国产网红在线观看 | 伊人视频 | 在线黄色国产电影 | 国产一区网| 91亚色视频| 国产在线精 | 成人欧美一区二区三区黑人麻豆 | 色综合久久悠悠 | 91九色网站 | www日日| 成人av片免费观看app下载 | 探花视频网站 | 中文字幕第一页在线视频 | www黄色 | 香蕉在线播放 | 久久久精华网 | 久久在线精品视频 | 久久久免费高清视频 | 国产偷v国产偷∨精品视频 在线草 | 久久人人爽人人爽人人片av软件 | 日本久久不卡视频 | 久久涩涩网站 | 亚洲日本精品视频 | 亚洲涩涩一区 | 特级西西人体444是什么意思 | 久久精品欧美一区 | 国产午夜小视频 | 精品久久久久国产 | 日日夜夜精品免费视频 | 免费三级a| 99视频导航 | 天天干,天天射,天天操,天天摸 | 玖玖在线视频观看 | 久久九九影视网 | 色婷婷久久久 | 久久国产精品免费一区 | 免费视频久久久久 | 97在线影视 | 色视频在线免费观看 | 久草影视在线观看 | 懂色av一区二区在线播放 | 日韩在线 一区二区 | 久草www| 成人小视频在线观看免费 | 免费亚洲片 | 国产一级在线免费观看 | 亚洲精品午夜一区人人爽 | 久久精品成人欧美大片古装 | 香蕉视频在线播放 | 日韩欧美精品免费 | 一区二区亚洲精品 | 中文字幕精品一区 | 国产大片黄色 | 亚洲视频电影在线 | 天天操天天摸天天爽 | 精品欧美一区二区在线观看 | 99热这里只有精品久久 | 男女啪啪网站 | 国产做aⅴ在线视频播放 | 日韩av快播电影网 | 91九色视频观看 | 成人午夜电影在线播放 | 欧美最猛性xxxxx免费 | 国产91免费观看 | av在线播放不卡 | 毛片99| 男女男视频 | 欧美在线视频一区二区三区 | 日本99干网 | 国产伦精品一区二区三区无广告 | 国产精品一区二区吃奶在线观看 | 三级黄色理论片 | 精品在线二区 | 亚洲自拍偷拍色图 | 国产1级毛片 | 天天操天天干天天插 | 一区二区三区视频网站 | 国产资源在线视频 | 婷婷开心久久网 | 视频一区在线播放 | 天天搞天天干天天色 | 久久撸在线视频 | 九九九在线观看视频 | 中文字幕在线精品 | 国产精品xxxx18a99| 国产不卡高清 | 人人狠狠综合久久亚洲婷 | 亚洲国产精彩中文乱码av | 国产一二区在线观看 | 日本中文字幕视频 | 六月色播| 精品免费在线视频 | 高清国产一区 | 久久免费a| 日韩理论片在线 | 五月天综合网 | 黄色精品国产 | 在线观看视频国产 | 黄色av电影一级片 | 国产精品视频不卡 | 国产成人免费 | 日韩欧美视频免费观看 | 五月天网站在线 | 69视频永久免费观看 | 亚洲永久精品在线 | 天天曰天天曰 | 国产经典av | 成年人在线播放视频 | 精品专区一区二区 | 69av在线播放| 亚州精品在线视频 | 国产精品美女久久久免费 | av成人在线看 | 一级全黄毛片 | 成人免费在线播放 | 91九色蝌蚪视频在线 | 久久精品国亚洲 | av高清在线观看 | 又黄又爽的视频在线观看网站 | 国产高清在线免费观看 | 美女视频免费一区二区 | 日本中文字幕在线视频 | 日韩高清一 | 国产91在线免费视频 | 1024在线看片 | 91天堂在线观看 | av电影免费在线看 | 免费看网站在线 | 蜜臀av麻豆| 亚洲自拍自偷 | www.亚洲精品在线 | 国产精品 9999 | 色国产精品| 成人黄色大片在线免费观看 | 24小时日本在线www免费的 | 久草视频在线免费 | 久久爱www.| 国产综合小视频 | avwww在线观看 | 91麻豆精品国产91久久久使用方法 | 久久久高清一区二区三区 | 精品乱码一区二区三四区 | 日韩欧美大片免费观看 | 国产97av | 91插插视频| a亚洲视频 | 欧美成人精品三级在线观看播放 | 激情综合色播五月 | 亚洲成av人片在线观看www | 中文字幕 国产 一区 | 91精品啪在线观看国产线免费 | 99精品国产免费久久久久久下载 | 欧美激情综合网 | 人人澡av| 免费看的黄色录像 | 久久久久久久久久影院 | 国产在线观看h | 日韩欧美国产精品 | 五月导航 | 三级av在线播放 | 精品久久久久久久久中文字幕 | 亚洲精品av中文字幕在线在线 | 日韩xxxbbb| 一级欧美一级日韩 | 8x8x在线观看视频 | 日韩欧美高清在线观看 | 久热这里有精品 | 国产精品一区二区在线观看免费 | 97在线看片| 国产天天综合 | 我爱av激情网 | 国产一区二区在线免费播放 | 日本在线观看中文字幕无线观看 | 欧美精品在线观看 | 日韩视频区 | 成人h视频在线 | 色插综合 | av三级av| 亚洲影院国产 | 中文字幕色婷婷在线视频 | 久久精品欧美一区 | 精品在线视频一区二区三区 | 国产综合在线视频 | 国产精品片 | 亚洲综合一区二区精品导航 | 999电影免费在线观看 | 亚洲理论在线观看 | 99久久精品久久久久久清纯 | 免费在线激情视频 | 亚洲人人av| 欧美精品色 | 欧美 日韩 久久 | 黄色网址在线播放 | 欧美狠狠操| 人人干狠狠操 | 超碰在线个人 | 午夜久久久久久久久 | 日韩国产欧美在线视频 | 国产高清不卡 | 五月婷婷视频 | 狠狠色综合欧美激情 | 精品视频在线免费 | 日本久久视频 | 久久激情精品 | 国产专区在线看 | 四川bbb搡bbb爽爽视频 | 国产1区在线观看 | 91传媒免费观看 | 超碰在线免费福利 | 免费观看一级成人毛片 | 免费看黄色毛片 | 天天操综 | 欧美一级久久久久 | 精品一区二区在线观看 | 免费国产在线观看 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 午夜精品在线看 | 色综合久久88色综合天天人守婷 | av大全在线观看 | 超碰人人舔| 97超碰免费在线 | 婷婷激情综合 | 激情五月在线 | 天天激情综合网 | 亚州精品在线视频 | 97视频久久久 | 亚洲电影图片小说 | 亚洲欧洲中文日韩久久av乱码 | 国产精品麻豆91 | 丁香激情五月 | 99精品久久久久久久 | 91精品国自产在线偷拍蜜桃 | 久久国产精品99国产 | 天天干,天天射,天天操,天天摸 | 国内精品久久久久影院日本资源 | 九九视频免费在线观看 | 高清有码中文字幕 | 欧美一区二区三区在线看 | 国产精品男女视频 | 丁香六月天 | 日韩啪啪小视频 | 久久人人爽人人片 | 久久综合免费 | 成人啊 v | 9797在线看片亚洲精品 | 91av亚洲 | 丁香视频在线观看 | 国产精品入口麻豆www | 成人av影视观看 | 久久久www免费电影网 | 国内精品99 | 久久艹国产 | 亚洲精品高清一区二区三区四区 | 久久五月婷婷丁香社区 | 久久久资源 | 免费国产一区二区视频 | 欧美日韩视频在线观看免费 | 欧美国产日韩一区二区三区 | 日韩一区二区三 | 很黄很污的视频网站 | 深爱开心激情网 | 色av网站 | 国产精品免费一区二区三区在线观看 | 国产精品美女久久久久久久久久久 | 久久er99热精品一区二区三区 | 99精品偷拍视频一区二区三区 | 特黄特色特刺激视频免费播放 | www最近高清中文国语在线观看 | 国产中文字幕视频在线 | 国产精品午夜久久 | 日本一区二区免费在线观看 | 精品一二三区 | 在线观看视频亚洲 | 精品久久久久一区二区国产 | 97超碰成人在线 | 亚洲国产精品va在线看黑人 | 久久免费视频网站 | 午夜精品剧场 | 激情综合国产 | 午夜在线观看影院 | 欧美 亚洲 另类 激情 另类 | 黄色av一级 | 热久久这里只有精品 | 毛片网免费 | 黄色三级视频片 | av网站有哪些 | 婷婷五月色综合 | 看黄色.com | 超碰在线1 | 99久久精品国产毛片 | 特级西西444www高清大视频 | 网址你懂的在线观看 | 亚洲精品乱码久久久久 | 欧美精品在线视频 | 免费看的黄色录像 | 国产一区二区免费 | 波多野结衣在线观看视频 | 日本中文字幕久久 | 久久国产视频网站 | 国产综合久久 | 成人免费xxx在线观看 | 在线视频 精品 | 日韩在线播放视频 | 亚洲第一av在线播放 | 最新动作电影 | 国产无限资源在线观看 | 五月婷婷另类国产 | 综合网中文字幕 | 999国内精品永久免费视频 | 国产精品一区二区免费在线观看 | 97人人澡人人爽人人模亚洲 | 精品美女在线视频 | 一区二区在线不卡 | 黄色午夜网站 | 欧美日韩在线免费观看 | 日韩三级av | 天天色棕合合合合合合 | 国产网站av | 欧美性生活免费 | 三级av小说 | 日韩视频一| 国产91学生粉嫩喷水 | 久久久久在线观看 | 精品久久久国产 | 免费观看一区二区 | 免费一级特黄毛大片 | 日本三级中文字幕在线观看 | 天天操天 | 狠狠夜夜 | 国产精品久久久久久久久久新婚 | 91看片看淫黄大片 | 天天曰天天曰 | 国产手机av在线 | 狠狠色丁香婷婷综合视频 | 精品伊人久久久 | 国产精品资源 | 九九热久久免费视频 | 国产日韩精品一区二区三区 | 日韩网站免费观看 | 一区久久久 | av 一区 二区 久久 | 99久久久国产精品免费99 | 午夜a区 | 视频99爱 | 91亚洲夫妻 | 精品久久一区二区三区 | 91私密视频| 国内精品久久久久影院优 | 成人av午夜 | 国产亚洲资源 | 五月综合色 | 国产丝袜制服在线 | 欧美日韩中文另类 | 国产精品久久电影网 | 婷婷九九 | 99久精品视频 | 在线v| 伊人伊成久久人综合网站 | www国产亚洲精品久久网站 | www.777奇米| 超碰国产在线播放 | 五月婷在线播放 | 久久看毛片 | 超碰97.com | 欧美一区日韩精品 | 色噜噜噜噜 | 久久久国产网站 | 日韩欧美在线综合网 | 国产一区二区视频在线播放 | 超碰免费97 | av免费网站观看 | 黄色大片免费网站 | 91秒拍国产福利一区 | 日韩视频一区二区在线观看 | 亚洲黄色小说网址 | 免费观看久久久 | 毛片美女网站 | 天天爱天天操天天射 | 在线中文字母电影观看 | 久久艹欧美 | 精品播放 | 精品久久精品久久 | 久久久久久久久久久综合 | 国产精品国产三级国产不产一地 | 黄色av三级在线 | www.五月婷 | 久久久精品视频网站 | 免费黄色a网站 | 三级在线视频观看 |