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

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

相关推荐
Cloud_Air7546 分钟前
从零开始使用SSH链接目标主机(包括Github添加SSH验证,主机连接远程机SSH验证)
运维·ssh
Hello.Reader1 小时前
基于 Nginx 的 WebSocket 反向代理实践
运维·websocket·nginx
qq_273900231 小时前
CentOS系统防火墙服务介绍
linux·运维·centos
竹木一5402 小时前
Docker拉取镜像代理配置实践与经验分享
经验分享·docker·容器
小灰灰__2 小时前
Linux安装ffmpeg7.1操作说明
linux·运维·服务器
互联网搬砖老肖2 小时前
运维打铁:Centos 7 安装 redis_exporter 1.3.5
运维·redis·centos
BXCQ_xuan3 小时前
Typecho博客网站头部SEO优化完整指南
运维·服务器·数据库·php·web
破 风3 小时前
Docker启动mysql容器时找不到 mysqlx.sock 和 mysqld.sock
mysql·docker·容器
鱼饼6号4 小时前
Jenkins Pipeline 构建 CI/CD 流程
linux·运维·服务器·ci/cd·容器·jenkins
国际云,接待5 小时前
[特殊字符]服务器性能优化:从硬件到AI的全栈调优指南
运维·服务器·人工智能·阿里云·性能优化·架构·云计算