通过kubelet命令管理service资源

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  # 声明式删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的爱迪生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值