create 快速创建
#快速创建
kubectl create deployment web --images=nignx
kubectl scale弹性伸缩
#弹性伸缩
kubectl scale deployment web --replicase=5
#例如
kubectl scale <resource_type> <resource_name> --replicas=<desired_replicas>
#<resource_type> 是需要调整的资源类型
#<resource_name> 是需要调整副本数量的资源的名称
#--replicas 参数用于指定期望的副本数量
kubectl expose配置Service
#Kubernetes 集群中创建一个新的 Service,并将其与已经存在的资源关联起来
kubectl expose deployment nginx --port=80 --type=NodePort
#这个也是生成一个yaml文件 可以通过-o yaml > my.yaml输出
kubectl expose <resource_type> <resource_name> --port=<port> --target-port=<target_port> --type=<service_type>
#--port 容器本地端口
#--type NodePort类型
#--target-port 目标端口
kubectl taint污点创建和删除
#注意master一般都有污点NoSchedule这个值一定不创建pod
#删除污点注意最后污点需要写上‘-’号
kubectl taint nodes <node-name> node-role.kubernetes.io/control-plane:NoSchedule-
#创建污点,注意key和value是污点容忍所需要的
#NoSchedule:一定不被调度
#PreferNoSchedule:尽量不被调度
#NOExecute:不会调度,并且还会驱逐Node已有的Pod
kubectl taint node <node-name> <key>:<value>:NoSchedule
kubectl set image容器升级
kubectl set image <resource_type> <resource_name> <container_name>=<image_name>:<版本号>
#升级过程:下载新版本,原来的就版本正常运行,然后使用新版本替换旧版本
#<container_name> 容器名称
kubectl rollout容器版本控制
#查看升级信息
kubectl rollout status <resource_type> <resource_name>
#查看历史升级信息
kubectl rollout history <resource_type> <resource_name>
#回滚指定版本
kubectl rollout undo <resource_type> <resource_name> --to-revision=<通过查看history获得版本编号>
#不添加--to-revision 就是回滚到上个版本
kubectl label标签创建以及作用
#创建NODE标签,配置YAML的时候可以通过标签调度到指定的Node范围
kubectl label <node_name> <node_name> env_role=dev
kubectl proxy配置代理及其原理
kubectl proxy --address='0.0.0.0' --accept-hosts='^.*$' --port=8001
#将kubectl proxy绑定到虚拟机的所有网络接口
#使用 kubectl proxy 开启代理后
#你可以通过 http://localhost:8001/api/v1/namespaces/<namespace>/services/<service_name>:<port_name>/proxy/
#的方式访问任意 API 服务器,并且不限于 kubernetes-dashboard 这个 API 名称。
#在该 URL 中,你可以根据需要替换以下部分:
#<namespace>: 替换为你想要访问的 Service 所在的 Namespace 名称。
#<service_name>: 替换为你想要访问的 Service 的名称。
#<port_name>: 替换为你想要访问的 Service 中定义的端口名称(Port Name)。
#通过这种方式,你可以使用 kubectl proxy 代理服务器来访问集群中的各种 API 资源,包括不同的 Service、Pod、Deployment 等对象,只需根据相应的 API 路径进行调整即可。
#这种方法非常方便,特别是在本地开发和调试时,可以快速地通过代理服务器访问集群中的 API 资源,而无需直接暴露集群的 API 服务器。
kubeadm
#初始注意,这将删除当前的集群配置和状态,包括所有的 Pod、Service 等
#因此请确保在操作前备份重要数据。
sudo kubeadm reset
#还需要删除sudo rm -rf /var/lib/etcd
#初始化
sudo kubeadm init
#新建节点,将获得的信息输入其他设备即可加入集群
kubeadm token create --print-join-command --ttl=0
kubectl apply/delet 新增和删除配置
#新增或修改配置文件
kubectl apply -f <path.yaml>
#删除配置文件
kubectl delet -f <path.yaml>
#删除配置环境
kubectl delete ing/svc/deploy
kubectl describe获取元信息
#查看事件
kubectl describe nodes <node-name>
#查看pod实时信息,包括pod内的容器
kubectl describe pod <pod-name> -n <namespace>
#查看配置环境
kubectl describe ing/svc/deploy -n <namespace>
kubectl logs获取日志
kubectl logs <pod-name> -n <namespace>
kubectl get获取信息
#查看node
kubectl get node
#查看所有pod的详细信息(IP地址,运行情况)
kubectl get pods --all-namespaces -o wide
#来查看Weave空间下pod的情况
kubectl get pods -n <namespace>
#导出pod的yaml文件
kubectl get pods -n <namespace> -o yaml > pod.yaml
#查看 Kubernetes 的services
kubectl get services
#查看所有节点下的services
kubectl get services --all-namespaces -o wide
#查看空间名称的services
kubectl get service -o wide -n <namespace>
#通过yaml查看配置services 文件,注意程序名称和空间名称
kubectl get service weave-scope-app -n weave -o yaml 3
#
kubectl get persistentvolumes
#获取PV和PVC
kubectl get pv
kubectl get pvc
#获取 Kubernetes 集群中定义的所有 StorageClass(存储类)资源的信息
kubectl get storageclass
#获取 Kubernetes 集群中定义的所有 StatefulSet(有状态副本集)资源的信息。
kubectl get statefulsets
#查看标签Node的标签
kubectl get nodes <node_name> --show-labels
#查看污点
kubectl get pods -n <node-name> | grep Taint
#结果为Taints: node.kubernetes.io/not-ready:NoSchedule
#查看后端终端
kubectl get endpointslices --all-namespaces
kubectl delete删除资源
# 其中 <pod_name> 是要删除的 Pod 的名称。删除后,Kubernetes 会自动创建一个新的 Pod
kubectl delete pod <pod_name>
kubectl delete daemonset weave-net -n kube-system
## kubectl:这是 Kubernetes 命令行工具,用于与 Kubernetes 集群交互。
## delete:这个命令用于删除 Kubernetes 集群中的资源。
## daemonset:这是 Kubernetes 中的一种资源类型。DaemonSet 确保所有(或一些)节点上都运行一个 Pod 的副本。当有节点加入集群时,Pod 会被添加到新节点上。当有节点从集群中删除时,这些 Pod 也会被垃圾回收。
## weave-net:这是要删除的 DaemonSet 的名称。这里,它是 Weave 网络插件的一部分,用于在 Kubernetes 集群的每个节点上运行网络相关的 Pod。
## -n kube-system:这是一个选项,用于指定命令在哪个 Kubernetes 命名空间中执行。这里,kube-system 是一个特殊的命名空间,用于运行 Kubernetes 系统级别的 Pod 和服务。
#删除PVC
kubectl delete persistentvolumeclaim <pvc_name>
#删除PV和PVC
kubectl delete pvc <pvc-name>
kubectl delete pvc <pvc-name>
#删除指定命名空间下的 StatefulSet 资源及其关联的 Pod
kubectl delete statefulset <statefulset-name> -n <namespace>
kubectl cluster-info显示控制面板
#显示 Kubernetes 控制面板的地址和端口
kubectl cluster-info
kubectl config获取信息以及切换
#获取Kubernetes配置
kubectl config get-contexts
#结果为
#[root@k8s-master ~]# kubectl config get-contexts
#CURRENT NAME CLUSTER AUTHINFO NAMESPACE
#* kubernetes-admin@kubernetes kubernetes kubernetes-admin
#切换Kubernetes上下文
kubectl config use-context <context-name>
#例如
#kubectl config use-context kubernetes-admin@kubernetes
#查看Kubernetes上下文
kubectl config current-context
#完整的kubeconfig文件内容
kubectl config view
#将配置文件导出
kubectl config --kubeconfig=$HOME/.kube/config view --merge --flatten > $HOME/.kube/config-new
#将配置文件替换
kubectl config --kubeconfig=$HOME/.kube/config-new set-context --current --kubeconfig=config-new.yaml
kubectl cordon/uncordon node调度修改
kubectl cordon <node-name>
#标记不可调度
kubectl uncordon <node_name>
#标记可调度
kubectl exec进入容器
进入POD
kubectl exec -it mysql-0 -- /bin/bash