kubernetes基础使用

简介: 官方文档:https://v1-13.docs.kubernetes.io/zh/docs/tutorials/kubernetes-basics/ 命令 说明 参数说明 kubectl version 查看k8s版本 无 kubectl get nodes.

官方文档: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/

service

labels
service通过labels把一组pods管理起来。
比如通过labels指定开发、测试、生产环境
比如打版本tag
使用标签分类
label

#获取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
相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
存储 监控 Kubernetes
10分钟带你了解k8s基础(kubernetes基础概念总结)
kubernetes基础概念总结 简介 kubernetes是由google主导开发的开源容器管理平台,提供多主机集群,容器编排,容器伸缩等功能 基础组件介绍 docker 容器运行环境的一种实现,封装底层容器 etcd etcd是kubernetes集群用来存储集群相关数据的数据仓库 maste.
2539 0
|
Kubernetes 调度 Docker
Kubernetes基础组件概述
本文讲的是Kubernetes基础组件概述【编者的话】最近总有同学问Kubernetes中的各个组件的相关问题,其实这些概念内容在官方文档中都有,奈何我们有些同学可能英文不好,又或者懒得去看,又或者没有找到,今天有时间就专门写了这篇博客。
2556 0
|
6天前
|
Kubernetes 应用服务中间件 Docker
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件
|
1天前
|
运维 监控 Kubernetes
Kubernetes 集群的监控与日志管理最佳实践
【5月更文挑战第19天】 在现代微服务架构中,容器编排平台如Kubernetes已成为部署、管理和扩展应用程序的关键工具。随着其应用范围不断扩大,集群的稳定性和性能监控变得至关重要。本文将探讨针对Kubernetes集群的监控策略,并深入分析日志管理的实现方法。通过介绍先进的技术堆栈和实用工具,旨在为运维专家提供一套完整的解决方案,以确保集群运行的透明度和可靠性。
30 3
|
2天前
|
存储 运维 监控
Kubernetes 集群的监控与性能优化策略
【5月更文挑战第19天】 在微服务架构日益普及的背景下,容器编排工具如Kubernetes已成为部署、管理和扩展服务的关键平台。然而,随着集群规模的增长和服务的复杂化,有效的监控和性能优化成为确保系统稳定性和高效性的重要挑战。本文将探讨针对Kubernetes集群监控的最佳实践,并提出一系列性能优化策略,旨在帮助运维人员识别潜在的瓶颈,保障服务的持续可靠性及响应速度。
|
4天前
|
资源调度 Kubernetes 监控
Kubernetes 集群性能优化实践
【5月更文挑战第17天】在容器化和微服务架构日益普及的当下,Kubernetes 已成为众多企业的首选容器编排工具。然而,随着集群规模的增长和业务复杂度的提升,性能优化成为确保系统稳定性与高效运行的关键。本文将深入探讨 Kubernetes 集群性能优化的策略与实践,覆盖从节点资源配置到网络通信优化,再到高效的资源调度机制,旨在为运维人员提供系统的优化路径和具体的操作建议。
|
5天前
|
存储 Java Serverless
ACK One Argo 工作流集群:玩转容器对象存储
ACK One Argo 工作流集群:玩转容器对象存储
ACK One Argo 工作流集群:玩转容器对象存储
|
6天前
|
Kubernetes Ubuntu Docker
初始化k8s多结点集群
在Ubuntu22.04.3 LTS上设置k8s多节点集群,采用Docker v24.0.6、kubeadm v1.28和cir-dockerd v0.3.4。首先安装docker和cri-dockerd,更新k8s三件套至v1.28。然后,参照官方文档进行`kubeadm init`初始化集群,配置包括自定义镜像仓库、控制面端点等。成功初始化后,显示了相关证书和配置信息。最后,提供了一些额外的kubectl命令以管理节点。
19 1
|
6天前
|
存储 运维 Kubernetes
Kubernetes 集群的持续性能优化策略
【5月更文挑战第14天】 在动态且不断扩展的云计算环境中,保持 Kubernetes 集群的高性能运行是一个挑战。本文将探讨一系列实用的性能优化措施,旨在帮助运维专家确保其容器化应用能在资源受限的情况下仍保持高效与稳定。通过分析 Kubernetes 的资源调度机制、存储和网络配置,我们提出了一套综合的性能调优框架,并结合实际案例,展示如何实施这些策略以提升集群的整体性能。
|
6天前
|
运维 Prometheus 监控
Kubernetes 集群监控与性能优化实践
【5月更文挑战第14天】 在微服务架构日益普及的当下,Kubernetes 已成为容器编排的事实标准。然而,随着集群规模的扩大和业务复杂度的增加,监控系统的性能及稳定性变得至关重要。本文将深入探讨 Kubernetes 集群监控的重要性,介绍常用监控工具,并分享一系列针对集群性能优化的实践策略,帮助运维工程师确保服务的高可用性和优越性能。