• 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
    # 查看 所有 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
    
    # 查看 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
    [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
    
    
  • 相关阅读:
    开发笔记
    PHP的重载及魔术方法
    网站飘窗效果
    asp.net 导入Excel记录到数据库中(转载)
    safari打不开该网页 因为网址无效(解决办法)
    使用join()方法 分隔拆分后的数组
    面向新手的Web服务器搭建——IIS的搭建(转载)
    ueditor上传大容量视频报http请求错误的解决方法(转载)
    表格中针对大段说明文字加一个弹出层
    JS禁止右键及禁止选中文本
  • 原文地址:https://www.cnblogs.com/vipsoft/p/16868545.html
Copyright © 2020-2023  润新知