service的创建与管理
创建deployment
1 | kubectl create deployment nginx --image=nginx --port=80 -- replicas=2 |
查看所创建的pod
查看deployment
- Error: unknown flag: —replicas See ‘kubectl run —help’ for usage.
- 新版本中命令发生了一些改变,1.18版本后run没有replicas
- create deployment命令中存在replicas选项
创建service
一、通过kubectl expose命令创建
操作一:创建集群内部可访问的Service
创建Service
1 | kubectl expose deploy nginx --name=svc-nginx --type=ClusterIP --port=8000 --target-port=80 |
expose 创建 service
—type=ClusterIP 指定 service 类型
—port=80 指定 service 端口
—target-port=80 指定 pod 端口
查看Service
1 | kubectl get svc svc-nginx -o wide |
集群内部访问Service
1 | curl CLUSTER-IP:8000 |
curl CLUSTER-IP:80
这里产生了一个CLUSTER-IP,这就是service的IP,在Service的生命周期中,这个地址是不会变动的,可以通过这个IP访问当前service对应的POD.
这里创建的Service的type类型为ClusterIP,这个ip地址只用集群内部可访问。
操作二:创建集群外部也可访问的Service
需要创建外部也可以访问的Service,需要修改type为NodePort1
kubectl expose deploy nginx --name=svc-nginx2 --type=NodePort - -port=9000 --target-port=80
查看Service
1 | kubectl get svc svc-nginx2 -o wide |
此时查看,会发现出现了NodePort类型的Service,而且有一对Port(9000:32329/TCP)
集群内访问Service
curl NodePortip:9000
curl 10.97.105.121:9000
集群外访问Service
接下来就可以通过集群外的主机(如何电脑主机)访问 节点IP(node的IP):32329访问服务了
例如在的电脑主机上通过浏览器访问下面的地址
http://192.168.254.130:32329/
删掉service
1 | _kubectl delete service [service-name] --type=[service-type] 其中,[service-type]为service的类型,可以是ClusterIP,NodePort或LoadBalancer。 |
1 | _kubectl delete service nginx |
二、通过YAML创建
写yaml配置方式
创建一个 svc-nginx.yaml ,内容如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14apiVersion: v1
kind: Service
metadata:
name: svc-nginx3
namespace:
spec:
clusterIP:
ports:
- port: 7000
protocol: TCP
targetPort: 80
selector:
app: nginx
type: ClusterIP
然后就可以执行对应的创建和删除命令了:
创建:1
kubectl create -f svc-nginx.yaml
删除:1
kubectl delete -f svc-nginx.yaml