创建deployment

1
kubectl create deployment nginx --image=nginx --port=80 -- replicas=2

查看所创建的pod
image.png
查看deployment
image.png

  1. Error: unknown flag: —replicas See ‘kubectl run —help’ for usage.
  2. 新版本中命令发生了一些改变,1.18版本后run没有replicas
  3. 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 

image.png

集群内部访问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为NodePort

1
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)
image.png

集群内访问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
14
apiVersion: 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