春风十里不如你 —— Taozi - nginx 2023-09-08T15:33:00+08:00 Typecho https://www.xiongan.host/index.php/feed/atom/tag/nginx/ <![CDATA[【欧拉】OpenEuler搭建Nginx]]> https://www.xiongan.host/index.php/archives/220/ 2023-09-08T15:33:00+08:00 2023-09-08T15:33:00+08:00 admin https://www.xiongan.host OpenEuler的web服务器

基础环境

查看系统环境版本

[root@taozi ~]# cat /etc/os-release 
NAME="openEuler"
VERSION="21.09"
ID="openEuler"
VERSION_ID="21.09"
PRETTY_NAME="openEuler 21.09"
ANSI_COLOR="0;31"

配置环境

首先配置本地yum源,搭建repo服务器

清理缓存,重新创建缓存

[root@taozi ~]# dnf clean all
[root@taozi ~]# dnf makecache
#安装nginx服务
[root@taozi ~]# dnf install nginx -y

查看安装后的rpm包

image-20230908113541930

启动nginxi服务并设置开机自启

[root@taozi ~]# systemctl start nginx
[root@taozi ~]# systemctl enable nginx

查看服务状态

image-20230908113750924

Nginx服务的配置文件

/etc/nginx/nginx.conf 主要的配置文件

/etc/nginx/conf.d 配置文件的辅助目录,也包含在主配置文件当中

/usr/share/nginx/html web网站的index文件所在目录

查看语法错误【syntax is ok】

image-20230908114217048

配置防火墙

# firewall-cmd --add-service=http --permanent
success
# firewall-cmd --reload
success

验证成功

image-20230908114803018

]]>
<![CDATA[【k8s】service服务和job服务]]> https://www.xiongan.host/index.php/archives/208/ 2023-05-17T13:35:50+08:00 2023-05-17T13:35:50+08:00 admin https://www.xiongan.host Service服务发现

使用Service

使用Service实验使用的目录病创建后端的httpd-Dy

[root@master servicefile]# vim httpd-dy.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
  name: httpd
spec:
  replicas: 3
  selector:
    matchLabels:
      app: httpd
  template:
    metadata:
      labels:
        app: httpd
    spec:
      containers:
      - name: httpd
        image: httpd
        ports:
        - containerPort: 80

部署Deployment并查看信息

68428286502

创建httpd-service.yaml文件

[root@master servicefile]# vim httpd-service.yaml

68428302420

创建service并查看该信息(下kubernetes服务是系统服务)

68428311268

测试服务可用性,通过curl命令查看服务是否正常

[root@master servicefile]# curl 10.102.124.67:8080

68428339308

可以删除刚刚创建的服务

68428345193

创建httpd-expose.yaml,并部署

[root@master servicefile]# vim httpd-expose.yaml
kind: Service
apiVersion: v1
metadata:
  name: httpd-svc
spec:
  type: NodePort
  selector:
    app: httpd
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 80
    nodePort: 30144

68428366522

使用跳板机浏览器登录,查看node节点ip:端口

68428375684

使用DNS

创建client.yaml,创建一个客户端pod,测试DNS功能

[root@master servicefile]# vim client.yaml
kind: Pod
apiVersion: v1
metadata:
  name: clientpod
spec:
  containers:
    - name: clientpod
      image: busybox:1.28.3
      args:
      - /bin/sh
      - -c
      - sleep 30000

创建并进入Pod命令行

[root@master servicefile]# kubectl apply -f client.yaml

使用nslookup命令查看服务域名,wget命令通过域名访问服务

68428417383

实训任务

创建deployment1

要求: 2 副本,镜像类型 httpd

68428612091

68428608656

创建deployment2

要求: 3副本,镜像类型 httpd

68428614089

68428616050

创建 service1,service1 后端为 deployment1 和 deployment2 中所有 pod。

68428621914

68428623761

创建 service2,service2 后端为 deployment1 中的第一个 pod 和 deployment2 中的第一个pod

为dy的第一个pod和dy2的第一个pod打上标签tz=httpd01

68428650498

68428651581

68428665013

68428668963

查看容器的详细信息

68428682792

查看端口信息,可以看到svc2的pod是要求所说的

68428673602

DeamonSet 与 Job

使用DaemonSet

创建一个Daemonset的yaml文件,并运行

[root@master servicefile]# vim DS-nginx.yaml
kind: DaemonSet
apiVersion: apps/v1
metadata:
  name: nginx-daemonset
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

68429120276

查看daemonset的pod信息位置

68429141307

删除pod,查看daemonset的自动恢复功能

68429156829

查看到已经恢复好了

68429158434

使用Job

创建Job的yaml文件

[root@master servicefile]# vim pi-job.yaml
kind: Job
apiVersion: batch/v1
metadata:
  name: pi
spec:
  template:
    spec:
      containers:
      - name: pi
        image: perl
        command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never
  backoffLimit: 4

创建Job并查看运行状态,他运行完毕后自动关闭了

68429246585

68429247721

查看他的运行结果

68429253813

使用CronJob

创建CronJob的yaml文件,设置每一分钟运行一次返回一次hello

[root@master servicefile]# vim CJ-hello.yaml
kind: CronJob
apiVersion: batch/v1beta1
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernets cluster-tz123
          restartPolicy: OnFailure

运行cronjob,查看运行情况

68429293265

查看pod的状态已经完成

68429294371

68429299912

可以查看到运行cronjob后,每隔一分钟就会创建新的pod的,并输出信息

实训任务

创建一个 DaemonSet

  1. 包含两个 pod
  2. 镜像为 nginx

创建一个job,用于输出helloworld

创建一个 cronjob,在每日的 xx 小时 xx 点输出 helloworld。

删除本次实验创建 DaemonSet,Job 和 CronJob。

]]>
<![CDATA[【K8s】下的kubectl的Deployment部署Nginx]]> https://www.xiongan.host/index.php/archives/205/ 2023-05-10T21:00:59+08:00 2023-05-10T21:00:59+08:00 admin https://www.xiongan.host 部署Nginx服务

简介:使用Deployment实现其滚动更新管理。

创建 Deployment

在 master 节点创建/labfile/deployfile 目录,用于保存配置文件。后续创建deployment 的 yaml 文件保存在此处。

[root@master ~]# mkdir labfile
[root@master ~]# cd labfile/
[root@master labfile]# mkdir deplofile
[root@master labfile]# cd deplofile/
[root@master deplofile]# vim nginx-dy.yaml
//以下内容为deployment文件
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-dy
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

部署该 nginx-dy

[root@master deplofile]# kubectl apply -f nginx-dy.yaml 
deployment.apps/nginx-dy created

查看详细信息、创建结果和replicaset

68368221905

68368214323

已经创建好:

68368227777

弹性伸缩 Deployment

编辑之前创建的nginx-dy.yaml,将副本数量修改5

68368234327

应用变更后的yaml文件

[root@master deplofile]# kubectl apply -f nginx-dy.yaml 
deployment.apps/nginx-dy configured
[root@master deplofile]# kubectl get pod

68368242410

滚动升级 deployment

复制ng原版为两个新版本

[root@master deplofile]# cp nginx-dy.yaml nginx-dy-v2.yaml 
[root@master deplofile]# cp nginx-dy.yaml nginx-dy-v3.yaml

68368254157

68368256811

进行滚动更新

[root@master deplofile]# kubectl apply -f nginx-dy-v2.yaml --record

查看更新状态,上为更新前版本

68368327387

查看replicaset,看到一个新的,里面有5个pod,原有的pod不存在了

68368337301

查看deployment更新事件

68368335839

更新到v3版本

[root@master deplofile]# kubectl apply -f nginx-dy-v3.yaml --record

68368352563

查看deployment的更新记录

[root@master deplofile]# kubectl rollout history deployment nginx-dy

68368370547

查看历史版本 2 的详细信息

[root@master deplofile]# kubectl rollout history deployment nginx-dy --revision=2

68368375317

回滚到历史版本2

[root@master deplofile]# kubectl rollout undo deployment nginx-dy --to-revision=2

68368385037

可以看到已经回滚到了版本2

删除deployment

[root@master deplofile]# kubectl delete deployment nginx-dy

68368392541

实训

查看deployment信息

68368444955

ymal文件搭建httpd

通过 yaml 文件创建一个 deployment,有如下要求:

  1. 使用 httpd:2.4
  2. 4副本
[root@master deplofile]# vim httpd-v1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpd-dy
  labels:
    app: httpd
spec:
  replicas: 4
  selector:
    matchLabels:
      app: httpd
  template:
    metadata:
      labels:
        app: httpd
    spec:
      containers:
      - name: httpd
        image: httpd:2.4
        ports:
        - containerPort: 8080

开始创建

68368496033

将上面创建的deployment删除一个pod,变成副本3

编辑yaml文件

更新

68368512413

升级该 deployment 的镜像版本至 latest。

复制v1版本yaml为v2版本,并修改镜像版本号

68368559406

进行更新升级,看到版本已经升级到了latest

68368561618

寻找该 deployment 中各个 pod 运行节点,deployment 创建的时间戳(Creation Timestamp)。

68368575679

]]>