Kubernetes 入门:运行无状态服务
本文以 ANOYI-BLOG 这个博客系统为例,演示在 Kubernetes 集群中运行无状态服务,以及相关命令的用法介绍。
先决条件
确保 kubernetes 集群处于运行状态 【Kubernetes 环境搭建 - MacOS】
kubectl cluster-info
输出如下:
Kubernetes master is running at https://192.168.99.100:8443To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
确保 Minikube addon 中的 kube-dns 正常运行 【Minikube 基础插件 addons】
kubectl get po,svc -n kube-system
输出如下
NAME READY STATUS RESTARTS AGE pod/kube-addon-manager-minikube 1/1 Running 0 2d pod/kube-dns-6dcb57bcc8-dq8th 3/3 Running 0 13h pod/kubernetes-dashboard-5498ccf677-487xw 1/1 Running 0 13h pod/storage-provisioner 1/1 Running 0 13h NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP 13h service/kubernetes-dashboard NodePort 10.102.82.122 <none> 80:30000/TCP 13h
创建 Deployment
Kubernetes Pod 是一个或多个容器的组合,为了方便管理容器和容器间的通信而捆绑在一起。本教程中的 Pod 只有一个容器。Kubernetes Deployment 检查 Pod 的健康状况,并在 Pod 容器终止时重新启动它。推荐使用 Deployment 是管理 Pod 的创建和伸缩。
创建 Deployment
kubectl run blog-node --image=registry.cn-hangzhou.aliyuncs.com/anoy/blog \ --port=8080 \ --env="JIANSHU_ID=7b7ec6f2db21" \ --env="BLOG_TITLE=Hello Kubernetes" \ --env="BLOG_DESC=本博客正运行在 Kubernetes 环境中"
查看 Deployment
kubectl get deployments
输出如下:
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE blog-node 1 1 1 1 2m
查看 Pod
kubectl get pods
输出如下:
NAME READY STATUS RESTARTS AGE blog-node-7dff65b564-gxkkn 1/1 Running 0 2m
查看 events
kubectl get events
更多详细信息使用命令
kubectl get --help
查看
创建 Service
默认情况下,只能通过 Kubernetes 群集内部的 IP 地址访问 Pod。 要使 Kubernetes 虚拟网络外部可以访问 blog-node
,必须将 Pod 作为 Kubernetes service 暴露。
对外暴露 Deployment
kubectl expose deployment blog-node --type=LoadBalancer
查看服务
kubectl get services
输出如下:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE blog-node LoadBalancer 10.96.38.7 <pending> 8080:31818/TCP 23s kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 16h
--type=LoadBalancer
表示在群集外部公开这个服务。在支持负载平衡器的云提供商上,将提供一个外部 IP 地址来访问该服务。在 Minikube 上,通过 minikube service
命令访问该服务。
minikube service blog-node
执行后,会自动打开浏览器,并访问到服务的首页。
博客演示
更新应用
构建新版本镜像
docker build -t registry.cn-hangzhou.aliyuncs.com/anoy/blog:[新版本号] .
更新 Deployment 中的镜像
kubectl set image deployment/blog-node blog-node=registry.cn-hangzhou.aliyuncs.com/anoy/blog:[新版本号]
重新访问服务
minikube service blog-node
删除 Service 及 Deployment
kubectl delete service blog-node kubectl delete deployment blog-node
作者:Anoyi
链接:https://www.jianshu.com/p/891e722b8591
共同学习,写下你的评论
评论加载中...
作者其他优质文章