一、安装部署
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