kubeadm命令
kubeadm init 启动一个kubernetes主节点
kubeadm join 启动一个kubernetes工作节点并且将其加入到集群
kubeadm upgrade 更新一个kubernetes集群到新版本
kubeadm config 如果使用kubeadm1.7或者更低的版本,需要对集群做一些配置以便使用kubeadm upgrade命令
kubeadm token 使用kubeadm join 来管理令牌,https
kubeadm version 打印版本
kubeadm reset 还原之前使用kubeadm init或者kubeadm join 对节点产生改变kubectl命令
kubectl控制Kubernetes集群管理器
格式:
kubectl [command] [TYPE] [NAME] [flags]
说明:
1、command:指定在一个或多个资源上要执行的操作。例如:create、get、describe、delete、apply 等
2、TYPE:指定资源类型(如:pod、node、services、deployments等)。资源类型大小写敏感,可以指 定单数、复数或缩写形式。
3、NAME:指定资源的名称。名称大小写敏感。如果省略名称空间,则显示默认名称空间资源的详细信息或者 提示:No resources found in default namespace.。
4、flags:指定可选的标记。例如,可以使用-s或--server标识来指定Kubernetes API服务器的地 址和端口;-n指定名称空间;等等。
注意:你从命令行指定的flags将覆盖默认值和任何相应的环境变量。优先级最高。
5、在多个资源上执行操作时,可以通过类型 [TYPE] 和名称 [NAME] 指定每个资源,也可以指定一个或多 个文件。
例:
kubectl get svc,node
kubectl get pod -n kube-system podname podname
kubectl get pod -f file1 -f file2 -f file基本命令
create
从一个文件创建一个资源对象,就是yml文件创建pod。
生产中不用create,因为不能更新。
格式:
kubectl create [参数] [--image=镜像名]
参数:
-f 文件名.yml #指定文件启动pod
ns ns名 #创建一个名称空间
deployment pod名 [类别] #生成一个以pod名加哈希值的pod,标签默认为app=pod名
configmap [对象名] [类别] #创建资源对象
类别:
--from-file #基于某个文件的方式创建环境变量,可以是目录,可以是文件。
--from-literal #基于键值对的方式创建环境变量
secret generic [对象名] [类别] #通过generic类型创建了一个加密的资源对象(base64 -d解密)
类别:
--from-file #基于某个文件的方式创建环境变量,可以是目录,可以是文件。
--from-literal #基于键值对的方式创建环境变量
secret tls [对象名] [类别] #通过tls类型创建了一个加密的资源对象(base64 -d解密)
类别:
--key #证书中的.key
--cert #证书中的.crt
例:
kubectl create -f nginx1-pod.yml
kubectl create ns linux37 #创建名称空间名为linux37
kubectl create configmap zhao --from-literal=name=zhengwen #基于键值对的方式创建以zhao命名的环境变量
kubectl create configmap nginx_conf --from-file=/data/nginx.conf #基于文件创建nginx_conf命名的环境变量
kubectl create secret generic mysql --from-literal=username=root #基于键值对的方式创建加密的信息,root四个字母加密
kubectl create secret tls nginx-ssl --key=./nginx.key --cert=./nginx.crt #把nginx证书创建成了资源对象
kubectl create deployment nginx --image=nginx:1.20 #创建了以nignx加哈希值的pod,默认加入标签app=nginxexpose
Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service
run
创建和运行pod
生产不用此方式。
格式:
kubectl run [pod名] [参数]
参数:
--image=镜像:tag #指定容器,可以是自己harbor中的镜像
例:
kubectl run nginx --image=nginx:1.20set
设置对象的特定特性
explain
文档的参考资料, 通过yml文件创建pod,expose是可以看到yml文件里边需要什么参数
格式:
kubectl explain pod
例:
kubectl explain pod
kubectl explain pod.kind #可以这样一级一级往下查下去get
显示一个或多个资源信息
格式:
kubectl get [类型] [选项]
类型:
pods #显示容器
node #显示node节点
ns #显示命名空间
pv #显示pv资源
all #所有的
configmap #显示资源对象
secrets #显示加密的资源对象
endpoints #显示集群信息
deployment #pod控制器,创建Deployment时也会创建一个RS
replicaset #pod控制器RS
选项:
-o
wide #长格式显示
yaml #通过yml格式显示信息
json #通过js格式显示信息
-w #一直显示,实时更新,监控资源变化
-n #指定要显示的名称空间
--show-labels=true #显示标签信息
-l 标签名=标签
例:
kubectl get pods nginx -o yaml #获取nginx的yml信息
kubectl get pods -o wide -w #一直监控pods信息,默认是default名称空间中的
kubectl get ns #显示所有的名称空间
kubectl get pods -n kube-system #显示kube-system名称空间中的pods
kubectl get pods -o wide --show-labels=true #长格式显示并显示标签
kubectl get pods -l k8s-app=kube-proxy -n kube-system #过滤除标签名k8s-app=kube-proxy的标签edit
在服务器上编辑资源,类似vim,修改完成后:wq保存
格式:
kubectl edit [类型] [参数] [类型2]
类型:
pod #pod
参数:
pod名 #通过类型修改pod参数
类型2:
-n 命名空间 #命名空间
例:
kubectl edit pod nginx #通过类型修改nginx参数,wq退出保存delete
按文件名、标准输入、资源和名称或按资源和标签选择器删除资源
格式:
kubectl delete [类型] [参数]
类型:
node #node节点
pod #pod
ns #名称空间
参数:
-f 文件名.yml #通过yml文件删除
pod名 #通过类型删除指定pod。
node节点名 #通过类型删除指定node。
ns名 #删除名称空间
-l 标签名=标签 #通过标签过滤
例:
kubectl delete pod nginx #通过pod名删除
kubectl delete -f nginx-pod.yml #通过yml文件删除,yml文件不会删除
kubectl delete ns demo #删除demo名称空间,不要轻易删除名称空间,删除名称空间会把里边的资源对象也删除部署命令
rollout
暂停和恢复deployment的更新
格式:
kubectl rollout [参数] deployment [名称]
类型:
pause # 暂停更新
resume # 恢复更新
名称:
deployment名scale
扩容。设置一个新的个数
格式:
kubectl scale deployment [类型] [参数]
类型:
pod #pod
replicaset #pod控制器
参数:
--replicas #指定扩容数量
例:
kubectl scale deployment nginx --replicas=3 #扩容3个nginx的podautoscale
自动扩展部署
集群管理命令
certificate
修改资源对象证书
cluster-info
查看集群状态
格式:
kubectl cluster-info
例:
root@k8s-master1:/apps/kubectl_yml# kubectl cluster-info
Kubernetes control plane is running at https://192.168.66.103:6443
CoreDNS is running at https://192.168.66.103:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.top
查看资源对象CPU/内存信息,需要装组件(Metrics)
格式:
kubectl top pods [参数] [可选项]
参数:
pod #查看pod CPU/内存信息。
node #查看node CPU/内存信息。
可选项:
pod名 # 查看指定pod名 CPU/内存信息。cordon
打标签,打不可调度标签
格式:
kubectl cordon [参数]
参数:
node名 #将本机器作为可以让pod节点运行的机器uncordon
打标签,打可调度标签,新的pod不可以来
格式:
kubectl uncordon [参数]
参数:
node名 #将本机器作为不可以让pod节点运行的机器drain
驱逐当前node机器上的pod,为打不可调度标签做准备。先设置不可调度,在进行驱逐
格式:
kubectl drain [参数]
参数:
node名 #将本机器运行的pod驱逐到可调度机器上去taint
更新一个或多个节点上的污点
故障处理和Debugging命令
describe
显示特定资源或一组资源的详细信息,打印非常详细的信息。
格式:
kubectl describe [类型] [参数]
类型:
pod #pod
configmap #cm
service #集群
参数:
pod名 #显示pod名的详细信息
-n 名称空间 #指定名称空间,因为pod在这个名称空间,不指定就找默认的default
configmap名 #显示环境变量的的内容
service名 #显示集群的详细信息
例:
kubectl describe pod pod-halo #查看nginx1的详细信息
kubectl describe pod pod-halo -n linux37 #查看指定名称空间中的pod详细信息
kubectl describe configmap zhao #查看zhao的环境变量详细信息
kubectl describe service demoapp-sve #查看demoapp-sve集群的详细信息logs
打印一个pod的日志
格式:
kubectl logs [类型] [参数]
类型:
pod名 #查看指定pod名的日志
参数:
-n 名称空间 #pod所在的名称空间
-f #一直显示
例:
kubectl logs pod-halo -n linux37
kubectl logs pod-halo -n linux37 -f #一直显示日志attach
进入容器,生产不用,进入容器后在退出pod就消失了。
exec
进入pod或直接执行命令
格式:
kubectl exec [pod名] [参数] -- [命令]
参数:
-n 名称空间 #pod所在的名称空间
-c 容器名 #指定pod中的容器名,一个pod中多个容器时可以用到
例:
kubectl exec -ti nginx /bin/sh #进入nginx的pod中
kubectl exec pod-halo -n linux37 -- ifconfig #在pod-halo的pod中执行命令
或 kubectl exec -ti pod-halo -n linux37 ifconfig #一样的效果,但需要给一个终端
kubectl exec pod-halo -n linux37 -c halo -- ifconfigport-forward
转发一个或多个本地端口到pod,很少用
proxy
启动一个临时apiservice,ctrl+c就退出结束了,默认启动8001,http协议
格式:
kubectl proxycp
从容器中复制文件和目录到本机。
用于pod和外部的文件交换,将文件和目录复制到容器或从容器复制到容器。
格式:
kubectl cp [文件/目录] [参数]
参数:
-c, --container='':容器名称。如果省略,将选择pod中的第一个容器
--no-preserve=false:复制的文件/目录的所有权和权限将不会保留在容器中
例:
将“/tmp/foo_dir”本地目录拷贝到默认命名空间的远端pod的“/tmp/bar_dir”目录下
kubectl cp /tmp/foo_dir pod名:/tmp/bar_dir
复制/tmp/foo本地文件到/tmp/bar在远程pod在一个特定的容器
kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>
将/tmp/foo文件拷贝到远程pod中的/tmp/bar目录下
kubectl cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar
从远程pod拷贝/tmp/foo到本地/tmp/bar
kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar
复制文件到pod的指定目录,也可从容器中复制文件到外部
kubectl cp fileName podName:/fileName先进的命令
diff
对比当前运行的pod和执行的yml文件对比
格式:
kubectl diff [参数]
参数:
-f yml文件 #yml文件对pod
例:
kubectl diff -f nginx.yml #对比nginx.yml文件和apiserver中的文件,标记出不同地方。+不同区别,-同样的apply
通过文件名或标准输入对资源的配置。
格式:
kubectl apply [参数]
参数:
-f 文件名.yml #通过文件名创建pod
例:
kubectl apply -f nginx.yml #启动nginx.yml的podpatch
打补丁,也是修改,和edit一样
replace
修改文件副本
kustomize
Build a kustomization target from a directory or URL.
设置命令
label
设置标签,修改或创建一个标签。
格式:
kubectl label [选项] [类型] [参数] 标签名=标签值
选项:
--overwrite #对已经存在的标签进行修改
类型:
pod #修改pod的标签
node # node节点
参数:
pod名 #指定要修改的pod名
node节点名 #指定要修改的node节点名
例:
kubectl label --overwrite pod nginx1 app=nginx2 #对nginx标签已经存在的标签进行修改annotate
Update the annotations on a resource
completion
输出指定shell的shell完成代码(bash或zsh)
其他命令
api-resources
打印服务器上支持的API资源
api-versions
在服务器上以“组/版本”的形式打印支持的API版本
config
修改kubeconfig文件
plugin
插件
格式:
kubectl plugin [参数]
例:
kubectl plugin list #查看本机装有那些插件version
版本信息
格式:
kubectl version