用k8s部署nginx

2023-10-26

1.4 .用kubernetes部署“容器化应用”

1.4.1.kubectl的常见命令
#查看所有命令
kubectl --help
#查看控制器
kubectl get deployment 
#查看pod
kubectl get pod 
#查看服务
kubectl get service
1.4.2.关于控制器(deployment)和pod和docker镜像

在这里插入图片描述

三者的关系如图所示

控制器包括了pod,pod包括了docker。 pod和控制器的查看都在master节点里,master启动了某个镜像后,会将该镜像产生的docker容器放在其他node节点里。

拉取镜像(以nginx为例)

#在master里拉取
[root@k8smaster1 ~]# kubectl create deployment nginx(随便写的名字) --image=nginx    拉取镜像并且用pod启动
deployment.apps/nginx created

[root@k8smaster1 ~]# kubectl get service
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP  ***.***.*.*    <none>        443/TCP   2d4h
[root@k8smaster1 ~]# kubectl create deployment nginx1 --image=nginx
deployment.apps/nginx1 created
[root@k8smaster1 ~]# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
[root@k8smaster1 ~]# kubectl get service
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP       PORT(S)        AGE
kubernetes   ClusterIP   ***.***.***.***       <none>        443/TCP        2d4h
nginx        NodePort    ***.***.***.***       <none>        80:30578/TCP   4s
#注意 80端口是内部端口,外部无法访问,外部访问需要找到哪个node开启了它,然后 node/master的ip+30578访问


#我们在node节点里进行操作
[root@k8snode2 ~]# docker ps
CONTAINER ID   IMAGE                                               COMMAND                  CREATED          STATUS          PORTS     NAMES
25642207cfe5   nginx                                               "/docker-entrypoint.…"   33 minutes ago   Up 33 minutes             k8s_nginx_nginx-6799fc88d8-c7d6l_default_f7f8bbc5-8d3e-4310-b24e-3e6113641941_0
765fb9563740   registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                 34 minutes ago   Up 34 minutes             k8s_POD_nginx-6799fc88d8-c7d6l_default_f7f8bbc5-8d3e-4310-b24e-3e6113641941_0
b12e4443fa05   e708f4bb69e3                                        "/opt/bin/flanneld -…"   54 minutes ago   Up 54 minutes             k8s_kube-flannel_kube-flannel-ds-lj52w_kube-system_a9bb23f0-2576-4d15-891b-d3565ad63736_1
d37ade0d00d7   635b36f4d89f                                        "/usr/local/bin/kube…"   54 minutes ago   Up 54 minutes             k8s_kube-proxy_kube-proxy-fg9l5_kube-system_ccd0a744-9535-4bff-892d-372b1049b7c4_4
45e6085b6543   registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                 54 minutes ago   Up 54 minutes             k8s_POD_kube-flannel-ds-lj52w_kube-system_a9bb23f0-2576-4d15-891b-d3565ad63736_1
110ea5c2c1f8   registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                 54 minutes ago   Up 54 minutes             k8s_POD_kube-proxy-fg9l5_kube-system_ccd0a744-9535-4bff-892d-372b1049b7c4_4

#可以看到 nginx的镜像在node节点里





扩展:用yaml文件部署

在kubenetes中,我们也可以把镜像输出成yaml文件,然后直接运行yaml文件来部署项目。

#空命令部署
kubectl create deployment 给服务起的名字 --image=镜像名字r --dry-run -o yaml 
#空命令执行后生成yaml文件
kubectl create deployment 给服务起的名字 --image=镜像名字 --dry-run -o yaml > 生成的文件名

#将生成的yaml部署

kubectl apply -f 文件名. yaml

kubectl create deployment yanginx --image=nginx --dry-run=client -o yaml > nginx.yaml


例如用该种方式部署nginx


[root@k8smaster1 ~]# kubectl create deployment yanginx --image=nginx --dry-run=client -o yaml > nginx.yaml
[root@k8smaster1 ~]# kubectl apply -f nginx.yaml 
deployment.apps/yanginx created
[root@k8smaster1 ~]# cat nginx.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: yanginx
  name: yanginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: yanginx
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: yanginx
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
status: {}
[root@k8smaster1 ~]# kubectl get pods
NAME                       READY   STATUS    RESTARTS   AGE
yanginx-7f9fbfccfd-ckvnv   1/1     Running   0          45s
[root@k8smaster1 ~]# kubectl get deploy
NAME      READY   UP-TO-DATE   AVAILABLE   AGE
yanginx   1/1     1            1           3m37s
[root@k8smaster1 ~]# kubectl expose deployment yanginx --port=80 --type=NodePort
service/yanginx exposed
[root@k8smaster1 ~]# kubectl get service
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP       ***           <none>        443/TCP        3d5h
yanginx      NodePort    **********        <none>        80:31951/TCP   13s



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用k8s部署nginx 的相关文章

随机推荐

  • 蒙特卡洛法简述

    蒙特卡洛法简述 一 简介 1 蒙特卡洛方法又称随机模拟法 随机抽样技术 是一种随机模拟方法 蒙特卡洛法使用随机数 伪随机数 以概率和统计理论方法为基础 将所要求解的问题同一定的概率模型相互联系 用计算机实现统计模拟和抽样 以获得问题近似解的
  • LabVIEW FPGA PCIe开发讲解-实战篇:实验61:PCIe DMA+8位ADC(模拟数据采集卡)

    1 实验内容 现在很多电脑PC或者工控机主板上面都集成了PCIe插座 可以直接插入PCIe板卡 优点是卡槽标准 插拔简单 传输速度极快 对于高速采集测试测量领域 PCIe用途非常广泛 最大极限带宽可以到6 6GB s 这个速度可以直接用来做
  • Qt:依据ChatGpt生成Qt可选择扇形按钮

    目录 引言 1 生成过程 1 1 饼图 2 2 扇形图 3 3 可选择扇形按钮 1 4 新的扇形画法 GraphicItem 2 训练过程 3 错误原因 4 涉及知识点 引言 因为项目需要绘制一个中间为圆心 包含数个扇形的可选择按钮 正好C
  • php16进制转换为字符串

    因项目需求对接一个java的接口 密匙是16进制 使用php内置函数 hex2bin str abc key XXXXX res hash hmac sha1 str hex2bin key false hash hmac最后一个参数tru
  • 【Python】进阶之 MySQL入门教程

    文章目录 数据库概述 Mysql概述 Mysql安装与使用 Navicat安装和使用 Mysql终端指令操作 Mysql和python交互 订单管理案例实现 数据库概述 数据库的由来 发展历程 说明 人工管理阶段 用纸带等进行数据的存储 文
  • linux 编写防火墙脚本

    防火墙脚本实际上就是个shell脚本 使用shell脚本来设置防火墙策略的优点在于 可以预先加载一些必要的内核模块 设置环境参数 可以使用变量和灵活控制程序结构 便于脚本文件的重用和移植 常见的防火墙脚本通常包括以下部分 1 设置网段 网卡
  • 01背包和完全背包

    1 01背包 有 N 件物品和一个容量为 V 的背包 第 i 件物品的费用是 c i 价值是 w i 求解将哪些物品装入背包可使价值总和最大 这是最基础的背包问题 特点是 每种物品仅有一件 可以选择放或不放 用子问题定义状态 即 f i v
  • MD5签名 Java转换C#

    Java 代码 import java security MessageDigest import org apache commons codec binary Base64 public static String doSign Str
  • STM32系统嘀嗒定时器实现1ms中断事件

    int main 系统定时器实现周期性1000hz中断事件 即1ms SysTick Config SystemCoreClock 1000 void SysTick Handler void static uint32 t cnt
  • 算法之递归算法(五)

    上一篇将讲解的内容是从整体流程思考递归函数的内容 这一篇我们衔接上一篇继续讲解从整体流程思考递归函数的内容 我们同样使用一个实例来分析 题目描述 任何一个正整数都可以用2的幂次方表示 例如 137 27 23 20 同时约定方次用括号来表示
  • 简述JVM垃圾回收机制

    1 Java中的四种引用类型 在Java中 对于引用最基本的解释就是 如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址 就称这块内存代表着一个引用 有点指针的意味 后来Java还将引用划分为了4种 根据被GC回收的
  • qt平台插件无法初始化

    报错问题 解决 Qt5 报错 This application failed to start because it could not find or load the Qt platform plugin 解决方法 利用qt自带的打包工
  • 最隐晦的程序设计指引

    一 百家争鸣 俗话说 程序员半年不学新东西 就变奥特曼 out man 过时之人 了 IT行业可以说是变化最快的行业 每年都有大量的新概念 新术语 新技术被创造出来 在多数人还在一头雾水时 更好的 替代品又被创造出来 别的不说了 单说设计方
  • git add时出现fatal: pathspec 'XXX.java' did not match any files

    后来发现是文件名出现错误 在建文件时多打了一个空格 导致不匹配 所以大家出现这个问题时很有可能时文件名写错 或者文件后缀写错或者没写
  • js实现文本分段

    本菜鸟的第一篇博文 最近在学习js 可能有很多不严谨或者不正确的地方 欢迎指正 在 net开发中 有时候会从后台数据库拉来一大串文本 放到页面上显示 那么问题来了 大段的文本中需要分段 一般分段在后台都用转义字符 n来表示 但是我们现在要把
  • 基于Unity ARFoundation的传送门项目 - Augmented Reality Portal based on ARFoundation in Unity

    窗 Window 1 Unity组件 Components 2 着色器 Shaders 1 DepthMask shader 门 Door 1 组件 Components 1 AR Camera 2 InnerWorld 3 Door 4
  • 华为OD机试 - 最大化控制资源成本(Java)

    题目描述 公司创新实验室正在研究如何最小化资源成本 最大化资源利用率 请你设计算法帮他们解决一个任务混部问题 有taskNum项任务 每个任务有开始时间 startTime 结束时间 endTime 并行度 parallelism 三个属性
  • 线程池

    1 线程池的概念 线程池 其实就是一个容纳多个线程的容器 其中的线程可以反复使用 省去了频繁创建线程对象的操作 无需反复创建线程而消耗过多资源 最初是程序员自己开发线程池 用ArrayList
  • fatal: unable to access ‘https://github.com/.../‘: Failed to connect to github.com port 443: 连接超时

    虚拟机终端fatal unable to access https github com Failed to connect to github com port 443 连接超时 浏览器输入ipaddress com 查询如下两个域名 并
  • 用k8s部署nginx

    1 4 用kubernetes部署 容器化应用 1 4 1 kubectl的常见命令 查看所有命令 kubectl help 查看控制器 kubectl get deployment 查看pod kubectl get pod 查看服务 k