K8s系列之:Service实战和命令整理
一、Service和Pod关系
Service主要作用:
- 服务发现,防止Pod失联
- 定义一组Pod访问策略,负载均衡
Service和Pod关系:
- 根据label和selector标签建立关联
Service类型:
- ClusterIP:集群内部使用
- NodePort:对外访问应用使用
- LoadBalancer:对外访问应用使用,公有云
node内网部署应用,外网一般不能访问到,找一台可以进行外网访问机器,安装nginx,反向代理。手动把可以访问节点添加到nginx里面。
一、创建一组Pod
cat web.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: web
name: web
spec:
replicas: 2
selector:
matchLabels:
app: web
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: web
spec:
containers:
- image: nginx
name: nginx
resources: {}
status: {}
kubectl apply -f web.yaml
二、创建Service的yaml
kubectl expose deployment web --port=80 --target-port=80 --type=NodePort --dry-run -o yaml > service.yaml
cat service.yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: web
name: web
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: web
type: NodePort
status:
loadBalancer: {}
三、根据Service的yaml创建服务
kubectl apply -f service.yaml
四、查看创建的Pod和服务
kubectl get pods,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-85b98978db-2fmpx 1/1 Running 0 5h18m
pod/web-76b56fd968-c7nnr 1/1 Running 0 53m
pod/web-76b56fd968-r8gdd 1/1 Running 0 53m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 6h54m
service/nginx NodePort 10.99.10.254 <none> 80:30407/TCP 5h35m
service/web NodePort 10.103.247.181 <none> 80:31870/TCP 9s
- 不指明TYPE类型为NodePort,默认为ClusterIP
- 注意端口关系,80:31870/TCP,任意nodeIP+端口号访问nginx服务