打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Kubernetes 入门:运行无状态服务

本文以 ANOYI-BLOG 这个博客系统为例,演示在 Kubernetes 集群中运行无状态服务,以及相关命令的用法介绍。

先决条件

确保 kubernetes 集群处于运行状态 【Kubernetes 环境搭建 - MacOS】

  1. kubectl cluster-info

输出如下:

  1. Kubernetes master is running at https://192.168.99.100:8443

  2. To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

确保 Minikube addon 中的 kube-dns 正常运行 【Minikube 基础插件 addons】

  1. kubectl get po,svc -n kube-system

输出如下

  1. NAME                                        READY     STATUS    RESTARTS   AGE

  2. pod/kube-addon-manager-minikube             1/1       Running   0          2d

  3. pod/kube-dns-6dcb57bcc8-dq8th               3/3       Running   0          13h

  4. pod/kubernetes-dashboard-5498ccf677-487xw   1/1       Running   0          13h

  5. pod/storage-provisioner                     1/1       Running   0          13h

  6. NAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE

  7. service/kube-dns               ClusterIP   10.96.0.10              53/UDP,53/TCP   13h

  8. service/kubernetes-dashboard   NodePort    10.102.82.122          80:30000/TCP    13h

创建 Deployment

Kubernetes Pod 是一个或多个容器的组合,为了方便管理容器和容器间的通信而捆绑在一起。本教程中的 Pod 只有一个容器。Kubernetes Deployment 检查 Pod 的健康状况,并在 Pod 容器终止时重新启动它。推荐使用 Deployment 是管理 Pod 的创建和伸缩。

创建 Deployment

  1. kubectl run blog-node --image=registry.cn-hangzhou.aliyuncs.com/anoy/blog \

  2.  --port=8080 \

  3.  --env='JIANSHU_ID=7b7ec6f2db21' \

  4.  --env='BLOG_TITLE=Hello Kubernetes' \

  5.  --env='BLOG_DESC=本博客正运行在 Kubernetes 环境中'

查看 Deployment

  1. kubectl get deployments

输出如下:

  1. NAME        DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE

  2. blog-node   1         1         1            1           2m

查看 Pod

  1. kubectl get pods

输出如下:

  1. NAME                         READY     STATUS    RESTARTS   AGE

  2. blog-node-7dff65b564-gxkkn   1/1       Running   0          2m

查看 events

  1. kubectl get events

更多详细信息使用命令 kubectlget--help 查看

创建 Service

默认情况下,只能通过 Kubernetes 群集内部的 IP 地址访问 Pod。 要使 Kubernetes 虚拟网络外部可以访问 blog-node,必须将 Pod 作为 Kubernetes service 暴露。

对外暴露 Deployment

  1. kubectl expose deployment blog-node --type=LoadBalancer

查看服务

  1. kubectl get services

输出如下:

  1. NAME         TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE

  2. blog-node    LoadBalancer   10.96.38.7       8080:31818/TCP   23s

  3. kubernetes   ClusterIP      10.96.0.1            443/TCP          16h

--type=LoadBalancer 表示在群集外部公开这个服务。在支持负载平衡器的云提供商上,将提供一个外部 IP 地址来访问该服务。在 Minikube 上,通过 minikube service命令访问该服务。

  1. minikube service blog-node

执行后,会自动打开浏览器,并访问到服务的首页。

更新应用

构建新版本镜像

  1. docker build -t registry.cn-hangzhou.aliyuncs.com/anoy/blog:[新版本号] .

更新 Deployment 中的镜像

  1. kubectl set image deployment/blog-node blog-node=registry.cn-hangzhou.aliyuncs.com/anoy/blog:[新版本号]

重新访问服务

  1. minikube service blog-node

删除 Service 及 Deployment

  1. kubectl delete service blog-node

  2. kubectl delete deployment blog-node


最后

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
K8S太火了!花10分钟玩转它不香么?
图文说明:必须了解K8S部署的debug思路
基于容器微服务的 PaaS 云平台设计(二)通过kubernetes实现微服务容器管理
CKA 真题
Kubernetes 运维学习笔记
k8s安全学习
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服