跳到主要内容

命令

请添加图片描述


kubectl get pod calico-kube-controllers-659cb5954c-ddr55 -n calico-system -o yaml


kubectl describe pod alico-kube-controllers-659cb5954c-ddr55 -n calico-system

kubectl logs po <pod-name> # 当只有一个容器时
kubectl logs po <pod-name> -c <container-name> # 查看指定容器日志

# 进入 Pod 终端
kubectl exec -it <pod-name> -- <command> # 当只有一个容器时
kubectl exec -it <pod-name> -c <container-name> -- <command> # 进入指定容器


kubectl rollout restart daemonset kube-proxy -n kube-system

进入 名为curl的 pod中
kubectl exec -it curl -- sh


kubectl get sc #StorageClass
kubectl get rs #ReplicaSet


#创建deploy
kubectl create deploy mynginx --image=nginx -n dev

#yaml 形式
kubectl create deployment nginx --image=nginx --dry-run -o yaml

#暴露service
kubectl expose deploy mynginx --name=mynginx-service -n dev --port=80 --target-port=80 --type=ClusterIP

#查看service
kubectl get deploy,svc -n dev -owide



#创建deploy
kubectl create deploy mynginx --image=nginx -n dev

#暴露service
kubectl expose deploy mynginx --name=mynginx-service -n dev --port=80 --target-port=80 --type=NodePort

#查看service
kubectl get deploy,svc -n dev -owide


#执行升级
kubectl set image deploy mynginx nginx=nginx:1.23.0

# 查看 升级历史记录
kubectl rollout history deploy mynginx

# 撤销上一次升级
kubectl rollout undo deploy mynginx

# 按照版本回滚到某一个版本 版本号可以通过 kubectl rollout history deploy mynginx查看
kubectl rollout undo deploy mynginx --to-revision=版本号

# 查看回滚状态
kubectl rollout undo status deploy mynginx

# 更新Deployment中容器的镜像
kubectl set image deployment/<deployment-name> <container-name>=<new-image-name>:<new-image-tag>

kubectl set image deployment/myapp mycontainer=myregistry/myimage:v2


# 查看 kubeadm-config ConfigMap
kubectl -n kube-system get configmap kubeadm-config -o yaml

# 编辑 kubeadm-config ConfigMap (这将打开默认编辑器)
kubectl -n kube-system edit configmap kubeadm-config

# 或者使用临时文件进行编辑(先备份原始配置)
kubectl -n kube-system get configmap kubeadm-config -o yaml > kubeadm-config.yaml
vi kubeadm-config.yaml # 使用你喜欢的编辑器修改文件
kubectl apply -f kubeadm-config.yaml


# 从文件创建配置,redis保存到k8s的etcd;
kubectl create cm redis-conf --from-file=redis.conf




kubectl create secret docker-registry zhangsan-docker \
--docker-username=zhangsan\
--docker-password=Lfy123456 \
--docker-email=534096094@qq.com

##命令格式
kubectl create secret docker-registry regcred \
--docker-server=<你的镜像仓库服务器> \
--docker-username=<你的用户名> \
--docker-password=<你的密码> \
--docker-email=<你的邮箱地址>



kubectl label nodes <node-name> <label-key>=<label-value>

将 `<node-name>` 替换为要打标签的 Worker 节点的名称,`<label-key>` 替换为标签的键,`<label-value>` 替换为标签的值。
例如,要为名为 "worker-1" 的节点打标签,使用:

kubectl label nodes worker-1 disk=ssd

这将为 "worker-1" 节点打上一个名为 "disk",值为 "ssd" 的标签。

node role
kubectl label node k8s-workere2 node-role.kubernetes.io/worker=worker

kubectl get nodes --show-labels

这将显示节点列表及其相应的标签。


去掉污点
kubectl taint nodes k8sm01 node-role.kubernetes.io/control-plane:NoSchedule-

kubectl taint nodes k8sm01 node-role.kubernetes.io/master:NoSchedule-

Node管理

禁止pod调度到该节点上

kubectl cordon <node name> --delete-emptydir-data --ignore-daemonsets

驱逐该节点上的所有pod
kubectl drain <node name>
该命令会删除该节点上的所有Pod(DaemonSet除外),在其他node上重新启动它们,通常该节点需要维护时使用该命令。直接使用该命令会自动调用kubectl cordon <node>命令。

当该节点维护完成,启动了kubelet后,再使用kubectl uncordon <node>即可将该节点添加到kubernetes集群中。





kubectl rollout 命令用于管理 Kubernetes 中的滚动更新操作。下面是一些 kubectl rollout 命令的示例用法:

查看滚动更新状态:
kubectl rollout status deployment/my-deployment

这将显示名为 “my-deployment” 的部署的滚动更新状态,包括当前副本集的状态、可用副本数等信息。

查看滚动更新历史:
kubectl rollout history deployment/my-deployment

这将显示名为 “my-deployment” 的部署的滚动更新历史,包括每个修订版本的版本号、更新时间等信息。

回滚到先前的修订版本:
kubectl rollout undo deployment/my-deployment

这将回滚名为 “my-deployment” 的部署到先前的修订版本。

回滚到特定的修订版本:
kubectl rollout undo deployment/my-deployment --to-revision=2

这将回滚名为 “my-deployment” 的部署到修订版本号为 2 的版本。

暂停滚动更新操作:
kubectl rollout pause deployment/my-deployment

这将暂停名为 “my-deployment” 的部署的滚动更新操作。

恢复滚动更新操作:
kubectl rollout resume deployment/my-deployment

这将恢复名为 “my-deployment” 的部署的滚动更新操作。

通过使用这些 kubectl rollout 命令,您可以管理部署的滚动更新过程,查看状态、历史记录,执行回滚操作,以及暂停或恢复滚动更新操作。请根据您的需求和环境选择适当的命令和选项

#使用 kubectl drain(排干),将指定删除的节点上的资源迁移至集群中的其它节点上,以下以k8s-node-02为例
kubect1 drain k8s-node-02 --delete-local-data --force --ignore-daemonsets
kubectl delete node k8s -node-02


#重置
Kubeadm reset -f
systemct1 stop kubelet
Systemctl stop docker
rm -rf /var/1ib/cni/
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/
ifconfig cnio down

ifconfig flannel.1 down
ifconfig dockero down
ip 1ink delete cnio
ip link delete flannel.1
systemct1 start docker
iptables -F && sudo iptables -t nat -F 88 sudo iptables -t mangle -F &8 sudo iptables -x
kubectl explain 命令用于获取 Kubernetes API 资源的详细说明。以下是一些示例 kubectl explain 命令的用法:

获取 Pod 的说明:
kubectl explain pod

这将显示有关 Pod 资源的详细说明,包括支持的字段、字段类型、默认值等。

获取 Deployment 的说明:
kubectl explain deployment

这将显示有关 Deployment 资源的详细说明,包括支持的字段、字段类型、默认值等。

获取 Service 的说明:
kubectl explain service

这将显示有关 Service 资源的详细说明,包括支持的字段、字段类型、默认值等。

获取特定字段的说明:
kubectl explain pod.spec.containers

这将显示有关 Pod 规范中 containers 字段的详细说明,包括该字段的类型、子字段、默认值等。

获取扩展资源(Custom Resource Definition)的说明:
kubectl explain crd

这将显示有关扩展资源(Custom Resource Definition)的详细说明,包括支持的字段、字段类型、默认值等。

通过使用 kubectl explain 命令,您可以获取各种 Kubernetes 资源(包括核心和自定义资源)的详细说明,以便更好地了解它们的属性和用法。



kubectl create deploy mysql --image mysql:5.7 --port 3306 --dry-run -o yaml > deploy.yaml

kubectl expose deploy mysql --port=3306 --type=NodePort --dry-run -o yaml > svc.yaml

cat deploy.yaml svc.yaml > mysql.yaml

Too long: must have at most 262144 bytes超过限制,
使用--server-side解决
kubectl apply -f 01-tigera-operator.yaml --server-side