一、环境
节点 | IP | 服务 |
master | 192.168.126.46 | docker、kubeadm、kubelet、kubectl、flannel、telnet |
node1 | 192.168.126.47 | docker、kubeadm、kubelet、kubectl、flannel、telnet |
node2 | 192.168.126.48 | docker、kubeadm、kubelet、kubectl、flannel、telnet |
ubuntu20 | 192.168.126.211 | telnet |
win11 | 192.168.3.13 | telnet |
二、部署服务
1.创建 redis-v1 的 Deployment 资源
该资源使用 redis 镜像,并指定了容器端口为 6379
kubectl create deployment redis-v1 --image=redis --port 6379
(1)查看刚创建的 Deployment 和其状态
kubectl get deployments
(2)查看更详细的信息,包括 Pod 的状态
kubectl describe deployment redis-v1
(3)查看redis 的 Service的详细信息
kubectl describe svc redis
此时只能内部使用服务,地址是分配的虚拟地址:
*10.103.94.58:6379 #服务的集群 IP 地址,这是 Kubernetes 内部用于路由到服务的 IP 地址。
*10.244.1.32:6379 #服务的端点,这里是这是与该服务相关联的 Pod 的 IP 地址和端口。
(4)node1访问
(5)node2访问
2.暴露端口,监听6379端口
kubectl expose deployment redis-v1 --port=6379 --target-port=6379 --name=redis-service --type=NodePort
(1)查看pod网络状态详细信息和 Service暴露的端口
kubectl get pods,svc -o wide
可以看到随机分配31400端口。因为在Kubernetes中,NodePort类型的Service会在每个节点的指定端口上开放访问,因此集群内所有节点的IP都可以访问这个Service;由于NodePort类型Service的特性,使得Redis服务可以通过集群内任意节点的IP和指定的NodePort端口进行访问,从而实现了在K8s集群内部的广泛可达性