小白到运维工程师自学之路 第七十三集 (kubernetes应用部署)

一、安装部署

1、以Deployment YAML方式创建Nginx服务

这个yaml文件在网上可以下载

复制代码
cat nginx-deployment.yaml
apiVersion: apps/v1	#apiVersion是当前配置格式的版本
kind: Deployment	#kind是要创建的资源类型,这里是Deploymnet
metadata:			#metadata是该资源的元数据,name是必须的元数据项
  name: nginx-deployment
  labels:
    app: nginx
spec:				#spec部分是该Deployment的规则说明
  replicas: 3		#relicas指定副本数量,默认为1
  selector: 
    matchLabels:
      app: nginx
  template:			#template定义Pod的模板,这是配置的重要部分
    metadata:		#metadata定义Pod的元数据,至少要顶一个label,label的key和value可以任意指定
      labels:
        app: nginx
    spec:			#spec描述的是Pod的规则,此部分定义pod中每一个容器的属性,name和image是必需的
      containers:
      - name: nginx
        image: nginx:1.19.4
        ports:
        - containerPort: 80
复制代码
创建nginx-deployment应用
kubectl create -f nginx-deployment.yaml
复制代码
查看deployment详情  (由于需要下载镜像所有需要等一会才会成功)
kubectl get deployment
kubectl get pod

这个是正在获取镜像

这个是下载完成的

复制代码
查看某个pod的详细信息
kubectl describe pod nginx-deployment-7947dc656-7lfp5

二、创建pod

复制代码
kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]

各选项的作用分别如下所示。

  • NAME:指定容器运行的名称;

  • Image:指定运行的基础镜像;

  • env:指定在容器中设置的环境参数;

  • port:指定容器暴露的端口;

  • replicas:指定启动容器设置的副本数;

  • dry-run:dry-run 值如果为 true,则只打印要发送的对象,而不发送它;

  • overrides:生成对象的内联 JSON 重写。如果非空,则用于覆盖生成的对象。要求对象提供有效的 apiVersion 字段。

    kubectl run nginx-deployment --image=nginx:1.19.4 --port=80 --replicas=3
    kubectl get pods

三、发布服务

复制代码
kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP] [--target -port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]

上述命令语法中,各选项的作用分别如下所示。

  • -f:标识公开服务的资源的文件的文件名,目录或 URL;

  • TYPE NAME:指定 deployment 名称;

  • port:指定内部通信端口;

  • protocol:指定网络协议,tcp 或者 udp;

  • target-port:指定暴露在外部的端口;

  • name:指定最新创建的对象的名称;

  • external-ip:为 service 的外部 IP 地址;

  • type:指定此服务的类型 ClusterIP,NodePort,LoadBalancer 或 ExternalName,默认 ClusterIP。

    kubectl expose deployment nginx-deployment --port=80 --target-port=80 --name=nginx-service --type=NodePort
    kubectl get pods,svc

通过 kubectl expose 命令创建 Service,设置内部通信端口和外部暴露的端口均为 80、名称为 nginx-service、类型是 NodePort。创建 Service 完后,就可以通过 kubectl get svc命令查看到对外暴露的端口是31749,内部通信的地址是10.96.215.14

执行 kubectl get endpoints 查看容器自带的负载均衡。从执行结果可以得知容器自带的负载均衡分别是 10.244.1.4、10.244.1.5、10.244.2.3

复制代码
kubectl get endpoints


kubectl get pods 命令时加参数 -o wide 可以查看到 Node 真实节点上的分布
kubectl get pods -o wide

完成上述步骤就已经完成了发布,并且可以进行对其访问

以上就是k8s应用部署发布的基本操作

如有错误欢迎各位大佬批评指正,我们共同进步

相关推荐
thinkMoreAndDoMore3 小时前
linux内核匹配I2C设备
linux·运维·服务器
小政同学8 小时前
【NFS故障】共享的文件无法执行
linux·运维·服务器
ch3nyuyu9 小时前
Ubuntu(乌班图)基础指令
linux·运维·网络
挽安学长9 小时前
保姆级教程,通过GACCode使用Claude Code Desktop!
运维·服务器
firstacui10 小时前
MGRE实验
运维·服务器·网络
白菜欣11 小时前
Linux —《开发三件套:gcc/g++、gdb、make/Makefile 全解析》
linux·运维
何中应11 小时前
Grafana如何给列表设置别名
运维·grafana·监控
MXsoft61811 小时前
运维的尽头,是把“救火”变成“算命”
运维
大卡片11 小时前
IO模型与并发服务器设计
运维·服务器·网络
莎士比亚的文学花园12 小时前
Linux驱动开发(1)——系统移植
linux·运维·服务器