1、查看service
service是一个网络集群代理插件,主要用于代理后端pod集群(服务发现)。
# 查看所有的service
# kubectl get svc
# kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 192.168.0.1 <none> 443/TCP 55d
nginx-dp3 ClusterIP 192.168.23.8 <none> 80/TCP 16h
# 查看指定service详细信息
# kubectl describe svc nginx-dp3
Name: nginx-dp3 # service的名称
Namespace: default
Labels: app=nginx-dp3
Annotations: <none>
Selector: app=nginx-dp3
Type: ClusterIP # 集群ip类型
IP: 192.168.23.8 # service的ip地址,虚ip,只在k8s里被使用,这个地址段不能和宿主机网络冲突
Port: <unset> 80/TCP # service对外暴露的端口??
TargetPort: 80/TCP
Endpoints: 172.17.21.5:80,172.17.22.5:80 # service下代理的pod
Session Affinity: None
Events: <none>
# 通过ipvsadm可以看到nginx-dp3service下面代理的pod
# ipvsadm -Ln
TCP 192.168.23.8:80 nq
-> 172.17.21.5:80 Masq 1 0 0
-> 172.17.22.5:80 Masq 1 0 0
2、为pod控制器创建service并通过端口暴露出来
先创建好pod控制器才能为这pod控制器创建services并暴露端口
service:可以配置一个固定接入点,后端可以代理多个pod
expose:表示暴露端口
注意:daemonset类型的pod控制器无法通过命令行创建service
(1) 创建一个services网络并暴露80端口
# kubectl expose deployment nginx-dp3 --port=80 -n default
(2) 查看这个暴露的端口
# kubectl get services -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
nginx-dp3 ClusterIP 192.168.23.8 <none> 80/TCP 14s app=nginx-dp3
(3) 查看这个pod详细信息,它是位于hdss7-21上的
# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-dp3-57675948d8-8pbhs 1/1 Running 0 72m 172.17.21.5 hdss7-21.host.com <none> <none>
(4) 登录hdss7-21上就可以访问者ip了
# curl 192.168.23.8
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
(5) 步骤(4)能访问到的原因是lvs做了一层代理
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.0.1:443 nq
-> 10.4.7.21:6443 Masq 1 0 0
-> 10.4.7.22:6443 Masq 1 0 0
TCP 192.168.23.8:80 nq # 这里有一个80的地址,nq表示调度算法
-> 172.17.21.5:80 Masq 1 0 3 # 后端代理的是pod的内网ip
(6) 我们把nginx-dp3扩容成2个pod容器,再查看lvs
# kubectl scale deployment nginx-dp3 --replicas=2
# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.23.8:80 nq
-> 172.17.21.5:80 Masq 1 0 0
-> 172.17.22.5:80 Masq 1 0 0 # 这里多个一个
3、删除svc
# kubectl delete svc nginx-ds
# kubecte delte -f nginx-ds-svc.yaml # 声明式删除