语法格式
kubectl 自明令 资源类型 资源的名称 指定可选标志或者附加参数
kubectl hlep 命令 用于查看命令以及子命令的帮助信息
kubectl cluster-info 显示集群的相关配置信息 +dump显示全部信息
kubectl api-resources 查看当前服务器上所有资源对象
kubectl api-versions 查看当前服务器上所有资源对象的版本
kubectl config 管理当前节点上的认证信息 +view 查看详细配置
以上五个命令都是查询集群状态信息的命令
/etc/kubernetes/admin.conf 是集群管理的密钥文件,谁持有这个密钥谁就可以管理集群,将这个密钥传递给其他主机就可以授权其他主机管理集群
比如让harbor管理集群
vim /etc/hosts 给hosts添加地址解析
yum -y install kubectl 下载kubectl (管理集群的服务)
mkdir -p $HOME/.kube 创建一个名字为主机名的目录,下面有隐藏目录.kube
rsync -av master:/etc/kubernetes/admin.conf $HOME/.kube/config 将集群管理密钥传递到新建的目录下的.kube隐藏目录下并设定文件名为config
chown $(id -u):$(id -g) $HOME/.kube/config 将该文件归属设置为当前用户
kubectl get nodes 查看集群状态,确认授权成功
pod管理
pod是由一个或者多个容器组成,是一个服务的多个进程的聚合单位,是kubernetes(k8s)中最小的管理元素,会自动维护在其中运行的容器(如当pod中的容器挂掉他会自动重启该容器,并且记录重启次数),具有原子性,
创建pod资源对象
kubectl run myweb --image=myos:httpd =号可以省略
使用myos:httpd镜像创建一个名为myweb的pod资源对象
kubectl get pods 查看所有pods 加 -o wide 可以查看资源对象详细信息, 可以看到ip地址,节点 后面跟-o json或yml的话会以json格式或者yml格式查看信息
kubectl get namespaces 查看名称空间
kubectl -n 名号空间的名字 get pods 查看名称空间中的pod信息
kubectl create k8s中除了pod之外都用create创建,pod只能用run创建
如,kubectl create namespace work 创建名为work的名称空间(名称空间类似于分盘(个人理解)如果没有就默认放在default里,指定则在命令后加-n 名称空间名字)
除了work外都是系统自带的名称空间,不要乱动
kubectl describe pods 容器名
gkubectl get ,kubectl describe ,kubectl logs 是排错三兄弟。
get只能查看最外围信息,describe能查看更相信的信息,logs查看那容器内信息
使用describe查看详细配置信息,其中,events能看到报错信息,失败以及失败原因
get查看pod的运行状态以及ip地址,pod盒子出现的问题,describe查看容器问题,如是否创建成功和容器未正常启动的原因,logs查看容器内运行程序的问题,如没有php环境缺要查看php文件,会导致无法解析的原因,是容器内的问题就要使用logs查看。
kubectl exec -it pod名字 --(终止符) 命令 在容器(pod)内执行命令
如 kubectl exec -it myweb -- ls 在名为myweb的pod内执行ls的命令
kubectl exec -it myweb -- bash 进入名为myweb的pod
而如果一个pod内有多个容器,则需要使用 -c指定容器名
如kubectl exec -it myweb -c mycontainer -- bash 进入myweb这个pod内的mycontainer容器中
kubectl cp
与容器进行文件或者目录的传输
如: kubectl cp myweb:/etc/yum.repos.d /root/aaa 这样就可以吧myweb这个pod下的/etc/yum.repos.d整个目录下的东西拷贝出来放在/root/aaa下
原理是 kubectl会将myweb:/etc/yum.repos.d的目录和文件进行打包,然后重定向给tar -xf - -C xxx:/ xxx/进行解包(了解)
kubectl delete [选项/参数] 资源类型 资源名称
如: kubectl delete pods myweb 删除名为myweb的pod 这时pods就是资源类型(pod类型的资源),myweb就是资源名称
kubectl -n work delete pods --all 删除work名称空间下的所有pod对象 这时-n work为选项参数,pods为资源类型(pod类型的资源),--all代表所有资源
kubectl delete namespaces work 删除名为work的名称空间 这时namespaces为资源类型(名称空间类型的资源),work为资源名称