Kubernetes(K8S) 常用命令

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: Kubernetes(K8S) 常用命令

Docker 常用命令

Docker 常用命令

# 查看API版本
[root@k8smaster ~]# kubectl api-versions
# 重启 K8S
[root@k8smaster ~]# systemctl restart kubelet
# 查看 kubelet 状态
[root@k8smaster ~]# systemctl status kubelet
# 重启 POD kubectl rollout restart deployment <deployment-name> -n <namespace>
[root@k8smaster ~]# kubectl rollout restart deployment javademo1 -n default
# 查看节点资源,需要安装metrics-server 【https://www.cnblogs.com/vipsoft/p/16896510.html】
[root@k8smaster ~]# kubectl top node
# 查看 Pod 在节点上的资源分配情况
[root@k8smaster ~]# kubectl describe node
# 查看 Pod 资源使用情况
[root@k8smaster ~]# kubectl top pod -A
# 查看 POD 在哪个节点上运行
[root@k8smaster ~]# kubectl get pod -A -o wide
# 查看 所有 secret 
[root@k8smaster ~]# kubectl get secret -A
# 查看 secret 明细
[root@k8smaster ~]# kubectl describe secret -A
# 创建  secret
[root@k8smaster ~]# kubectl create secret docker-registry registry-vipsoft-shanghai  \
    --namespace=default \
    --docker-server=registry.cn-shanghai.aliyuncs.com \
    --docker-username=vipsoft \
    --docker-password=123456 \
    --docker-email=xxx@xxx.com
# 删除  secret
[root@k8smaster ~]# kubectl delete secret registry-vipsoft-shanghai -n namespace
# 弹性伸缩 创建 3 个副本
[root@k8smaster ~]# kubectl scale deployment javademo1 --replicas=3
# 查看所有命名空间
[root@k8smaster ~]# kubectl get namespace
# 查看 node3的详情
[root@k8smaster ~]# kubectl describe nodes k8snode3
# 给node打标签
[root@k8smaster ~]# kubectl label node k8snode1 env_role=dev
# 查看 node 标签
[root@k8smaster ~]# kubectl get nodes k8snode1 --show-labels
 
# 查看当前节点的污点
[root@k8smaster ~]# kubectl describe node k8snode3 | grep Taint
# 添加污点 kubectl taint node 节点名称 key=value:污点值-
[root@k8smaster ~]# kubectl taint node k8snode1 key=value:NoSchedule
# 删除污点 kubectl taint node 节点名称 key=value:污点值-
[root@k8smaster ~]# kubectl taint node k8snode1 env_role:NoSchedule-
# 删除  svc
[root@k8smaster ~]# kubectl delete svc nginx
# 删除  svc
[root@k8smaster ~]# kubectl delete statefulset --all
# 创建命名空间
[root@k8smaster ~]# kubectl create ns vipsoft-dev
# 看所有Pod都在哪些节点上运行
[root@k8smaster ~]# kubectl get pod -A -o yaml |grep '^    n'|grep -v nodeSelector|awk 'NR%3==1{print ++n"\n"$0;next}1'

创建 Deployment

# 创建 POD
[root@k8smaster ~]# kubectl create -f xx.yaml
[root@k8smaster ~]# kubectl apply -f xx.yaml
# 如果yaml文件中的kind值为deployment,那么上面这两个命令都可以创建一个deployment,生成相应数量的pod
区别:
kubectl create:
(1)kubectl create命令,是先删除所有现有的东西,重新根据yaml文件生成新的。所以要求yaml文件中的配置必须是完整的
(2)kubectl create命令,用同一个yaml 文件执行替换replace命令,将会不成功,fail掉。
kubectl apply:
  kubectl apply 命令,根据配置文件里面列出来的内容,升级现有的。所以yaml文件的内容可以只写需要升级的属性
# 删除 Pod nfs-nginx.yaml
[root@k8smaster ~]# kubectl delete -f nfs-nginx.yaml
# 查看 pod 的日志 并 持续打印
[root@k8smaster ~]# kubectl logs -f --tail=200 pods/podname -n namespace
# 进到容器
[root@k8smaster ~]# kubectl exec -it nginx-pvc-58b7bf955f-5clzg bash
# 查看 K8S 配置
[root@k8smaster ~]# cat $HOME/.kube/config
# 查看 pods 情况
[root@k8smaster ~]# kubectl get pods -n kube-system
# 查看 nodes 情况
[root@k8smaster ~]# kubectl get nodes
# 删除 nodes 
[root@k8smaster ~]# kubectl drain centos-7-56 --delete-local-data --force --ignore-daemonsets node/centos-7-56 cordoned
# 查看default 命名空间下的 pod 状态
[root@k8smaster ~]# kubectl get pods
# 查看所有命名空间下的 pod
[root@k8smaster ~]# kubectl get pods -A
# 查看 pod,排除 default 命名空间
[root@k8smaster ~]# kubectl get pod -A |grep -v default
# 查看所有 javademo1 的 pod 的详情
[root@k8smaster ~]# kubectl describe pod javademo1
# 对外暴露 80 端口
[root@k8smaster ~]# kubectl expose deployment nginx --port=80 --type=NodePort
[root@k8smaster ~]# kubectl get pod,svc
NAME                            READY   STATUS    RESTARTS   AGE
pod/javademo1-d7856c75c-czv2g   1/1     Running   0          152m
pod/javademo1-d7856c75c-n28rs   1/1     Running   0          151m
pod/javademo1-d7856c75c-xzqjc   1/1     Running   0          151m
pod/nginx-f89759699-5hkdw       1/1     Running   0          26d
NAME                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
service/javademo1    NodePort    10.106.43.46   <none>        8111:31452/TCP   20d
service/kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP          26d
service/nginx        NodePort    10.103.87.81   <none>        80:30339/TCP     26d
# -o wide 显示资源的额外信息, 可以显示 pod 在哪个节点上运行
[root@k8smaster ~]# kubectl get pods -n ingress-nginx -o wide
NAME                                        READY   STATUS    RESTARTS   AGE   IP            NODE       NOMINATED NODE   READINESS GATES
nginx-ingress-controller-5cb8688798-gspq4   1/1     Running   0          18h   10.244.2.39   k8snode2   <none>           <none>
[root@k8smaster ~]# kubectl describe svc javademo1
Name:                     javademo1
Namespace:                default
Labels:                   app=javademo1
Annotations:              <none>
Selector:                 app=javademo1
Type:                     NodePort
IP:                       10.106.43.46
Port:                     <unset>  8111/TCP
TargetPort:               8111/TCP
NodePort:                 <unset>  31452/TCP
Endpoints:                10.244.1.31:8111,10.244.1.32:8111,10.244.2.38:8111
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>
[root@k8smaster ~]# 
# 查看创建的 Deployment 对象
[root@k8smaster ~]# kubectl get deployments
# 查看 Deployeement 详情
[root@k8smaster ~]# kubectl describe deployment/javademo1
# 查看 Deployment 上线状态
[root@k8smaster ~]# kubectl rollout status deployment/javademo1
# 查看 Deployment 对象创建的 ReplicaSet:
[root@k8smaster ~]# kubectl get rs
# 查看 Deployment 对象操作 ReplicaSet 创建的 Pod,并显示生成的标签:
[root@k8smaster ~]# kubectl get pods --show-labels
#查看当前运行的 Pod
[root@k8smaster ~]# kubectl get pods
# 查看当前证书到期时间
[root@k8smaster ~]# kubeadm alpha certs check-expiration
# 初次创建,生成 yaml 文件 --dry-run,减少编写量,避免出错
[root@k8smaster ~]# kubectl create deployment javademo1 --image=registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:1.0.0 --dry-run -o yaml > javademo1.yaml
# 已部署的,导出 yaml 文件
[root@k8smaster ~]# kubectl get deployment javademo1 -o yaml > javademo2.yaml

升级

# kubectl describe deployment/javademo1
# 查看 Deployeement 详情 里可以看到 Containers 内容 
#  Containers:
#   vipsoft:
#    Image:        registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:1.0
# 设置vipsoft容器中的镜像,镜像版本变了,就会触发重新拉取动作
[root@k8smaster ~]# kubectl set image deployment/javademo1 vipsoft=registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:2.0
deployment.apps/javademo1 image updated
# 查看状态
[root@k8smaster ~]# kubectl rollout status deployment/javademo1
deployment "javademo1" successfully rolled out
 
# 修改 yaml 文件,直接更新版本号
[root@k8smaster ~]# kubectl edit deployment/javademo1

回滚

# 查看 Deployment 部署历史, CHANGE-CAUSE 里没有值,需要在创建 Deployment 时,使用 --record 参数,就可以在 CHANGE-CAUSE 列看到每个版本使用的命令了
[root@k8smaster ~]# kubectl rollout history deployment/javademo1
# 查看版本 2 的信息: 
[root@k8smaster ~]# kubectl rollout history deployment/javademo1 --revision=2
# 这边没加参加,回滚到上一个版本
[root@k8smaster ~]# kubectl rollout undo deployment/javademo1
# 加上参数,回滚到指定版本
[root@k8smaster ~]# kubeetl rollout undo deployment/javademo1 --to-revision=2
# 查看 Deployeement 详情
[root@k8smaster ~]# kubectl describe deployment/javademo1


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
3月前
|
Kubernetes 应用服务中间件 nginx
Kubernetes 入门指南:快速上手容器编排
【8月更文第29天】Kubernetes(简称 K8s)是一个开源平台,用于自动化容器化应用程序的部署、扩展和管理。它提供了一种便捷的方式来部署和运行应用程序,而无需关心底层基础设施的细节。本指南将带你从零开始学习 Kubernetes 的基础知识,并帮助你部署第一个应用。
281 0
|
4天前
|
存储 Kubernetes C++
Kubernetes VS Docker Swarm:哪个容器编排工具更适合你?
随着容器技术的快速发展,容器编排工具成为了现代软件开发和运维的重要环节。在众多容器编排工具中,Kubernetes和Docker Swarm无疑是最受欢迎的两个。本文将从技术特性、易用性和社区支持三个方面,对Kubernetes和Docker Swarm进行比较,以帮助您选择更适合您需求的容器编排工具。
19 3
|
29天前
|
Prometheus Kubernetes 监控
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
|
23天前
|
Kubernetes API 调度
中间层 k8s(Kubernetes) 到底是什么,架构是怎么样的?
中间层 k8s(Kubernetes) 到底是什么,架构是怎么样的?
34 3
|
29天前
|
Kubernetes 应用服务中间件 nginx
k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)VPA策略应用案例
k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)VPA策略应用案例
|
29天前
|
Kubernetes 监控 调度
k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
|
29天前
|
缓存 Kubernetes 应用服务中间件
k8s学习--helm的详细解释及安装和常用命令
k8s学习--helm的详细解释及安装和常用命令
k8s学习--helm的详细解释及安装和常用命令
|
2月前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
|
2月前
|
存储 Kubernetes 负载均衡
深入浅出 Kubernetes:掌握容器编排的艺术
在云计算迅速发展的今天,Kubernetes 作为容器编排和管理的事实标准,提供了运行分布式系统的强大框架,支持无缝部署、扩展和管理容器化应用。本文深入探讨 Kubernetes 的核心概念与组件,介绍其自动化部署、负载均衡、存储编排等特性,并演示如何使用 Minikube、kubeadm 及 Kubernetes 服务提供商部署集群,通过 `kubectl` 和 Helm 管理资源,帮助开发者掌握这一关键技术。
|
22天前
|
运维 Kubernetes Cloud Native
云原生时代的容器编排:Kubernetes入门与实践
【10月更文挑战第4天】在云计算的浪潮中,云原生技术以其敏捷、可扩展和高效的特点引领着软件开发的新趋势。作为云原生生态中的关键组件,Kubernetes(通常被称为K8s)已成为容器编排的事实标准。本文将深入浅出地介绍Kubernetes的基本概念,并通过实际案例引导读者理解如何利用Kubernetes进行高效的容器管理和服务部署。无论你是初学者还是有一定经验的开发者,本文都将为你打开云原生世界的大门,并助你一臂之力在云原生时代乘风破浪。