kubernetes基础使用

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 官方文档:https://v1-13.docs.kubernetes.io/zh/docs/tutorials/kubernetes-basics/ 命令 说明 参数说明 kubectl version 查看k8s版本 无 kubectl get nodes.
#查看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

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
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
存储 监控 Kubernetes
10分钟带你了解k8s基础(kubernetes基础概念总结)
kubernetes基础概念总结 简介 kubernetes是由google主导开发的开源容器管理平台,提供多主机集群,容器编排,容器伸缩等功能 基础组件介绍 docker 容器运行环境的一种实现,封装底层容器 etcd etcd是kubernetes集群用来存储集群相关数据的数据仓库 maste.
2598 0
|
Kubernetes 调度 Docker
Kubernetes基础组件概述
本文讲的是Kubernetes基础组件概述【编者的话】最近总有同学问Kubernetes中的各个组件的相关问题,其实这些概念内容在官方文档中都有,奈何我们有些同学可能英文不好,又或者懒得去看,又或者没有找到,今天有时间就专门写了这篇博客。
2584 0
|
21天前
|
Kubernetes Cloud Native 云计算
云原生之旅:Kubernetes 集群的搭建与实践
【8月更文挑战第67天】在云原生技术日益成为IT行业焦点的今天,掌握Kubernetes已成为每个软件工程师必备的技能。本文将通过浅显易懂的语言和实际代码示例,引导你从零开始搭建一个Kubernetes集群,并探索其核心概念。无论你是初学者还是希望巩固知识的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
90 17
|
13天前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
113 1
|
18天前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
59 1
|
18天前
|
负载均衡 应用服务中间件 nginx
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
36 1
|
23天前
|
Kubernetes Cloud Native Ubuntu
云原生之旅:Kubernetes集群搭建与应用部署
【8月更文挑战第65天】本文将带你进入云原生的世界,通过一步步指导如何在本地环境中搭建Kubernetes集群,并部署一个简单的应用。我们将使用Minikube和Docker作为工具,探索云原生技术的魅力所在。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和实践技巧。
|
27天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
|
1月前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
261 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
9天前
|
Kubernetes Ubuntu Linux
Centos7 搭建 kubernetes集群
本文介绍了如何搭建一个三节点的Kubernetes集群,包括一个主节点和两个工作节点。各节点运行CentOS 7系统,最低配置为2核CPU、2GB内存和15GB硬盘。详细步骤包括环境配置、安装Docker、关闭防火墙和SELinux、禁用交换分区、安装kubeadm、kubelet、kubectl,以及初始化Kubernetes集群和安装网络插件Calico或Flannel。