kubernetes基础使用
官方文档:https://v1-13.docs.kubernetes.io/zh/docs/tutorials/kubernetes-basics/
pods生命周期:https://v1-13.docs.kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/
配置: https://v1-13.docs.kubernetes.io/docs/concepts/configuration/
labels: https://v1-13.docs.kubernetes.io/docs/concepts/overview/working-with-objects/labels/
Deployments: https://v1-13.docs.kubernetes.io/docs/concepts/workloads/controllers/deployment/
Services: https://v1-13.docs.kubernetes.io/docs/concepts/services-networking/service/
Scaling: https://v1-13.docs.kubernetes.io/docs/tutorials/kubernetes-basics/scale/scale-intro/
autoscale: https://v1-13.docs.kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
#查看k8s版本 kubectl version #查看所有的节点 kubectl get nodes #获取namespace kubectl get namespace #查看namespace为online的pod kubectl get pods --namespace=online #部署应用 kubectl run kubernetes-bootcamp --image=jocatalin/kubernetes-bootcamp:v1 --port=8080 #查看部署应用列表 kubectl get deployments --namespace= #查看所有pod kubectl get pods --namespace= #获取执行中的pod并设置成环境变量POD_NAME export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}') echo Name of the Pod: $POD_NAME
#访问pod curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/
kubectl 故障排查
kubectl get pods --namespace= #查看resources列表 kubectl describe pods --namespace= #查看具体的resources情况 kubectl logs $POD_NAME --namespace= #查看pod里的容器日志 kubectl exec --namespace= #在pod里的容器里执行命令 kubectl exec $POD_NAME env --namespace= #查看pod环境变量 kubectl exec -ti $POD_NAME bash --namespace= #进入pod终端
Service & labels
Service type
类型 | 说明 |
---|---|
ClusterIP | 默认选项,只能集群内部访问 |
NodePort | 使用NAT暴露每个节点的相同端口 并使用<NodeIP>:<NodePort> 方式让集群外部访问 ClusterIP的超集 |
LoadBalancer | 创建负载均衡器分配一个固定的IP NodePort的超集 |
ExternalName | 使用域名解析的CNAME来指定名字或者手动自定名字 不使用proxy 需要v1.7及以上版本的kube-dns |
更多的内容参考: https://v1-13.docs.kubernetes.io/docs/tutorials/services/source-ip/ https://v1-13.docs.kubernetes.io/docs/concepts/services-networking/connect-applications-service/ |
labels
service通过labels把一组pods管理起来。
比如通过labels指定开发、测试、生产环境
比如打版本tag
使用标签分类
#获取service kubectl get services --namespace= #指定service type kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080 #查看指定services信息 kubectl describe services/kubernetes-bootcamp --namespace= #设置NODE_PORT端口为环境变量 export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}') echo NODE_PORT=$NODE_PORT #查看部署情况 kubectl describe deployment --namespace= #-l根据label查询pods kubectl get pods -l run=kubernetes-bootcamp --namespace= #-l根据label查询services kubectl get services -l run=kubernetes-bootcamp --namespace= export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}') echo Name of the Pod: $POD_NAME #设置label,label是key/value对 kubectl label pod $POD_NAME app=v1 #根据label查询pods kubectl get pods -l app=v1 --namespace= #删除service kubectl delete service -l run=kubernetes-bootcamp --namespace= #pod里执行命令 kubectl exec -ti $POD_NAME curl localhost:8080 --namespace=
扩缩容
kubectl get deployments #扩容成4个 kubectl scale deployments/kubernetes-bootcamp --replicas=4 #查看pod是否变成4个 kubectl get pods -o wide #查看deployments详情 kubectl describe deployments/kubernetes-bootcamp #设置环境变量 export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}') echo NODE_PORT=$NODE_PORT #缩容 kubectl scale deployments/kubernetes-bootcamp --replicas=2
滚动升级
#查看deployments kubectl get deployments kubectl get pods kubectl describe pods #滚动升级 kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2 #查看升级是否成功 kubectl describe services/kubernetes-bootcamp #查看升级状态 kubectl rollout status deployments/kubernetes-bootcamp #升级一个不存在的版本,让升级失败。 kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=gcr.io/google-samples/kubernetes-bootcamp:v10 #查看pods是否失败 kubectl get pods #查看失败日志 kubectl logs $POD_NAME #回退版本,然后用上面的命令查看是否回退成功 kubectl rollout undo deployments/kubernetes-bootcamp
根据上面的内容部署官网的例子:https://kubernetes.io/docs/tutorials/stateless-application/guestbook/
image 从docker hub 上找,先pull下来
#在有问题的node上执行以下命令 查看问题 journalctl -f -u kubelet
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Cloud Toolkit 部署应用到阿里云轻量应用服务器
在之前的文章《在 Intellij IDEA 中部署 Java 应用到 阿里云 ECS》中讲解了如何将一个本地应用部署到阿里云 ECS 上去,有些读者反馈目前正在使用阿里云轻量应用服务器,咨询是否可以通过 Cloud Toolkit 插件将应用部署到这些服务器上去?最新版本的 Cloud Toolkit 已经发布,完全支持啦。 由于阿里云 ECS 云助手只能支持 VPC 网络机器,因此,轻量应用服务器只能通过 Host 模式手动添加机器,采用标准 SSH 协议来进行部署 添加服务器 如上图所示,在菜单 Tools - Alibaba Cloud - Alibaba Cloud View - Host中打开机器视图界面,如下图: 点击右上角Add Host按钮,出现添加机器界面 设置服务器的 SSH 账号 部署 在 IntelliJ IDEA 中
- 下一篇
Aliyun Linux 2 发布通知
经过数月的开发、测试与优化,Aliyun Linux 2 终于与大家见面了。现已开放全地域购买,您现在可以从控制台购买ECS,并选择公共镜像 Aliyun Linux,版本为 2.1903 以使用最新的 Aliyun Linux 操作系统,有任何问题,请参考下列页面寻求帮助。 产品页面: https://www.aliyun.com/product/alinux 文档:https://help.aliyun.com/document_detail/111881.html FAQ: https://help.aliyun.com/document_detail/111842.html GitHub: https://alibaba.github.io/cloud-kernel/os.html 论坛:https://bbs.aliyun.com
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16