zoukankan      html  css  js  c++  java
  • kubernetes常用命令

    查看集群状态

    查看master组件状态: kubectl get cs

    查看node状态: kubectl get node

    查看Apiserver代理的URL:

    kubectl cluster-info

    查看集群详细信息:

    kubectl cluster-info dump

    查看资源信息:

    kubectl describe <资源> <名称>

    查看所有组件pod

    kubectl get pod -n kube-system

    查看 pod日志

    kubectl logs pod名字 注意如果pod不在默认的命名空间里后面需要-n指定命名空间,如: kubectl logs eureka-0 -f -n ms

    kubectl logs --tail=1000 pod的名称 | less

    查看节点资源和日志

    kubectl describe nodes k8s-node2

    查看节点日志

    journalctl -f -u kubelet

    获取所有命名空间

    kubectl get ns

    获取所有命名空间

    kubectl get ns

    查看Pod节点信息。

    查看pod运行在哪个节点下 kubectl get pods -o wide 提示:如果不是默认的pod要指定命名空间名字加 -n 指定kubectl get pods -n 命名空间名字

    命令创建一个pod

    在Kubernetes集群中创建一个pod,验证是否正常运行 kubectl create deployment nginx --image=nginx

    kubectl expose deployment nginx --port=80 --type=NodePort

    查看pod和

    service kubectl get pod,svc

    查看节点标签

    kubectl get nodes --show-labels

    创建命名空间

    kubectl create namespace xyzp

    查看所有命名空间

    kubectl get pods -A kubectl get pod --all-namespaces -o wide

    删除service

    kubectl delete svc service名字 -n 命名空间

    进入一个pod

    kubectl exec -ti <your-pod-name> -n <your-namespace> -- /bin/sh

    一个pod里多个容器进入指定容器

    kubectl exec [-c CONTAINER] -- bash

    例子:

    kubectl exec -it spcadmin-77cc666ffb-42kvm -n xiaoyuanzhaopin -- /bin/bash

    复制文件到pod里

    kubectl -n xyzp cp default.conf web-pod-84d4bbd7f9-pcpsq:/etc/nginx/conf.d/default.conf

    复制pod文件到主机

    kubectl -n xyzp cp nginx-pod-5898d94f67-62knh:etc/nginx/nginx.conf /root/nginx.conf

    删除pod

    kubectl delete pod nginx -n xinpod

    强制删除

    kubectl delete pod scheduletask-pod-575944b694-t4vnd --force --grace-period=0 -n zhxy

    查看资源

    kubectl api-resources


    k8s配置文件

    /root/.kube/config

    查看pod标签

    kubectl get pods --show-labels

    查看节点污点

    kubectl describe node |grep Taint

    添加污点

    kubectl taint node k8s-node1 gpu=yes:NoSchedule

    删除污点

    kubectl taint node k8s-node1 gpu-



    命令自动补全

    yum -y install bash-completion

    source <(kubectl completion bash)

    bash

    修改k8s端口范围

    vim /etc/kubernetes/manifests/kube-apiserver.yaml

    - --service-node-port-range=1-65535                         #添加这一句不用重启生效
    - --advertise-address=192.168.1.111

    挂载nfs 共享目录

    修改yaml文件,放在image:镜像下面

    #必须放在资源限制后面不然会报错
       volumeMounts:
       - name: gongxina
         mountPath: /opt/software/Resources/
    volumes:
    - name: gongxina
       nfs:
         server: 192.168.1.111
         path: /ifs/kubernetes/zhihuixiaoyuan


    查看节点资源使用率

    kubectl describe node k8s-node4

    kubernetes 删除删不掉的pv

    kubectl patch pv xxx -p '{"metadata":{"finalizers":null}}'


    命令创建ConfigMap

    kubectl create configmap app-config --from-file=nginx.conf

    查看已有configmap

    kubectl get configmap

    查看创建的configmap内容

    kubectl describe cm redis-conf

    退出K8S集群

    master执行

    kubectl drain k8s-node5 --delete-local-data --force --ignore-daemonsets node/k8s-node5

    kubectl delete node k8s-node5

    重新加入K8S集群

    node节点执行

    一:停掉kubelet

    systemctl stop kubelet

    kubeadm reset iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

    二:删除之前的相关文件

    rm -rf /etc/kubernetes/*

    echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables

    master执行生成token

    kubeadm token create --print-join-command

    node执行上面生成的token重新加入

    kubeadm join 192.168.1.111:6443 --token c6f5ua.98wz2iu1rebems6m --discovery-token-ca-cert-hash sha256:e61918875a41f1a5e4a489592a0076be8ae7471ab112f8afde67be3fdc3c3ed


    pod指定节点

    第一步:给节点添加标签 格式:kubectl label nodes <node-name> <label-key>=<label-value> 例如:kubectl label nodes k8s-node1 disktype=ssd 验证:kubectl get nodes --show-labels

    第二步:添加nodeSelector字段到Pod配置中

    apiVersion: v1 kind: Pod metadata: name: pod-example spec: nodeSelector: disktype: “ssd” containers:

    • name: nginx image: nginx:1.19

    最后,验证: kubectl get pods -o wide
























































    使用Deployment控制器部署镜像

    kubectl create deployment web --image=lizhenliang/java-demo

    kubectl get deploy,pods

    使用Service将Pod暴露出去

    kubectl expose deployment web --port=80 --target-port=8080 --type=NodePort

    kubectl get service

    访问应用:

    http://NodeIP:Port # 端口随机生成,通过get svc获取

    新建命名空间,在该命名空间创建一个pod

    kubectl create namespace xinpod

    kubectl run nginx --image=nginx --namespace=xinpod

    kubectl get pods -n kube-system

    列出空间下指定标签pod

    kubectl get pods -l app=nginx -n default

    导出YAML文件

    用create命令生成

    kubectl create deployment nginx --image=nginx:1.16 -o yaml --dry-run=client > my-deploy.yaml

    用get命令导出

    kubectl get deployment nginx -o yaml > my-deploy.yaml

    Pod容器的字段拼写忘记了

    kubectl explain pods.spec.containers

    kubectl explain deployment #查Deployment版本使用


    重启策略+健康检查(应用自修复)

    apiVersion: v1 kind: Pod metadata: name: probe-demo namespace: demo spec: containers:

    • name: web image: nginx ports:

    • containerPort: 80 readinessProbe: tcpSocket: port: 80 initialDelaySeconds: 30 #启动容器后多少秒健康检查 periodSeconds: 10 #以后间隔多少秒检查一次 livenessProbe: tcpSocket: port: 80 startupProbe: tcpSocket: port: 80

    ConfigMap

    命令创建configmap

    kubectl create configmap nginx-conf  --from-file=nginx.conf

    生产环境nginx.yaml

    apiVersion: apps/v1beta2
    kind: Deployment
    metadata:
       annotations:
         deployment.kubernetes.io/revision: "10"
         description: web
       creationTimestamp: "2021-06-18T02:33:09Z"
       generation: 15
       labels:
         k8s-app: web-nginx
         qcloud-app: web-nginx
       name: web-nginx
       namespace: default
       resourceVersion: "36599305"
       selfLink: /apis/apps/v1beta2/namespaces/default/deployments/web-nginx
       uid: 762e0372-bd03-467b-9aaa-5058cf3ebfc4
    spec:
       progressDeadlineSeconds: 600
       replicas: 3
       revisionHistoryLimit: 10
       selector:
         matchLabels:
           k8s-app: web-nginx
           qcloud-app: web-nginx
       strategy:
         rollingUpdate:
           maxSurge: 25%
           maxUnavailable: 25%
         type: RollingUpdate
       template:
         metadata:
           creationTimestamp: null
           labels:
             k8s-app: web-nginx
             qcloud-app: web-nginx
         spec:
           affinity:
             nodeAffinity:
               requiredDuringSchedulingIgnoredDuringExecution:
                 nodeSelectorTerms:
                 - matchExpressions:
                   - key: kubernetes.io/hostname
                     operator: In
                     values:
                     - 192.168.3.46
           containers:
           - env:
             - name: PATH
               value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
             - name: NGINX_VERSION
               value: 1.21.0
             - name: NJS_VERSION
               value: 0.5.3
             - name: PKG_RELEASE
               value: 1~buster
             image: ccr.gz.govcloud.tencent.com/tsf_100004603197/nginx:v1
             imagePullPolicy: IfNotPresent
             name: nginx
             resources:
               limits:
                 cpu: 500m
                 memory: 1Gi
               requests:
                 cpu: 250m
                 memory: 256Mi
             terminationMessagePath: /dev/termination-log
             terminationMessagePolicy: File
             volumeMounts:
             - mountPath: /opt/software/Resources/www
               name: web
             - mountPath: /etc/nginx/conf.d/
               name: nginx-ssl
             - mountPath: /etc/nginx/nginx.conf
               name: nginx-conf
               subPath: etc/nginx/nginx.conf
           dnsPolicy: ClusterFirst
           imagePullSecrets:
           - name: qcloudregistrykey
           restartPolicy: Always
           schedulerName: default-scheduler
           securityContext: {}
           terminationGracePeriodSeconds: 30
           volumes:
           - name: web
             nfs:
               path: /www
               server: 192.168.3.45
           - name: nginx-ssl
             nfs:
               path: /nginx/ssl/
               server: 192.168.3.45
           - configMap:
               defaultMode: 420
               items:
               - key: nginx.conf
                 mode: 420
                 path: etc/nginx/nginx.conf
               name: nginx-conf
             name: nginx-conf
    status:
       availableReplicas: 3
       conditions:
       - lastTransitionTime: "2021-06-18T02:33:09Z"
         lastUpdateTime: "2021-06-18T03:35:55Z"
         message: ReplicaSet "web-nginx-6747db4c58" has successfully progressed.
         reason: NewReplicaSetAvailable
         status: "True"
         type: Progressing
       - lastTransitionTime: "2021-07-29T13:24:38Z"
         lastUpdateTime: "2021-07-29T13:24:38Z"
         message: Deployment has minimum availability.
         reason: MinimumReplicasAvailable
         status: "True"
         type: Available
       observedGeneration: 15
       readyReplicas: 3
       replicas: 3
       updatedReplicas: 3

  • 相关阅读:
    Jessica's Reading Problem POJ
    FatMouse and Cheese HDU
    How many ways HDU
    Humble Numbers HDU
    Doing Homework again
    Stacks of Flapjacks UVA
    Party Games UVA
    24. 两两交换链表中的节点
    面试题 03.04. 化栈为队
    999. 可以被一步捕获的棋子数
  • 原文地址:https://www.cnblogs.com/pengrj/p/15343710.html
Copyright © 2011-2022 走看看