K8s快速配置公开服务
星期四, 9月 12, 2024 | 1分钟阅读 | 更新于 星期四, 9月 12, 2024
简单快速的配置k8s的公开服务
k8s一般不会直接使用pod进行服务的访问连接,原因不仅是pod容易被销毁重建,还因为pod的地址在集群外无法访问,从构建一个deployment开始快速配置公开访问的服务。
1.使用yaml配置文件快速创建一个deployment组件
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.27
ports:
- containerPort: 80
此文件创建了一个简单的nginx服务器,使用1.27版本,拥有三个分片
2.使用kubectl进入一个pod进行访问测试
kubectl get pod -0 wide #此命令可以快速查看pod的ip地址
检测到地址后,进行pod的访问
kubectl exec -it <pod-name> -- /bin/bash
使用curl
访问随机一个pod的ip地址
curl <ip addr>
如果不出意外,则结果如下图所示:
ctrl+d退出pod,再访问则返回空响应:
3.直接为deployment构建一个service作为调用接口
1.可以直接为组件创建一个service组件是最快的方法,但不常用。。。。
如果有100000000个deployment组件就遭老罪了,直接使用expose参数快速创建一个service
kubectl expose deployment <deployment-name>
完成后,访问service组件的ip地址正常访问即可
2.通过配置文件的方式创建service
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
重要
selector
为选择器,它将判断具体为哪些应用创建service,可以通过labels
获取应用名
kubectl describe pod <pod-name>
检查集群运行情况即可
4.将服务改为公共服务
在将服务创建后,发现在外部还是无法访问,这是因为只创建了service组件,还没有指定这是个什么服务呢0.o
1.node:port服务
node:port
服务可以实现将集群内部的服务公开到集群的节点上,因此只需要保证服务类型为此即可
实现外部服务
警告
service
组件没有指定类型,则默认为clusterip
类型的服务
2.修改配置文件
打开刚才创建service的yaml文件,进行配置(指定服务类型,以及对外端口):
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30081
重要 对外端口的范围为
30000-32767
之间
apply一下配置文件,检查服务状态:
使用浏览器检查服务状态:
kubectl get nodes -o wide #获取集群所有节点的ip地址
这样,一个外部可以访问的服务就配置好了