一、前言
k8s 引用程序的相关创建、查询、管理等操作需要kubectl支持
输入kubectl -h 或 kubectl xx -h 可以查询相关指令支持
二、开始创建(以Nginx为例)
1、下载安装docker镜像
//查询Nginx镜像版本
$ docker search nginx
//下载最新镜像
$ docker pull nginx:latest
//查看一下
$ docker images
2、kubectl创建应用程序(Deployment)
创建指令为 kubectl run,查询相关指令可执行 kubectl run -h
1、测试执行指令
$ kubectl run nginx-deploy --image=nginx --port=80 --replicas=1 --dry-run=true
#nginx-deploy deployment显示的名称
#--image 镜像的地址
#--port pod暴露的端口
#--replicas 副本的个数
#--dry-run 作为测试指令运行,未实际执行
2、正式执行
$ kubectl run nginx-deploy --image=nginx --port=80 --replicas=2
deployment.apps "nginx-deploy" created #创建成功
3、查询在deployment是否存在
$ kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
nginx-deploy 1 1 1 1 8s
# DESIRED 期望pod个数
# CURRENT 当前pod个数
# UP-TO-DATE 最新pod个数
# AVAILABLE 可用pod个数
4、返回所有Pod的列表
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deploy-acd123daad-asdsa 1/1 Running 0 19s
【注】Deployment部署成功了,但是外部是不可以访问的
3、kubectl创建服务(Service)
在集群外部是无法访问集群内部程序的,Service是提供于外部访问集群中Pod
创建指令为kubectl expose,查询相关指令可执行 kubectl expose -h
1、执行创建
$ kubectl expose deployment nginx-deploy --name=nginx --port=8099 --target-port=80 --type=NodePort
【注】port暴露端口,target-port对应端口,当port重复时,会自动映射一个新的端口,查询时PORT下显示为80:[随机端口]/TCP,故建议制定端口
其它参数描述与Deployment相同,重点描述一下type参数:
Cluster IP(默认): 只有集群内部访问
NodePort: 使用NAT方式,在集群中每个选定的节点的同一端口上暴露服务,可以在集群外部访问服务。
LoadBalancer:创建外部负载均
ExternalName:使用任意名称显示服务
2、查询信息
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.xx.xx.1 <none> 443/TCP 30m
nginx NodePort 192.168.11.3 <none> 8099/TCP 8s
4、访问
根据上一步创建的Service,访问192.168.11.3:8099(即CLUSTER-IP:PORT)就可以了