当前位置:网站首页>Kubernetes resource object introduction and common commands (III)
Kubernetes resource object introduction and common commands (III)
2022-07-01 23:38:00 【Jiang Xiaonan】
Service
A set of Pods An abstract method that is exposed as a network service . It can also be understood as Pod Service discovery and load balancing .
Service discovery and load balancing :Service Will detect pod The state of , Traffic will only be sent to normal with average scores pod in .

establish Service
expose Deploy. port 8000.
Command line mode
[[email protected] ~]# kubectl expose deployment my-app --port=8000 --target-port=80
service/my-app exposed
[[email protected] ~]# kubectl get service
yaml The way ,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] ~]#
see 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] ~]#
You can see what we created above Service Of ip by 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] ~]#
Be careful : We can use ip:8000 In the form of any node access in the cluster . We can also do that pod Inside Use domain name : port Form access . The form of domain name :service name . Namespace .svc: port . for example :my-app.default.svc:8000.
Expand :
see pod label
[[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] ~]#
Use tags to retrieve 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] ~]#
Delete Service
[[email protected] ~]# kubectl delete service my-app
service "my-app" deleted
[[email protected] ~]#
ClusterIP

We created Service The default is ClusterIP, It's called clustering ip, It can only be used inside the cluster . Equate to :
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

Created this way Service It can also be accessed outside the cluster . Because he will be in every pod Show a new port .
Command line mode
[[email protected] ~]# kubectl expose deploy my-app --port=8000 --target-port=80 --type=NodePort
service/my-app exposed
[[email protected] ~]#
yaml The way .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] ~]#
Contrast found in PORT(S) A mapping port is added in 32047, This port is available on every node , Can pass node ip:30247 Access outside the cluster .

NodePort In addition to being accessible outside the cluster , The rest and ClusterIP Agreement .
Summary
NodePort The scope is 30000-32767 Randomly generated between . ClusterIP Can only be used within a cluster . NodePort Can pass node ip: new portAccess outside the cluster .Whether it's ClusterIP still NodePort, Will generate CLUSTER-IP, It can be used in the cluster .Use ip: portTo use on cluster nodes , anddomain name : portTo be in pod Internal use .How to write a domain name : service name . In the namespace .svc
边栏推荐
- PostgreSQL source code (57) why is the performance gap so large in hot update?
- Redis 主从同步
- Daily three questions 6.30 (2)
- Stm32f030f4 drives tim1637 nixie tube chip
- SWT/ANR问题--SWT 导致 low memory killer(LMK)
- TS初次使用、ts类型
- mysql:insert ignore、insert和replace区别
- Postgresql源码(57)HOT更新为什么性能差距那么大?
- 【ES实战】ES上的安全性运行方式
- 第六章 数据流建模
猜你喜欢

Notes on problems - /usr/bin/perl is needed by mysql-server-5.1.73-1 glibc23.x86_ sixty-four

Notblank and notempty

from pip._ internal. cli. main import main ModuleNotFoundError: No module named ‘pip‘

安全协议重点

2021 robocom world robot developer competition - preliminary competition of undergraduate group

字典、哈希表、数组的概念

SWT/ANR问题--SWT 导致 kernel fuse deadlock

PyCharm调用matplotlib绘图时图像弹出问题怎么解决

物联网现状及未来发展趋势

物联网技术应用属于什么专业分类
随机推荐
Zero foundation tutorial of Internet of things development
Yunxin small class | common cognitive misunderstandings in IM and audio and video
ADO.NET之sqlCommand对象
华为HMS Core携手超图为三维GIS注入新动能
安全协议重点
Why is PHP called hypertext preprocessor
MySQL binlog cleanup
图的遍历之深度优先搜索和广度优先搜索
Write some suggestions to current and future doctoral students to sort out and share
Leetcode (34) -- find the first and last positions of elements in a sorted array
JS - use of arguments
SWT / anr problem - SWT causes kernel fuse deadlock
2021 robocom world robot developer competition - preliminary competition of undergraduate group
excel如何打开100万行以上的csv文件
SWT/ANR问题--SWT 导致 low memory killer(LMK)
Door level modeling - after class exercises
golang中的iota
MySQL Replication中并行复制怎么实现
2021 robocom world robot developer competition - preliminary competition of higher vocational group
学成在线案例实战