当前位置:网站首页>kubernetes资源对象介绍及常用命令(三)
kubernetes资源对象介绍及常用命令(三)
2022-07-03 17:06:00 【傻啦猫@[email protected]】
Service
将一组Pods公开为网络服务的抽象方法。也可以理解为Pod的服务发现与负载均衡。
服务发现与负载均衡:Service会检测pod的状态,流量只会较为平均得分发到正常的pod中。

创建Service
暴露Deploy。端口8000。
命令行方式
[[email protected] ~]# kubectl expose deployment my-app --port=8000 --target-port=80
service/my-app exposed
[[email protected] ~]# kubectl get service
yaml方式,service.yml
apiVersion: v1
kind: Service
metadata:
labels:
app: my-app
name: my-app
spec:
selector:
app: my-app
ports:
- port: 8000
protocol: TCP
targetPort: 80
[[email protected] ~]# kubectl apply -f service.yml
service/my-app created
[[email protected] ~]#
查看Service
[[email protected] ~]# kubectl get service -n default
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23h
my-app ClusterIP 10.96.2.98 <none> 8000/TCP 6s
[[email protected] ~]#
可以看到我们上面创建的Service的ip为10.96.2.98。
[[email protected] ~]# curl 10.96.2.98:8000
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
...
</html>
[[email protected] ~]#
注意:我们这里可以使用ip:8000的形式在集群内的任意节点访问。我们也可以在pod内使用域名:端口的形式访问。域名的形式:service名称.命名空间.svc:端口。例如:my-app.default.svc:8000。
扩展:
查看pod标签
[[email protected] ~]# kubectl get pod [podname] --show-labels
NAME READY STATUS RESTARTS AGE LABELS
my-app-5ff664f457-l7792 1/1 Running 1 20h app=my-app,pod-template-hash=5ff664f457
my-app-5ff664f457-r69z5 1/1 Running 1 20h app=my-app,pod-template-hash=5ff664f457
my-app-5ff664f457-w2d6q 1/1 Running 1 20h app=my-app,pod-template-hash=5ff664f457
my-app-5ff664f457-xsz9l 1/1 Running 1 20h app=my-app,pod-template-hash=5ff664f457
[[email protected] ~]#
使用标签检索Pod
[[email protected] ~]# kubectl get pod -l app=my-app
NAME READY STATUS RESTARTS AGE
my-app-5ff664f457-l7792 1/1 Running 1 20h
my-app-5ff664f457-r69z5 1/1 Running 1 20h
my-app-5ff664f457-w2d6q 1/1 Running 1 20h
my-app-5ff664f457-xsz9l 1/1 Running 1 20h
[[email protected] ~]#
删除Service
[[email protected] ~]# kubectl delete service my-app
service "my-app" deleted
[[email protected] ~]#
ClusterIP

我们上面方式创建Service默认使用的是ClusterIP,称为集群ip,只能在集群内部使用。等同于:
kubectl expose deployment my-app --port=8000 --target-port=80 --type=ClusterIP
apiVersion: v1
kind: Service
metadata:
labels:
app: my-app
name: my-app
spec:
ports:
- port: 8000
protocol: TCP
targetPort: 80
selector:
app: my-app
type: ClusterIP
NodePort

这种方式创建的Service在集群外也可以访问。因为他会在每个pod上映射一个新的端口。
命令行方式
[[email protected] ~]# kubectl expose deploy my-app --port=8000 --target-port=80 --type=NodePort
service/my-app exposed
[[email protected] ~]#
yaml方式。service.yml
apiVersion: v1
kind: Service
metadata:
labels:
app: my-app
name: my-app
spec:
ports:
- port: 8000
protocol: TCP
targetPort: 80
selector:
app: my-app
type: NodePort
kubectl apply -f service.yml
[[email protected] ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 25h
my-app NodePort 10.96.198.191 <none> 8000:32047/TCP 39s
[[email protected] ~]#
对比发现在PORT(S)中多了一个映射端口32047,这个端口在每个节点上都有,可以通过节点ip:30247的方式在集群外进行访问。

NodePort除了可以在集群外访问以外,其余和ClusterIP一致。
小结
NodePort范围在 30000-32767 之间随机生成。 ClusterIP只能在集群内使用。 NodePort可以通过 节点ip:新端口的方式在集群外访问。无论是ClusterIP还是NodePort,都会生成 CLUSTER-IP,可在集群内使用。使用 ip:端口要在集群节点上使用,而域名:端口要在pod内使用。域名的写法:服务名.所在名称空间.svc
本文由 mdnice 多平台发布
版权声明
本文为[傻啦猫@[email protected]]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_45842494/article/details/125567362
边栏推荐
- Squid 服务启动脚本
- CC2530 common registers for timer 1
- How do large consumer enterprises make digital transformation?
- Why is WPA3 security of enterprise business so important?
- RedHat 6.2 配置 Zabbix
- An example of HP array card troubleshooting
- Assembly instance analysis -- screen display in real mode
- MySQL user management
- How to allow remote connection to MySQL server on Linux system?
- Analysis of variance summary
猜你喜欢

Meituan side: why does thread crash not cause JVM crash

What material is 12cr1movr? Chemical property analysis of pressure vessel steel plate 12cr1movr

【Try to Hack】主动侦查隐藏技术

One brush 147-force deduction hot question-4 find the median of two positive arrays (H)
智慧之道(知行合一)

ucore概述

Web crawler knowledge day03

CC2530 common registers for port initialization

Analysis of variance summary

Fast Ethernet and Gigabit Ethernet: what's the difference?
随机推荐
CC2530 common registers for crystal oscillator settings
在iptables防火墙下开启vsftpd的端口
C语言字符串反转
The most complete postman interface test tutorial in the whole network, API interface test
Overview of satellite navigation system
vs code 插件 koroFileHeader
Bcvp developer community 2022 exclusive peripheral first bullet
数据分析必备的能力
Redis:关于列表List类型数据的操作命令
聊聊接口优化的几个方法
CC2530 common registers for serial communication
Leetcode: lucky number in matrix
數據分析必備的能力
What material is sa537cl2 equivalent to in China? Sa537cl2 corresponding material
BYD and great wall hybrid market "get together" again
执行脚本不认\r
utfwry. Dat PHP, about ThinkPHP's method of IP location using utfwry address Library
LeetCode13.罗马数字转整数(三种解法)
Installation and configuration of network hard disk NFS
Prepare for the golden three silver four, 100+ software test interview questions (function / interface / Automation) interview questions. win victory the moment one raises one 's standard