k8s 部署memcached ,对外域名为:memcached.idc.xt
要在Kubernetes上部署Memcached并将其公开为“memcached.idc.xt”域名,可以遵循以下步骤:
- 创建一个Kubernetes的deployment
首先,需要创建一个Kubernetes deployment来运行Memcached容器。可以使用以下命令创建一个名为“memcached-deployment”的deployment:
kubectl create deployment memcached-deployment --image=memcached --replicas=1
这将创建一个名为“memcached-deployment”的deployment,并使用Memcached的默认镜像来创建一个副本(replica)。
- 创建一个Kubernetes的service
接下来,需要创建一个Kubernetes service来公开Memcached deployment。可以使用以下命令创建一个名为“memcached-service”的service:
kubectl create service clusterip memcached-service --tcp=11211:11211
这将创建一个名为“memcached-service”的service,并将其公开为ClusterIP类型。该服务将Memcached容器中的11211端口映射到Kubernetes集群内的11211端口。
- 创建一个Kubernetes ingress
最后,需要创建一个Kubernetes ingress来将“memcached.idc.xt”域名映射到Memcached service。可以使用以下YAML文件创建一个名为“memcached-ingress”的ingress:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: memcached-ingress spec: rules: - host: memcached.idc.xt http: paths: - path: / pathType: Prefix backend: service: name: memcached-service port: name: memcached
将此文件保存为“memcached-ingress.yaml”,然后使用以下命令创建ingress:
kubectl apply -f memcached-ingress.yaml
这将创建一个名为“memcached-ingress”的ingress,并将“memcached.idc.xt”域名映射到Memcached service。
现在,可以使用“memcached.idc.xt”域名来访问Memcached服务。
补充
在Kubernetes中,Deployment是用来创建和管理Pods的资源对象,而Service是一种抽象,用于将一组Pods公开为稳定的网络服务。在运行Memcached容器的场景中,Deployment将负责创建和管理运行Memcached容器的Pods,而Service将负责将这些Pods公开为一个稳定的网络服务。
具体来说,Deployment对象定义了运行Memcached容器所需的Pod模板,并可以指定需要运行多少个Pod。Kubernetes会使用该Deployment对象来创建并管理相应数量的Pods,并确保这些Pods的状态与Deployment定义的期望状态一致。这意味着,如果一个Pod失败或终止,Deployment将自动创建一个新的Pod来替代它。
而Service对象则定义了一组Pods的网络访问策略,例如负载均衡、服务发现等。对于运行Memcached容器的场景,可以使用Service对象将所有运行Memcached容器的Pods公开为一个单独的服务。这样,其他应用程序可以通过访问该服务的名称和端口来访问Memcached容器,而无需知道具体运行该容器的Pod的IP地址和端口。
因此,在Kubernetes中,Service和Deployment是紧密相关的资源对象,分别用于管理网络服务和容器部署。在运行Memcached容器的场景中,Deployment用于创建和管理容器Pods,而Service用于将这些Pods公开为一个网络服务。
在Kubernetes中,Service对象可以通过多种方式与Pods建立对应关系,其中一种方式是通过Pods的端口号来确定对应关系。具体来说,在运行Memcached容器的场景中,可以通过创建一个Service对象,并将其类型设置为ClusterIP来将所有运行Memcached容器的Pods公开为一个服务。在创建Service对象时,可以指定一个或多个目标端口,这些目标端口将与Pods的端口进行匹配,从而建立Service对象与Pods的对应关系。
例如,如果Memcached容器运行在Pods的11211端口上,可以创建一个Service对象,并将其目标端口设置为11211,这样Service对象将会将所有运行Memcached容器的Pods与该端口建立对应关系。然后,其他应用程序可以通过访问该Service对象的名称和端口来访问Memcached容器,而Kubernetes将负责将请求转发到对应的Pods上。
需要注意的是,如果Memcached容器运行在Pods的不同端口上,或者一个Pod上运行多个Memcached容器,则需要通过Service对象的端口映射来指定对应关系。具体来说,可以创建一个Service对象,并将其目标端口设置为需要访问的端口号,然后使用端口映射将该端口映射到Pods中运行Memcached容器的端口上。这样,Service对象就可以正确地将请求转发到对应的Pods上了。