首页 > 系统相关 >(k8s)Kubernetes 部署Nginx

(k8s)Kubernetes 部署Nginx

时间:2022-08-24 23:01:02浏览次数:59  
标签:20 Kubernetes nginx data Nginx master k8s root

系统架构参考图:

一、环境准备:

master:  10.0.0.7

node1:    10.0.0.17

node2:    10.0.0.27


[19:45:37 root@k8s-master ~]#kubectl get nodes
NAME               STATUS   ROLES    AGE   VERSION
k8s-master         Ready    master   11d   v1.18.0
k8s-worker-node1   Ready    <none>   10d   v1.18.0
k8s-worker-node2   Ready    <none>   10d   v1.18.0

二、创建configMap:

#nginx.conf:

[19:55:28 root@k8s-master ~]#cat nginx.conf
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    #include /etc/nginx/conf.d/*.conf;

server {
       listen                    80;
       server_name               localhost;
       root                      /data/nginx/test;
       index                     index.html;
}
}

[19:55:42 root@k8s-master ~]#kubectl create configmap nginx-conf --from-file nginx.conf
configmap/nginx-conf created

[19:57:37 root@k8s-master ~]#kubectl get configmap
NAME         DATA   AGE
nginx-conf   1      40s
#在两个Node上新建我们的web访问目录:
[19:45:08 root@k8s-worker-node1 ~]#mkdir /data/nginx/test -p
[20:08:10 root@k8s-worker-node2 ~]#mkdir /data/nginx/test -p
#配置一下页面显示,区分:
[20:14:52 root@k8s-worker-node1 ~]#echo "hello,world,This is 10.0.0.17" > /data/nginx/test/index.html
[20:14:59 root@k8s-worker-node1 ~]#cat /data/nginx/test/index.html
hello,world,This is 10.0.0.17
[20:16:19 root@k8s-worker-node2 ~]#echo "hello,world,This is 10.0.0.27" > /data/nginx/test/index.html
[20:16:20 root@k8s-worker-node2 ~]#cat /data/nginx/test/index.html
hello,world,This is 10.0.0.27

 

三、创建nginx-rc.yaml:

#Replication Controller简称RC,它能够保证Pod持续运行,并且在任何时候都有指定数量的Pod副本,在此基础上提供一些高级特性,比如滚动升级和弹性伸缩。

[20:23:57 root@k8s-master ~]#cat nginx-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: nginx-controller
spec:
  replicas: 2
  selector:
    name: nginx
  template:
    metadata:
      labels:
        name: nginx
    spec:
      containers:
      - name: nginx
        image: docker.io/nginx:alpine
        ports:
        - containerPort: 80
        volumeMounts:
        - mountPath: /etc/nginx/nginx.conf
          name: nginx-config
          subPath: nginx.conf
        - mountPath: /data/nginx/test
          name: nginx-data
      volumes:
        - name: nginx-config
          configMap:
            name: nginx-conf
        - name: nginx-data
          hostPath:
            path: /data/nginx/test

[20:24:50 root@k8s-master ~]#kubectl create -f nginx-rc.yaml
replicationcontroller/nginx-controller created

四、创建nginx-svc.yaml :

[20:29:54 root@k8s-master ~]#cat nginx-svc.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service-nodeport
spec:
  ports:
    - port: 8080
      targetPort: 80
      protocol: TCP
      nodePort: 30010    #外网访问端口
  type: NodePort   #端口类型
  selector:
    name: nginx
[20:30:44 root@k8s-master ~]#kubectl create -f nginx-svc.yaml
service/nginx-service-nodeport created
[20:31:26 root@k8s-master ~]#kubectl get pods -o wide
NAME                     READY   STATUS    RESTARTS   AGE     IP           NODE               NOMINATED NODE   READINESS GATES
nginx-controller-nmj77   1/1     Running   0          4m39s   10.244.2.6   k8s-worker-node2   <none>           <none>
nginx-controller-nrt6m   1/1     Running   0          4m39s   10.244.1.2   k8s-worker-node1   <none>           <none>

[20:32:08 root@k8s-master ~]#kubectl get svc -o wide
NAME                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE   SELECTOR
kubernetes               ClusterIP   10.96.0.1       <none>        443/TCP          11d   <none>
nginx-service-nodeport   NodePort    10.110.21.224   <none>        8080:30010/TCP   2m    name=nginx

#浏览器访问任意node节点+30010端口访问测试查看:

[20:48:23 root@k8s-master ~]#cat /data/nginx/index.html
cat: /data/nginx/index.html: 没有那个文件或目录
#这边master节点没有创建目录,以及对应的文件,但是访问master节点时仍然能访问成功!此时被调度到17节点或者27节点轮询!

#修改html内容。属刷新看看测试效果:
[20:58:56 root@k8s-worker-node1 test]#echo "hello,world,This is 10.0.0.17 v1.0" > /data/nginx/test/index.html

[20:59:20 root@k8s-worker-node2 test]#echo "hello,world,This is 10.0.0.27 v1.0" > /data/nginx/test/index.html

#附知识扩展:
service种类:
#【k8s】Service种类、类型(ClusterIP、NodePort、LoadBalancer、ExternalshName) service的几种类型


#ClusterIP:通过集群的内部 IP 暴露服务,选择该值,服务只能够在集群内部可以访问,这也是默认的ServiceType。

#NodePort:通过每个 Node 节点上的 IP 和静态端口(NodePort)暴露服务。NodePort 服务会路由到 ClusterIP 服务,这个 ClusterIP 服务会自动创建。通过请求 :,可以从集群的外部访问一个 NodePort 服务。

(#NodePort 需要借助真实存在的ip,是一个公共的ip,任何人都可以访问,而ClusterIP可以理解成不对外开放,仅限于集群内的节点之间特定的一个范围)

#LoadBalancer:使用云提供商的负载局衡器,可以向外部暴露服务。外部的负载均衡器可以路由到 NodePort 服务和 ClusterIP 服务,这个需要结合具体的云厂商进行操作。

#ExternalName:通过返回 CNAME 和它的值,可以将服务映射到 externalName 字段的内容(例如, foo.bar.example.com)。没有任何类型代理被创建,这只有 Kubernetes 1.7 或更高版本的 kube-dns 才支持。

 

标签:20,Kubernetes,nginx,data,Nginx,master,k8s,root
From: https://www.cnblogs.com/zeng666/p/16622586.html

相关文章

  • 【云原生】Kubernetes(k8s)——本地存储卷介绍与简单使用(emptyDir,hostPath,local volume)
    目录一、概述二、emptyDir三、hostPath四、emptyDir和hostPath异同五、localvolume概述(常用)六、StorageClass本地存储(常用)1)创建本地存储类(StorageClass)2)创建PV3)创建PVC4......
  • Kubernetes学习笔记(二十一):备份
    kubectlgetall--all-namespaces-oyaml>all-deploy-services.yaml与其备份单个资源,不如备份ETCD:etcd.service--data-dir=/var/lib/etcdetcd也自带快照功能ET......
  • Nginx安装时的坑
    nginx默认安装的时候无法加载流stream模块,需要在启动参数里加上–with-stream。解决方法:重新对源文件进行编译、安装,通过添加–with-stream参数指定安装stream模块。 ./......
  • Nginx 安装篇-yum安装
    yum安装教程引用:https://www.cnblogs.com/AprilBlank/p/11388990.html#1-yum安装推荐 避坑事项:开始安装前检查是否已安装有nginx,注意检查/etc/profile文件配置,下方为......
  • nginx启动访问
      1.双击nginx2.浏览器访问localhost:80(出现以下界面nginx启动成功) ......
  • nginx配置文件语法高亮
    下载nginx.vim支持文件[root@uat-sh-bs-3-b5-nginx-0-11vim74]#cd/usr/share/vim/vim74/syntax/[root@uat-sh-bs-3-b5-nginx-0-11vim74]#wget--no-check-certif......
  • Nginx 安装及启动避坑流程
    系统环境:CentOS8.564位【开始安装】(此步骤引自网络教程)https://www.cnblogs.com/torchstar/p/16027538.html教程比较详细,一步步操作就没问题,不过用上面的教程尝试安装......
  • 【云原生】rsync+inotify数据实时同步介绍与k8s实战应用
    目录一、rsync概述二、rsync优缺点1)优点2)缺点三、rsync+inotify配置与安装1)rsync安装2)rsync配置3)启动rsync服务4)测试验证5)编译安装inotify-tools1、inotify-tools概述2、......
  • k8s-Pod基础
    制作镜像第一个pod搭建Harbor仓库重启策略启动命令pod基本命令设置环境变量数据持久化和共享-hostPath数据持久化和共享-emptyDirJSON格式编写pod文件ConfigMap......
  • k8s对接Ceph实现持久化存储(16)
    一、Ceph简介官网:https://ceph.com/en/https://docs.ceph.com/en/latest/start/intro/ceph是一种开源的分布式的存储系统包含以下几种存储类型:块存储(rbd),对象存储......