searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Kubernetes常见命令

2024-09-06 10:11:52
10
0

一、创建和管理Pod

创建nginx pod

kubectl run nginx-local --image=nginx

 查看Pod

kubectl get pod

 描述

kubectl describe pod nginx-local

 查看Pod的运行日志

kubectl logs mynginx

显示pod的IP和运行节点信息

kubectl get pod -owide

 使用Pod的ip+pod里面运行容器的端口

curl 10.42.1.3

 在容器中执行

kubectl exec nginx-local -it -- /bin/bash

 删除

kubectl delete pod nginx-local

 强制删除

kubectl delete pod nginx-local --force

 

二、Deployment(部署)与ReplicaSet(副本集)

Deployment是对ReplicaSet和Pod更高级的抽象。它使Pod拥有多副本,自愈,扩缩容、滚动升级等能力。ReplicaSet(副本集)是一个Pod的集合。它可以设置运行Pod的数量,确保任何时间都有指定数量的 Pod 副本在运行。

常见命令

创建deployment,部署3个运行nginx的Pod

kubectl create deployment nginx-deployment --image=nginx:1.22 --replicas=3

查看deployment

kubectl get deploy

查看replicaSet

kubectl get rs

删除deployment

kubectl delete deploy nginx-deployment

缩放

手动缩放

将副本数量调整为5

kubectl scale deployment/nginx-deployment --replicas=5

kubectl get deploy

自动缩放

自动缩放通过增加和减少副本的数量,以保持所有 Pod 的平均 CPU 利用率不超过 75%。

自动缩放

kubectl autoscale deployment/nginx-auto --min=3 --max=10 --cpu-percent=75

查看自动缩放

kubectl get hpa

删除自动缩放

kubectl delete hpa nginx-deployment

滚动更新

查看版本和Pod

kubectl get deployment/nginx-deployment -owide

kubectl get pods

更新容器镜像

kubectl set image deployment/nginx-deployment nginx=nginx:1.23

滚动更新

kubectl rollout status deployment/nginx-deployment

查看过程

kubectl get rs --watch

版本回滚

查看历史版本

kubectl rollout history deployment/nginx-deployment

查看指定版本的信息

kubectl rollout history deployment/nginx-deployment --revision=2

回滚到历史版本

kubectl rollout undo deployment/nginx-deployment --to-revision=2

三、Service(服务)

Service将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。

Service为一组 Pod 提供相同的 DNS 名,并且在它们之间进行负载均衡。

Kubernetes 为 Pod 提供分配了IP 地址,但IP地址可能会发生变化。

集群内的容器可以通过service名称访问服务,而不需要担心Pod的IP发生变化。

ServiceType 取值

  • ClusterIP将服务公开在集群内部。kubernetes会给服务分配一个集群内部的 IP,集群内的所有主机都可以通过这个Cluster-IP访问服务。集群内部的Pod可以通过service名称访问服务。
  • NodePort通过每个节点的主机IP 和静态端口(NodePort)暴露服务。 集群的外部主机可以使用节点IP和NodePort访问服务。
  • ExternalName:将集群外部的网络引入集群内部。
  • LoadBalancer:使用云提供商的负载均衡器向外部暴露服务。
kubectl expose deployment/nginx-deployment --name=nginx-service --type=ClusterIP --port=8080 --target-port=80

nginx-service后面的负载

kubectl get endpoints nginx-service

随机产生主机端口

kubectl expose deployment/nginx-deployment --name=nginx-service2 --type=NodePort --port=8080 --target-port=80

四、Namespace(命名空间)

名空间(Namespace)是一种资源隔离机制,将同一集群中的资源划分为相互隔离的组。

Kubernetes 会创建四个初始命名空间:

  • default 默认的命名空间,不可删除,未指定命名空间的对象都会被分配到default中。
  • kube-system Kubernetes 系统对象(控制平面和Node组件)所使用的命名空间。
  • kube-public 自动创建的公共命名空间,所有用户(包括未经过身份验证的用户)都可以读取它。通常我们约定,将整个集群中公用的可见和可读的资源放在这个空间中。
  • kube-node-lease 租约(Lease)对象使用的命名空间。每个节点都有一个关联的 lease 对象,lease 是一种轻量级资源。lease对象通过发送心跳,检测集群中的每个节点是否发生故障。

管理命名空间

创建命名空间

kubectl create namespace dev

查看命名空间

kubectl get ns

在命名空间内运行Pod

kubectl run nginx --image=nginx --namespace=dev

kubectl run my-nginx --image=nginx -n=dev

查看命名空间内的Pod

kubectl get pods -n=dev

查看命名空间内所有对象

kubectl get all

删除命名空间会删除命名空间下的所有内容

kubectl delete ns dev

切换当前命名空间

查看当前上下文

kubectl config current-context

将dev设为当前命名空间,后续所有操作都在此命名空间下执行。

kubectl config set-context $(kubectl config current-context) --namespace=dev

常用命令缩写

名称

缩写

Kind

namespaces

ns

Namespace

nodes

no

Node

pods

po

Pod

services

svc

Service

deployments

deploy

Deployment

replicasets

rs

ReplicaSet

statefulsets

sts

StatefulSet

0条评论
作者已关闭评论
l0cal
2文章数
0粉丝数
l0cal
2 文章 | 0 粉丝
l0cal
2文章数
0粉丝数
l0cal
2 文章 | 0 粉丝
原创

Kubernetes常见命令

2024-09-06 10:11:52
10
0

一、创建和管理Pod

创建nginx pod

kubectl run nginx-local --image=nginx

 查看Pod

kubectl get pod

 描述

kubectl describe pod nginx-local

 查看Pod的运行日志

kubectl logs mynginx

显示pod的IP和运行节点信息

kubectl get pod -owide

 使用Pod的ip+pod里面运行容器的端口

curl 10.42.1.3

 在容器中执行

kubectl exec nginx-local -it -- /bin/bash

 删除

kubectl delete pod nginx-local

 强制删除

kubectl delete pod nginx-local --force

 

二、Deployment(部署)与ReplicaSet(副本集)

Deployment是对ReplicaSet和Pod更高级的抽象。它使Pod拥有多副本,自愈,扩缩容、滚动升级等能力。ReplicaSet(副本集)是一个Pod的集合。它可以设置运行Pod的数量,确保任何时间都有指定数量的 Pod 副本在运行。

常见命令

创建deployment,部署3个运行nginx的Pod

kubectl create deployment nginx-deployment --image=nginx:1.22 --replicas=3

查看deployment

kubectl get deploy

查看replicaSet

kubectl get rs

删除deployment

kubectl delete deploy nginx-deployment

缩放

手动缩放

将副本数量调整为5

kubectl scale deployment/nginx-deployment --replicas=5

kubectl get deploy

自动缩放

自动缩放通过增加和减少副本的数量,以保持所有 Pod 的平均 CPU 利用率不超过 75%。

自动缩放

kubectl autoscale deployment/nginx-auto --min=3 --max=10 --cpu-percent=75

查看自动缩放

kubectl get hpa

删除自动缩放

kubectl delete hpa nginx-deployment

滚动更新

查看版本和Pod

kubectl get deployment/nginx-deployment -owide

kubectl get pods

更新容器镜像

kubectl set image deployment/nginx-deployment nginx=nginx:1.23

滚动更新

kubectl rollout status deployment/nginx-deployment

查看过程

kubectl get rs --watch

版本回滚

查看历史版本

kubectl rollout history deployment/nginx-deployment

查看指定版本的信息

kubectl rollout history deployment/nginx-deployment --revision=2

回滚到历史版本

kubectl rollout undo deployment/nginx-deployment --to-revision=2

三、Service(服务)

Service将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。

Service为一组 Pod 提供相同的 DNS 名,并且在它们之间进行负载均衡。

Kubernetes 为 Pod 提供分配了IP 地址,但IP地址可能会发生变化。

集群内的容器可以通过service名称访问服务,而不需要担心Pod的IP发生变化。

ServiceType 取值

  • ClusterIP将服务公开在集群内部。kubernetes会给服务分配一个集群内部的 IP,集群内的所有主机都可以通过这个Cluster-IP访问服务。集群内部的Pod可以通过service名称访问服务。
  • NodePort通过每个节点的主机IP 和静态端口(NodePort)暴露服务。 集群的外部主机可以使用节点IP和NodePort访问服务。
  • ExternalName:将集群外部的网络引入集群内部。
  • LoadBalancer:使用云提供商的负载均衡器向外部暴露服务。
kubectl expose deployment/nginx-deployment --name=nginx-service --type=ClusterIP --port=8080 --target-port=80

nginx-service后面的负载

kubectl get endpoints nginx-service

随机产生主机端口

kubectl expose deployment/nginx-deployment --name=nginx-service2 --type=NodePort --port=8080 --target-port=80

四、Namespace(命名空间)

名空间(Namespace)是一种资源隔离机制,将同一集群中的资源划分为相互隔离的组。

Kubernetes 会创建四个初始命名空间:

  • default 默认的命名空间,不可删除,未指定命名空间的对象都会被分配到default中。
  • kube-system Kubernetes 系统对象(控制平面和Node组件)所使用的命名空间。
  • kube-public 自动创建的公共命名空间,所有用户(包括未经过身份验证的用户)都可以读取它。通常我们约定,将整个集群中公用的可见和可读的资源放在这个空间中。
  • kube-node-lease 租约(Lease)对象使用的命名空间。每个节点都有一个关联的 lease 对象,lease 是一种轻量级资源。lease对象通过发送心跳,检测集群中的每个节点是否发生故障。

管理命名空间

创建命名空间

kubectl create namespace dev

查看命名空间

kubectl get ns

在命名空间内运行Pod

kubectl run nginx --image=nginx --namespace=dev

kubectl run my-nginx --image=nginx -n=dev

查看命名空间内的Pod

kubectl get pods -n=dev

查看命名空间内所有对象

kubectl get all

删除命名空间会删除命名空间下的所有内容

kubectl delete ns dev

切换当前命名空间

查看当前上下文

kubectl config current-context

将dev设为当前命名空间,后续所有操作都在此命名空间下执行。

kubectl config set-context $(kubectl config current-context) --namespace=dev

常用命令缩写

名称

缩写

Kind

namespaces

ns

Namespace

nodes

no

Node

pods

po

Pod

services

svc

Service

deployments

deploy

Deployment

replicasets

rs

ReplicaSet

statefulsets

sts

StatefulSet

文章来自个人专栏
k8s基础
1 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0