小白到运维工程师自学之路 第七十三集 (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

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

创建nginx-deployment应用
kubectl create -f nginx-deployment.yaml

查看deployment详情  (由于需要下载镜像所有需要等一会才会成功)
kubectl get deployment
kubectl get pod

 这个是正在获取镜像小白到运维工程师自学之路 第七十三集 (kubernetes应用部署)_第2张图片

 这个是下载完成的

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

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

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

二、创建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

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

 三、发布服务

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

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

执行 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

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

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

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

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

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

你可能感兴趣的:(运维,kubernetes,容器)