k8s 常用命令

这篇具有很好参考价值的文章主要介绍了k8s 常用命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

资源类型 资源简称
node no
namespaces ns
deployment deploy
ReplicaSet rs
pod po
service svc
ingress ing
DaemonSets ds
StatefulSets sts
ConfigMap cm
PersistentVolume pv
PersistentVolumeClaim pvc
HorizontalPodAutoscaler hpa
ComponentStatus cs

创建资源

# 创建一个deployment 
cat >> nginx-deploy-test.yaml < EOF
apiVersion: apps/v1 #版本信息
kind: Deployment  #资源信息
metadata:   #元数据
  name: nginx-deploy  #资源名称
  namespace: default  #属于哪个命名空间下
spec: 
  replicas: 2   #一共有两个副本资源
  selector:
    matchLabels: 
      app: nginx
  template:      #pod创建模板
    metadata:
        labels:
          app: nginx 
    spec:
      containers:   #容器名称下边的容器可以有多个
      - image: nginx  #镜像名称
        imagePullPolicy: IfNotPresent  #镜像拉取策略
        name: nginx-test  #容器名称
      restartPolicy: Always  #重启策略
EOF

部署上边的yaml资源信息

kubectl apply -f nginx-deploy-test.yaml

也可以这样使用命令行方式,直接创建

#创建pod
kubectl create deploy nginx --image=nginx

k8s 常用命令

查看资源信息

1.1 查看k8s版本信息

kubeadm version
kubelet --version
kubectl version

1.2 查看pod信息

kubectl get po -o wide

k8s 常用命令

1.3 查看deployment信息

kubectl get deploy

k8s 常用命令

1.4 查看rs信息

kubectl get rs -o wide

k8s 常用命令

1.5 外部端口暴露 查看 service信息

#暴露service端口
kubectl expose deploy nginx-deploy --type=NodePort --port=80 --target-port=8000 --name=nginx-deploy
#查看service
kubectl get svc

k8s 常用命令k8s 常用命令

1.6 查看 namespace 命名空间信息

kubectl get ns

k8s 常用命令
1.7 查看资源yaml信息
举例:kubectl get 资源名称 -o yaml -n 命名空间
如果 命名空间不填 默认为 default

kubectl get deploy nginx-deploy -o yaml -n default

在这里插入图片描述
1.8 进入k8s容器

#进入k8s运行的容器
kubectl exec demo-deploy-64575b5d97-txb4w -it -- /bin/bash
#退出容器
exit

1.9 查看k8s集群健康状况

kubectl get cs

在这里插入图片描述

端口映射

##create 方式基于端口做映射,expose 方式基于服务做映射
##创建无头服务
kubectl create svc clusterip nacos-headless --clusterip=None --tcp=8848:8848
##创建NodePort服务
kubectl create svc nodeport nacos-nodeport --tcp=8848:8848 --node-port=30848
##端口暴露NodePort
kubectl expose deploy nginx-deploy --type=NodePort --port=80 --target-port=8000
##创建ingress
##kubectl create ingress 名称 --rule=访问路径 / 匹配方式=svc的名称:端口(集群内部端口)
kubectl create ingress nginx-ing --rule=www.digua.com/*=nginx-deploy:80

ingress代理

##创建ing
kubectl create ing nginx-ing --rule="test.digua.com/*=nginx-deploy:80"

修改本地win的hosts文件,增加域名映射

192.168.33.160 test.digua.com

在这里插入图片描述

查看日志 查看报错

查看日志

kubectl logs pod名称 -n 命名空间

查看资源信息

kubectl describe deploy deploy名称 -n 命名空间

标签查看,标签制作

标签查看

kubectl get 资源类型 --show-labels
kubectl get no --show-labels

标签制作

kubectl label 资源类型 资源名称 标签key=标签value
kubectl label no slave cpu=8cup32g

修改资源信息

举例: kubectl edit 资源类型 资源名称 -n 命名空间
如果 命名空间不填 默认为 default

kubectl edit pod nginx-deploy-86597ffd87-pz5bn -n default
kubectl edit deploy nginx-deploy
kubectl edit rs nginx-deploy-86597ffd87

修改上述文章中的 nginx-deploy-test.yaml 信息后

#运行apply 也是更新操作
kubectl apply -f nginx-deploy-test.yaml

删除资源

举例: kubectl delete 资源类型 资源名称 -n 命名空间
如果 命名空间不填 默认为 default
1.1 删除单个pod,如果pod是由deploy等创建的是无法完全删除,因为pod停止后,scheduler会重新扫描后再创建

kubectl delete po nginx-deploy-86597ffd87-djkws 
#删除默认命名空间下所有的pod,下边的删除也是同样的,只是改一下资源类型
kubectl delete po --all

1.2 删除rs,删除rs后 对应下边的pod也会删除,如果rs是通过deploy创建,会自动重新创建并顺便创建下边的pod

kubectl delete rs nginx-deploy-86597ffd87

1.3 删除deployment,删除deploy后下变得rs和pod都会被删除

kubectl delete deploy nginx-deploy

1.4 删除命名空间,删除命名空间后下边所有的pod、deploy、svc、rs都会删除

kubectl delete ns default

1.5 强制删除pod

kubectl delete po nginx-deploy-86597ffd87-djkws  --force --grace-period=0

查看资源使用(cpu、内存使用)

##kubectl top (no/po)
kubectl top no

滚动发布与回滚

滚动发布 滚动发布会保留deploy,会重新制作一个rs取代之前的rs

##kubectl set image 资源类型/资源名 容器名称=镜像
kubectl set image deploy/test-deploy test=192.168.34.8:85/public/test:2

版本回滚

##查看历史版本信息   kubectl rollout history 资源类型/资源名
kubectl rollout history deploy/test-deploy
##根据历史版本信息,指定版本进行回滚    kubectl rollout undo 资源类型/资源名 --to-revision=版本
kubectl rollout undo deploy/test-deploy --to-revision=4

请注意,正常发版时候查看历史版本其中的CHANGE-CAUSE是none,这个主要是由资源里边的标签 kubernetes.io: “版本信息” 决定的
在这里插入图片描述
在这里插入图片描述

scale (pod扩容)、autoscale(自动扩容)

kubectl scale --replicas=资源数量 资源类型/资源名称

kubectl scale --replicas=3 deploy/nginx-deploy

扩容之前
在这里插入图片描述
扩容之后
在这里插入图片描述

##kubectl autoscale 资源类型 资源名称 --min=最小pod数量 --max=最大pod数量 --cpu-percent=CPU达到40%时候
kubectl autoscale deploy nginx-deploy --min=1 --max=3 --cpu-percent=40
##查看自动扩容信息
kubectl get hpa 

secret (k8s 拉取harbor镜像配置)

kubectl create secret docker-registry 名称 --docker-server=harbor的ip+端口 --docker-username=用户名 --docker-password=密码 --docker-email=邮箱(非必填)

kubectl create secret docker-registry 34.8harborregistry --docker-server=192.168.34.8:85 --docker-username=admin --docker-password=Harbor@2022 --docker-email=123@qq.com
apiVersion: apps/v1
kind: Deployment
metadata: 
  name: demo-deploy
  namespace: default
spec: 
  replicas: 2
  selector:
    matchLabels: 
      app: demo
  template:
    metadata:
        labels:
          app: demo 
    spec:
      containers: 
      - image: 192.168.34.8:85/hhd/demo:latest
        imagePullPolicy: Always
        name: demo
      restartPolicy: Always
      imagePullSecrets:  #拉取位置
        - name: 34.8harborregistry

configMap (资源管理)

#创建脚本  entrypoint.sh
#!/bin/bash
exec java ${java_opts} -jar demo.jar "$@"
#创建 Dockerfile
FROM java:9
ENV java_opts=""
WORKDIR /home
COPY entrypoint.sh entrypoint.sh
COPY demo.jar demo.jar
RUN chmod 755 entrypoint.sh
ENTRYPOINT ["./entrypoint.sh"]
docker build -f Dockerfile -t test:1 .
docker login -u admin -p Admin123 192.168.34.8:85
docker tag test:1 192.168.34.8:85/project/test:1
docker push 192.168.34.8:85/project/test:1
cat >> /home/k8s/javaopt < EOF
-Xmx200m -Xmn200m -Xms200m -XX:+UseG1GC
EOF
kubectl create cm javaopt --from-file=javaenv=/home/k8s/javaenv

创建资源

apiVersion: apps/v1
kind: Deployment
metadata: 
  name: test-deploy
  namespace: default
spec: 
  replicas: 2
  selector:
    matchLabels: 
      app: demo
  template:
    metadata:
        labels:
          app: demo 
    spec:
      containers: 
      - image: 192.168.34.8:85/project/test:1
        imagePullPolicy: Always
        name: test
        env: 
          - name: java_opts
            valueFrom: 
              configMapKeyRef:
                name: javaopt
                key: javaenv
      restartPolicy: Always
      imagePullSecrets: 
        - name: 34.8harborregistry

查看pod情况
在这里插入图片描述
在这里插入图片描述

PV PVC挂载

192.168.34.7主节点
192.168.34.8从节点

配置nfs(所有节点都需要配置)

##安装nfs
yum install nfs-utils -y
##启动nfs
systemctl restart nfs && systemctl enable nfs

在文件挂载节点增加配置,这里我是在主节点进行的

##创建目录
mkdir -p /home/nfs
chmod 777 /home/nfs
##修改配置
cat >> /etc/exports < EOF
/home/nfs *(rw,no_root_squash,no_all_squash,sync)
/home/nfs 192.168.34.0/24(rw,no_root_squash,no_all_squash,sync)
EOF
##执行命令生效配置
exportfs -rv

检验nfs挂载,在别的节点测试挂载

##测试ip挂载是否正常
showmount -e 192.168.34.8
mkdir /home/test
chmod 777 /home/test
mount -t nfs 192.168.34.7:/home/nfs /home/test
##查看挂载
mount |grep 192.168.34.7

验证nfs挂载

##从节点输出到aa.txt文件
date >> /home/test/aa.txt
##主节点查看文件
cat /home/nfs/aa.txt

配置PV

vim test-pv.yml
apiVersion: v1
items:
- apiVersion: v1
  kind: PersistentVolume
  metadata:
    annotations:
      pv.kubernetes.io/bound-by-controller: "yes"
    finalizers:
    - kubernetes.io/pv-protection
    name: test-pv
  spec:
    accessModes:
    - ReadWriteMany
    capacity:
      storage: 2Gi
    claimRef:
      apiVersion: v1
      kind: PersistentVolumeClaim
      name: test-pvc
      namespace: default
    nfs:
      path: /home/nfs
      server: 192.168.34.7
    persistentVolumeReclaimPolicy: Retain
    volumeMode: Filesystem
  status:
    phase: Bound
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""
kubectl create-f test-pv.yml

配置PVC

vim test-pvc.yml
apiVersion: v1
items:
- apiVersion: v1
  kind: PersistentVolumeClaim
  metadata:
    annotations:
      pv.kubernetes.io/bind-completed: "yes"
    finalizers:
    - kubernetes.io/pvc-protection
    name: test-pvc
    namespace: default
  spec:
    accessModes:
    - ReadWriteMany
    resources:
      requests:
        storage: 2Gi
    storageClassName: ""
    volumeMode: Filesystem
    volumeName: test-pv
  status:
    accessModes:
    - ReadWriteMany
    capacity:
      storage: 2Gi
    phase: Bound
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""
kubectl create-f test-pvc.yml

查看配置的pv和pvc

kubectl get pv 
kubectl get pvc

污点管理

污点类型 内容
NoSchedule 在创建新的pod时候不会调度到该节点
PreferNoSchedule 将尽量避免调度到该节点
NoExecute 不会在该节点创建pod,如果有pod就会剔除

增加污点

##kubectl taint no 节点 key:污点类型
kubectl taint no master key:NoSchedule

剔除污点文章来源地址https://www.toymoban.com/news/detail-400734.html

kubectl taint no master key:NoSchedule-

deploy yaml文件解析

apiVersion: extensions/v1beta1 #版本
kind: Deployment  #资源类型
metadata:
  labels:
    workload.user.cattle.io/workloadselector: deployment-cloud-prd-server  #标签,k8s对于资源控制主要是根据labels和selector进行的
  name: server  #资源名称
  namespace: cloud-prd #所属命名空间
spec:
  progressDeadlineSeconds: 600  
  replicas: 1  #一个pod
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      workload.user.cattle.io/workloadselector: deployment-cloud-prd-server
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
    type: RollingUpdate #发布策略
  template:    #创建模板
    metadata:
      labels:
        workload.user.cattle.io/workloadselector: deployment-cloud-prd-server
    spec:
      affinity:
        nodeAffinity:  
        #节点亲和度  nodeAffinity
        #容器亲和度  podAntiAffinity
          requiredDuringSchedulingIgnoredDuringExecution:  
          #硬策略(必须调度符合的规则上边) requiredDuringSchedulingIgnoredDuringExecution
          #软策略(最好可以调度符合的规则上边) preferredDuringSchedulingRequiredDuringExecution
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                - 172.26.0.46
      containers:
      - env:
        - name: DB_HOST  #对应需要的环境变量
          valueFrom:  #configmap配置
            configMapKeyRef:
              key: DB_PORT
              name: mysql-env-cm
              optional: false
        - name: JAVA_OPTS
          value: -Xmx3550M -Xms3550M -Xmn2G -Xss256k
        image: 192.1.1.1/project/server:stable  #镜像
        imagePullPolicy: Always  #镜像拉取策略
        name: server   #容器名称
        ports:
        - containerPort: 8513  #暴露端口
          name: 8513tcp02
          protocol: TCP
        resources:
          limits:
            memory: 4Gi
        stdin: true
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        tty: true
        volumeMounts:
        - mountPath: /log  #容器内部挂载位置
          name: vol1
      dnsPolicy: ClusterFirst
      restartPolicy: Always  #重启策略
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - name: vol1
        persistentVolumeClaim: #挂载的pvc
          claimName: log-pvc

到了这里,关于k8s 常用命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s的资源类型

    Kubernetes(通常称为K8s)是一种用于自动化部署、扩展和管理容器化应用程序的开源平台。它提供了一个强大的容器编排和管理系统,可以简化容器化应用程序的部署、伸缩和运维。 在Kubernetes中,容器是最基本的部署单元,而容器化应用程序由一个或多个容器组成。Kubernete

    2024年02月05日
    浏览(42)
  • k8s基础:使用kubectl set image命令更新Deployment中容器的镜像

    在Kubernetes中,使用 kubectl 更新Deployment中容器的镜像,可以使用以下命令: 例如,如果你有一个名为 myapp 的 Deployment,其中包含一个名为 mycontainer 的容器,你想将镜像从 myregistry/myimage:v1 更新到 myregistry/myimage:v2 ,可以执行: 这条命令将会触发一个滚动更新,根据你的Deploy

    2024年04月26日
    浏览(44)
  • K8S:常用资源对象操作

    如果有一种工具能够来帮助我们管理Pod就好了,Pod不够了自动帮我新增一个,Pod挂了自动帮我在合适的节点上重新启动一个Pod,这样是不是遇到上面的问题我们都不需要手动去解决了。 幸运的是,Kubernetes就为我们提供了这样的资源对象: Replication Controller:用来部署、升级

    2024年04月11日
    浏览(40)
  • k8s常用资源管理

    目录 Pod(容器组):Pod是Kubernetes中最小的部署单元,可以包含一个或多个容器。Pod提供了一种逻辑上的封装,使得容器可以一起共享网络和存储资源 1、创建一个pod 2、pod管理 pod操作 目录 创建Pod会很慢 Pod(容器组):Pod是Kubernetes中最小的部署单元,可以包含一个或多个容

    2024年02月13日
    浏览(38)
  • 在K8S中,DaemonSet类型资源特性?

    在Kubernetes(简称K8S)中,DaemonSet是一种控制器资源对象,它的主要特性包括: 每个节点运行一个实例 : DaemonSet确保集群中的每个工作节点上都运行着一个指定的Pod副本。这意味着当DaemonSet被创建时,系统会自动调度Pod到所有符合条件的节点上,确保每个节点上都有且仅有一

    2024年02月19日
    浏览(40)
  • yum部署kubernetes(k8s)集群、k8s常用资源管理

    目录 一、环境搭建 1、准备环境 1)计算机说明,建议系统版本7.4或者7.6 2)修改所有主机的计算机名设置host文件  2、安装master节点 1)安装etcd配置etcd 2)安装k8s-master节点 3)配置apiserver 4)配置controller和scheduler 5)启动k8s服务 3、安装k8s-master上的node 1)安装node 2)配置kube

    2024年02月13日
    浏览(64)
  • Kubernetes(简称k8s)简介

    Kubernetes(简称k8s)是一种开源的容器编排平台,它可以自动化地部署、扩展和管理容器化应用程序。Kubernetes最初由Google公司设计和开发,并于2014年正式发布。如今,它已成为容器编排领域的事实标准,被广泛应用于各种场景中,包括Web应用程序、大数据处理、人工智能等。

    2024年02月06日
    浏览(41)
  • (kubernetes)k8s常用资源管理

    目录 k8s常用资源管理 1、创建一个pod 1)创建yuml文件 2)创建容器 3)查看所有pod创建运行状态 4)查看指定pod资源 5)查看pod运行的详细信息 6)验证运行的pod 2、pod管理 1)删除pod 2)查看删除pod无法找到 3)创建pod 4)发现最先创建的pod运行在k8s-master节点上,下载镜像速度太

    2024年02月13日
    浏览(50)
  • 【K8s】 资源管理命令-陈述式

    1、资源管理概念 在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes //kubernetes的本质就是一个集群系统,用户可以在集群中部署各种服务,起始就是在kubernetes集群中运行一个个容器,并将指定的程序跑在容器中。 kubernetes的最小管理单元是pod而不

    2024年02月07日
    浏览(51)
  • k8s 资源管理及查看命令

     关注 迪答数据 公众号获取更多 技术/数据 干货文章  文章传送门:数据治理之指标体系管理 参考文档: Kubernetes  Managing Compute Resources for Containers(opens new window) https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/ 在 Kubernetes 中创建工作负载时,您可以为 Pod 中

    2024年02月02日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包