k8s实验3

k8s实验3_第1张图片

k8s实验3_第2张图片k8s实验3_第3张图片
k8s实验3_第4张图片
k8s实验3_第5张图片
k8s实验3_第6张图片
k8s实验3_第7张图片
k8s实验3_第8张图片
k8s实验3_第9张图片
k8s实验3_第10张图片
持久化存储
k8s实验3_第11张图片
Volume
k8s实验3_第12张图片
emptyDir
k8s实验3_第13张图片
NFS共享存储
k8s实验3_第14张图片
nfs搭建
k8s实验3_第15张图片
k8s实验3_第16张图片
k8s实验3_第17张图片
配置PVC
k8s实验3_第18张图片
配置完成后,查看
k8s实验3_第19张图片
k8s实验3_第20张图片
k8s实验3_第21张图片
验证
再nfs创建index.html文件
访问web容器

对外发布服务的意义
k8s实验3_第22张图片

nodePort发布服务
k8s实验3_第23张图片
k8s实验3_第24张图片
Lngress介绍
k8s实验3_第25张图片
k8s实验3_第26张图片
Lngress安装配置
k8s实验3_第27张图片
k8s实验3_第28张图片
编辑资源文件
k8s实验3_第29张图片
在这里插入图片描述
k8s实验3_第30张图片
k8s实验3_第31张图片
k8s实验3_第32张图片
k8s实验3_第33张图片
k8s实验3_第34张图片
k8s实验3_第35张图片
k8s实验3_第36张图片
k8s实验3_第37张图片
nginx镜像创建思路
k8s实验3_第38张图片
k8s实验3_第39张图片
k8s实验3_第40张图片
k8s实验3_第41张图片
具体步骤
k8s实验3_第42张图片

一、创建并上传镜像

[root@res ~]# mkdir -p php nginx
[root@res php]# vim Dockerfile
FROM myos:latest
RUN yum -y install php-fpm && yum clean all
copy www.conf /etc/php-fpm.d/www.conf
EXPOSE 9000
CMD {"/usr/sbin/php-fpm","--nodaemonize"}
[root@res php]#vim www.conf   /更改PHP的配置文件,可以先安装php,再拷贝
listen = 0.0.0.0:9000
;listen.allowed_clients = 127.0.0.1
[root@res php]# docker build -t myos:php   //制作php镜像
[root@res php]# docker push  myos:php    //上传镜像

[root@res nginx]# vim Dockerfile 
FROM myos:latest
RUN  yum -y install pcre openssl && useradd nginx
ADD  nginx.tar.gz /usr/local/
EXPOSE 80
WORKDIR /usr/local/nginx/html
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
[root@res local]# tar zcf nginx.tar.gz nginx //打包nginx服务
[root@res php]# docker build -t myos:nginx   //制作php镜像
[root@res php]# docker push  myos:nginx  //上传镜像

二、安装ingress

[root@res ~]# docker push nginx-ingress-controller:0.19.0 
[root@res ~]# docker push defaultbackend:1.4
[root@k8s-master ~]# vim mandatory.yaml
...................
      image: 192.168.1.90:5000/defaultbackend:1.4
       image: 192.168.1.90:5000/nginx-ingress-controller:0.19.0
     - --apiserver-host=http://192.168.1.30:8080 
[root@k8s-master ~]# kubectl create -f mandatory.yaml

三、nfs搭建(所有机器都需要安装nfs包)

四、nginx.conf文件映射

[root@k8s-master ~]# kubectl  run  t11 -t -i --image=192.168.1.90:5000/myos:nginx
[root@k8s-master ~]# kubectl  cp t11-686559c5d-cfwkt:/usr/local/nginx/conf/nginx.conf ./
[root@k8s-master ~]# vim nginx.conf
     fastcgi_pass   web-php:9000;
[root@k8s-master ~]# kubectl create configmap  nginx.conf --from-file=nginx.conf

五、配置文件的书写

[root@k8s-master ~]# cat webapp.yaml 
---
apiVersion: v1
kind: PersistentVolume
metadata: 
  name: pv-nfs
  labels: 
    app: web-nfs
spec:
  capacity: 
    storage: 20Gi
  accessModes: 
  - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs: 
    path: /var/webroot
    server: 192.168.1.101

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata: 
  name: pvc-nfs
spec: 
  accessModes: 
    - ReadWriteMany
  resources: 
    requests: 
      storage: 20Gi
  selector: 
    matchLabels: 
      app: web-nfs

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-phpfpm
spec:
  replicas: 3
  template:
    metadata:
      labels: 
        app: my-phpfpm
    spec:
      containers:
      - image: 192.168.1.90:5000/myos:php
        name: my-phpfpm
        volumeMounts: 
        - mountPath: /usr/local/nginx/html
          name: site-data
      volumes: 
      - name: site-data
        persistentVolumeClaim: 
          claimName: pvc-nfs

---
apiVersion: v1
kind: Service
metadata:
  name: web-php
spec:
  ports:
  - port: 9000
    protocol: TCP
    targetPort: 9000
  selector:
    app: my-phpfpm
  type: ClusterIP

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-nginx
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: my-nginx
    spec:
      containers:
      - image: 192.168.1.90:5000/myos:nginx
        name: my-nginx
        volumeMounts: 
        - mountPath: /usr/local/nginx/conf/nginx.conf
          name: my-config
          subPath: nginx.conf
        - mountPath: /usr/local/nginx/html
          name: site-data
      volumes: 
      - name: my-config
        configMap:
          name: nginx-conf
      - name: site-data
        persistentVolumeClaim:
          claimName: pvc-nfs

---
apiVersion: v1
kind: Service
metadata:
  name: web-nginx
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: my-nginx
  type: ClusterIP

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-app
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - http: 
     paths:
     - path: /
       backend:
        serviceName: web-nginx
        servicePort: 80

六、启动配置文件

[root@k8s-master ~]# kubectl create -f webapp.yaml
[root@k8s-master ~]# kubectl get ingress

七、验证:

默认会转到https
k8s实验3_第43张图片
华为云使用负载均衡时
k8s实验3_第44张图片k8s实验3_第45张图片

你可能感兴趣的:(k8s)