--- notion-id: f928c287-f318-419a-a9c9-9c48b30a9c48 --- ## create 快速创建 ```shell #快速创建 kubectl create deployment web --images=nignx ``` ## kubectl scale弹性伸缩 ```shell #弹性伸缩 kubectl scale deployment web --replicase=5 #例如 kubectl scale --replicas= # 是需要调整的资源类型 # 是需要调整副本数量的资源的名称 #--replicas 参数用于指定期望的副本数量 ``` ## kubectl expose配置Service ```shell #Kubernetes 集群中创建一个新的 Service,并将其与已经存在的资源关联起来 kubectl expose deployment nginx --port=80 --type=NodePort #这个也是生成一个yaml文件 可以通过-o yaml > my.yaml输出 kubectl expose --port= --target-port= --type= #--port 容器本地端口 #--type NodePort类型 #--target-port 目标端口 ``` ## kubectl taint污点创建和删除 ```shell #注意master一般都有污点NoSchedule这个值一定不创建pod #删除污点注意最后污点需要写上‘-’号 kubectl taint nodes node-role.kubernetes.io/control-plane:NoSchedule- #创建污点,注意key和value是污点容忍所需要的 #NoSchedule:一定不被调度 #PreferNoSchedule:尽量不被调度 #NOExecute:不会调度,并且还会驱逐Node已有的Pod kubectl taint node ::NoSchedule ``` ## kubectl set image容器升级 ```shell kubectl set image =:<版本号> #升级过程:下载新版本,原来的就版本正常运行,然后使用新版本替换旧版本 # 容器名称 ``` ## kubectl rollout容器版本控制 ```shell #查看升级信息 kubectl rollout status #查看历史升级信息 kubectl rollout history #回滚指定版本 kubectl rollout undo --to-revision=<通过查看history获得版本编号> #不添加--to-revision 就是回滚到上个版本 ``` ## kubectl label标签创建以及作用 ```shell #创建NODE标签,配置YAML的时候可以通过标签调度到指定的Node范围 kubectl label env_role=dev ``` ## kubectl proxy配置代理及其原理 ```shell kubectl proxy --address='0.0.0.0' --accept-hosts='^.*$' --port=8001 #将kubectl proxy绑定到虚拟机的所有网络接口 #使用 kubectl proxy 开启代理后 #你可以通过 http://localhost:8001/api/v1/namespaces//services/:/proxy/ #的方式访问任意 API 服务器,并且不限于 kubernetes-dashboard 这个 API 名称。 #在该 URL 中,你可以根据需要替换以下部分: #: 替换为你想要访问的 Service 所在的 Namespace 名称。 #: 替换为你想要访问的 Service 的名称。 #: 替换为你想要访问的 Service 中定义的端口名称(Port Name)。 #通过这种方式,你可以使用 kubectl proxy 代理服务器来访问集群中的各种 API 资源,包括不同的 Service、Pod、Deployment 等对象,只需根据相应的 API 路径进行调整即可。 #这种方法非常方便,特别是在本地开发和调试时,可以快速地通过代理服务器访问集群中的 API 资源,而无需直接暴露集群的 API 服务器。 ``` ## kubeadm ```shell #初始注意,这将删除当前的集群配置和状态,包括所有的 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 新增和删除配置 ```shell #新增或修改配置文件 kubectl apply -f #删除配置文件 kubectl delet -f #删除配置环境 kubectl delete ing/svc/deploy ``` ## kubectl describe获取元信息 ```shell #查看事件 kubectl describe nodes #查看pod实时信息,包括pod内的容器 kubectl describe pod -n #查看配置环境 kubectl describe ing/svc/deploy -n ``` ## kubectl logs获取日志 ```shell kubectl logs -n ``` ## kubectl get获取信息 ```shell #查看node kubectl get node #查看所有pod的详细信息(IP地址,运行情况) kubectl get pods --all-namespaces -o wide #来查看Weave空间下pod的情况 kubectl get pods -n #导出pod的yaml文件 kubectl get pods -n -o yaml > pod.yaml #查看 Kubernetes 的services kubectl get services #查看所有节点下的services kubectl get services --all-namespaces -o wide #查看空间名称的services kubectl get service -o wide -n #通过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 --show-labels #查看污点 kubectl get pods -n | grep Taint #结果为Taints: node.kubernetes.io/not-ready:NoSchedule #查看后端终端 kubectl get endpointslices --all-namespaces ``` ## kubectl delete删除资源 ```shell # 其中 是要删除的 Pod 的名称。删除后,Kubernetes 会自动创建一个新的 Pod kubectl delete pod 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 #删除PV和PVC kubectl delete pvc kubectl delete pvc #删除指定命名空间下的 StatefulSet 资源及其关联的 Pod kubectl delete statefulset -n ``` ## kubectl cluster-info显示控制面板 ```yaml #显示 Kubernetes 控制面板的地址和端口 kubectl cluster-info ``` ## kubectl config获取信息以及切换 ```shell #获取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 #例如 #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调度修改 ```yaml kubectl cordon #标记不可调度 kubectl uncordon #标记可调度 ``` ## kubectl exec进入容器 ```shell 进入POD kubectl exec -it mysql-0 -- /bin/bash ```