k8s相关基础命令 使用

k8s

一.环境搭建

参考地址 :

https://www.cnblogs.com/tz90/p/15466646.html
#最新、最全、最详细的 K8S 学习笔记总结(2021最新版)
https://www.jianshu.com/p/2cbdf5b65bb7

二.命令

命令自动补全:


[root@k8s-master01 ~]# yum install -y bash-completion
[root@k8s-master01 ~]# source /usr/share/bash-completion/bash_completion
[root@k8s-master01 ~]# source <(kubectl completion bash)
[root@k8s-master01 ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc

1.查看类常用命令

#生成加入token
kubeadm join 192.168.56.12:6443 --token qj0nng.wmfof5ego8i5bx5f --discovery-token-ca-cert-hash sha256:ed86c67741198cf7da9a8775db01672d00dfa6833d3e9059adb3ebdff09aebc8 

# 查看node,pod,svc,cs,event,cm,sa ,deploy jobs ,ing ingresses
kubectl get pod 
kubectl get nod

#查看命名空间
kubectl -n kube-system

#查看node、pod启动情况
kubectl describe pod nginx-6799fc88d8-lwqb7

#查看日志
kubectl logs --tail=300 -f nginx-6799fc88d8-lwqb7

#调试容器

kubectl debug -n  zstack edge-vm-controller-6bbfc84f4f-hj66v   --image centos --target edge-vm-controller  -it
#创建一份副本进行测试
kubectl debug cdebug-64cd86798b-sjxrl -it --image=centos --share-processes --copy-to=cdebug-debug -- sh
#调试主机
kubectl debug node/10.69.202.146 -it --image=centos -- shchroot /host


#进入容器
kubectl exec nginx-6799fc88d8-lwqb7 -it -- /bin/sh
kubectl exec mypod -c ruby-container -it -- bash
# 切换命名空间
kubectl config set-context $(kubectl config current-context) --namespace=kube-ops

# 查看pod的详细信息,以yaml格式或json格式显示
kubectl get pods -o yaml

# 查看pod的标签信息
kubectl get pod -A --show-labels 

# 根据Selector(label query)来查询pod
kubectl get pod -A --selector="k8s-app=kube-dns"

#查看运行pod的环境变量
kubectl exec podName env
# 查看系统资源利用率
kubectl exec nginx-app-4028413181-cnt1i ps aux
#权限判断
kubectl auth can-i create pods --all-namespaces

#查看job
kubect get job  \ kubect get cronjob

#查看所有存储信息记录
df -Th

#查看组件日志
journalctl -l -u kube-apiserver
journalctl -l -u kube-controller-manager
journalctl -l -u kube-scheduler
journalctl -l -u kubelet
journalctl -l -u kube-proxy

#格式化输出
-o=custom-columns=<spec>   #使用逗号分隔的自定义列列表打印表格
-o=custom-columns-file=<filename> #使用文件中的自定义列模板打印表格
-o=json    #输出JSON 格式的API对象
-o=jsonpath=< template>       #打印jsonpath表达式中定义的字段
-o=jsonpath-file=<filename>   #打印由文件中的jsonpath表达式定义的字段
-o=name  #仅打印资源名称 
-o=wide  #以纯文本格式输出任何附加信息,对于Pod ,包含节点名称
-o=yaml  #输出 YAML 格式的 API 对象 


#查看卡住服务
kubectl api-resources --verbs=list --namespaced -o name   | xargs -n 1 kubectl get --show-kind --ignore-not-found -n kubesphere-logging-system



2.操作类指令

#创建资源
kubectl create -f xxx.yaml
# 应用资源
kubectl apply -f xxx.yaml
# 应用资源,该目录下的所有 .yaml, .yml, 或 .json 文件都会被使用
kubectl apply -f <directory>
# 创建test名称空间
kubectl create namespace test
# 编辑资源
kubectl edit pod podName
# 删除指定的pod
kubectl delete pod podName
#文件复制
kubectl cp /tmp/foo_dir <some-pod>:/tmp/bar_dir

#维护模式(标志node不可调度,但不影响现有pod)
kubectl cordon k8s-node1

3. 高级指令

#######################回滚操作#############
# 查询历史版本
$ kubectl rollout history daemonset <daemonset-name>
kubectl rollout history deploy php-apache
# 查询某个历史版本的详细信息
$ kubectl rollout history daemonset <daemonset-name> --revision=1
# 回滚
$ kubectl rollout undo daemonset <daemonset-name> --to-revision=<revi
sion>
# 查询回滚状态
$ kubectl rollout status  deploy <daemonset-name>

#######################扩容操作#################
#手动扩容 
kubectl scale deployment php-apache --replicas=2

#自动扩容(需要配合HPA metric使用)
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

#镜像更新
kubectl set image deployment/nginx-deployment my-nginx=nginx:1.9.1

# 添加标签
kubectl label pods my-pod new-label=awesome

# 添加注解
kubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq

# 部分更新节点
kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'

dashboard

## dashboard生成token
# 创建用户
kubectl create serviceaccount dashboard-admin -n kube-system

# 用户授权
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

# 获取用户Token
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

样例

apiVersion: apps/v1 # 版本信息
kind: Deployment # 资源类别
metadata:  # 资源元数据
  name: nginx-deployment # 元数据对应的名称
  namespace: app-test   namespace: app-test 
  lables: # 对资源打上便签供后续使用
    apps: nginx
   annotations: # 主要目的是方便用户阅读查找
spec: # 定义期望状态
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec: 
      containers:
        - name: nginx
          image: nginx:1.14.2
          ports:
            - containerPort: 80

   转载规则


《k8s相关基础命令 使用》 by XieJiayi is licensed under a 知识共享署名 4.0 国际许可协议 许可协议。转载请注明来源
 上一篇
其他插件 使用 其他插件 使用
一、Grafana + Prometheus +node-exporter 注意事项1.参考地址:https://www.jianshu.com/p/80de3bb0ec182.需要修改镜像prometheus、Grafana版本3.调整n
2023-01-06
下一篇 
集群调度 使用 集群调度 使用
调度过程调度分为几个部分:首先是过滤掉不满足条件的节点,这个过程称为 predicate;然后对通过的节点按照优先级排序,这个是 priority;最后从中选择优先级最高的节点。如果中间任何一步骤有错误,就直接返回错误。Predicate
2023-01-06
  目录