首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
基础
使用 Minikube 创建集群
使用 kubectl 创建 Deployment
查看 pod 和工作节点
使用 Service 暴露你的应用
运行应用程序的多个实例
执行滚动更新
使用 ConfigMap 来配置 Redis
使用 AppArmor 限制容器对资源的访问
在集群级别应用 Pod 安全标准
在名字空间级别应用 Pod 安全标准
使用 seccomp 限制容器的系统调用
公开外部 IP 地址以访问集群中应用程序
使用 Redis 部署 PHP 留言板应用程序
StatefulSet 基础
使用持久卷部署 WordPress 和 MySQL
使用 StatefulSet 部署 Cassandra
运行 ZooKeeper
服务器端应用API
客户端库
用户认证
使用启动引导令牌
证书签名请求
准入控制器
管理服务账号
使用 RBAC 鉴权
当前位置:
首页>>
技术小册>>
Kubernetes中文教程(六)
小册名称:Kubernetes中文教程(六)
此页面显示如何创建公开外部 IP 地址的 Kubernetes 服务对象。 * 安装 [kubectl]。 * 使用 Google Kubernetes Engine 或 Amazon Web Services 等云供应商创建 Kubernetes 集群。 本教程创建了一个[外部负载均衡器], 需要云供应商。 * 配置 `kubectl` 与 Kubernetes API 服务器通信。有关说明,请参阅云供应商文档。 * 运行 Hello World 应用程序的五个实例。 * 创建一个公开外部 IP 地址的 Service 对象。 * 使用 Service 对象访问正在运行的应用程序。 ## 为一个在五个 pod 中运行的应用程序创建服务 1. 在集群中运行 Hello World 应用程序: ```shell kubectl apply -f https://k8s.io/examples/service/load-balancer-example.yaml ``` 前面的命令创建一个 对象和一个关联的 对象。 ReplicaSet 有五个 , 每个都运行 Hello World 应用程序。 2. 显示有关 Deployment 的信息: ```shell kubectl get deployments hello-world kubectl describe deployments hello-world ``` 3. 显示有关 ReplicaSet 对象的信息: ```shell kubectl get replicasets kubectl describe replicasets ``` 4. 创建公开 Deployment 的 Service 对象: ```shell kubectl expose deployment hello-world --type=LoadBalancer --name=my-service ``` 5. 显示有关 Service 的信息: ```shell kubectl get services my-service ``` 输出类似于: ```console NAME TYPE CLUSTER-IP EXTERNAL-IP PORT AGE my-service LoadBalancer 10.3.245.137 104.198.205.71 8080/TCP 54s ``` `type=LoadBalancer` 服务由外部云服务提供商提供支持,本例中不包含此部分, 详细信息请参考[此页] 如果外部 IP 地址显示为 \<pending\>,请等待一分钟再次输入相同的命令。 6. 显示有关 Service 的详细信息: ```shell kubectl describe services my-service ``` 输出类似于: ```console Name: my-service Namespace: default Labels: app.kubernetes.io/name=load-balancer-example Annotations: <none> Selector: app.kubernetes.io/name=load-balancer-example Type: LoadBalancer IP: 10.3.245.137 LoadBalancer Ingress: 104.198.205.71 Port: <unset> 8080/TCP NodePort: <unset> 32377/TCP Endpoints: 10.0.0.6:8080,10.0.1.6:8080,10.0.1.7:8080 + 2 more... Session Affinity: None Events: <none> ``` 记下服务公开的外部 IP 地址(`LoadBalancer Ingress`)。 在本例中,外部 IP 地址是 104.198.205.71。还要注意 `Port` 和 `NodePort` 的值。 在本例中,`Port` 是 8080,`NodePort` 是 32377。 7. 在前面的输出中,你可以看到服务有几个端点: 10.0.0.6:8080、10.0.1.6:8080、10.0.1.7:8080 和另外两个, 这些都是正在运行 Hello World 应用程序的 Pod 的内部地址。 要验证这些是 Pod 地址,请输入以下命令: ```shell kubectl get pods --output=wide ``` 输出类似于: ```console NAME ... IP NODE hello-world-2895499144-1jaz9 ... 10.0.1.6 gke-cluster-1-default-pool-e0b8d269-1afc hello-world-2895499144-2e5uh ... 10.0.1.8 gke-cluster-1-default-pool-e0b8d269-1afc hello-world-2895499144-9m4h1 ... 10.0.0.6 gke-cluster-1-default-pool-e0b8d269-5v7a hello-world-2895499144-o4z13 ... 10.0.1.7 gke-cluster-1-default-pool-e0b8d269-1afc hello-world-2895499144-segjf ... 10.0.2.5 gke-cluster-1-default-pool-e0b8d269-cpuc ``` 8. 使用外部 IP 地址(`LoadBalancer Ingress`)访问 Hello World 应用程序: ```shell curl http://<external-ip>:<port> ``` 其中 `<external-ip>` 是你的服务的外部 IP 地址(`LoadBalancer Ingress`), `<port>` 是你的服务描述中的 `port` 的值。 如果你正在使用 minikube,输入 `minikube service my-service` 将在浏览器中自动打开 Hello World 应用程序。 成功请求的响应是一条问候消息: ```shell Hello Kubernetes! ``` 要删除 Service,请输入以下命令: ```shell kubectl delete services my-service ``` 要删除正在运行 Hello World 应用程序的 Deployment、ReplicaSet 和 Pod,请输入以下命令: ```shell kubectl delete deployment hello-world ``` 进一步了解[使用 Service 连接到应用]。
上一篇:
使用 seccomp 限制容器的系统调用
下一篇:
使用 Redis 部署 PHP 留言板应用程序
该分类下的相关小册推荐:
Kubernets合辑14-日志收集
Kubernetes合辑1-安装Kubernetes
Kubernets合辑2-部署Ingress
Kubernets合辑4-kubernetes入门
Kubernetes中文教程(一)
Kubernets合辑11-持续集成
Kubernets合辑13-集群监控
Kubernets合辑10-网络
Kubernetes中文教程(四)
Kubernets合辑5-Pod控制器
Kubernetes中文教程(二)
Kubernets合辑3-kubernetes介绍