小白到运维工程师自学之路 第七十三集 (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应用部署发布的基本操作

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

相关推荐
€☞扫地僧☜€1 小时前
docker 拉取MySQL8.0镜像以及安装
运维·数据库·docker·容器
其乐无涯1 小时前
服务器技术(一)--Linux基础入门
linux·运维·服务器
Diamond技术流1 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
写bug的小屁孩1 小时前
前后端交互接口(三)
运维·服务器·数据库·windows·用户界面·qt6.3
斑布斑布1 小时前
【linux学习2】linux基本命令行操作总结
linux·运维·服务器·学习
紅色彼岸花1 小时前
第六章:DNS域名解析服务器
运维·服务器
✿ ༺ ོIT技术༻1 小时前
Linux:认识文件系统
linux·运维·服务器
会掉头发2 小时前
Linux进程通信之共享内存
linux·运维·共享内存·进程通信
我言秋日胜春朝★2 小时前
【Linux】冯诺依曼体系、再谈操作系统
linux·运维·服务器
全能全知者2 小时前
docker快速安装与配置mongoDB
mongodb·docker·容器