使用root用户
kubectl api-versions [flags]
列出可用的api版本
root@master1 k8s]# kubectl api-versions
admissionregistration.k8s.io/v1
admissionregistration.k8s.io/v1beta1
.
.
.
rbac.authorization.k8s.io/v1
rbac.authorization.k8s.io/v1beta1
scheduling.k8s.io/v1
scheduling.k8s.io/v1beta1
storage.k8s.io/v1
storage.k8s.io/v1beta1
v1
kubectl apply -f FILENAME [flags]
使用文件或者标准输入来创建或者更新k8s的资源
# 使用kubernetes-dashboard.yaml 创建dashboard资源
kubectl apply -f /root/k8s/kubernetes-dashboard.yaml
# 使用 /root/k8s/test 路径下的任意 .yaml, .yml, 或 .json 文件 创建资源
kubectl apply -f /root/k8s/test
kubectl get (-f FILENAME | TYPE NAME | TYPE/NAME | TYPE -l label ) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]
列出一个或多个资源。
kubectl -n kube-system get pods
kubectl -n kube-system get pods -o wide
你可以使用别名 'rc’替换 ‘replicationcontroller’ 类型的资源。
# 列出 replicationcontroller 类型的资源
kubectl get replicationcontroller
kubectl get rc,services
kubectl -n kube-system get ds
kubectl -n kube-system get pods --field-selector=spec.nodeName=master1
kubectl delete (-f FILENAME | TYPE NAME | TYPE/NAME | -l label | --all]) [flags]
从文件、标准输入或指定标签选择器、名称、资源选择器或资源中删除资源。
使用kubernetes-dashboard.yaml 文件中指定的类型和名称删除 pod。
kubectl delete -f /root/k8s/kubernetes-dashboard.yaml
# 可以通过describe获取标签
# 删除标签名= 的所有pod 和服务。
kubectl -n kube-system delete pods,services -l name=
# 删除所有具有标签名称= 的 pod 和服务,包括未初始化的那些。
kubectl delete pods,services -l name= --include-uninitialized
kubectl -n kube-system delete pods --all
kubectl describe (-f FILENAME | TYPE NAME_PREFIX | TYPE/NAME | TYPE -l label ) [flags]
显示一个或多个资源的详细状态,默认情况下包括未初始化的资源。
kubectl describe nodes
显示 master1 节点的详细信息
kubectl describe nodes master1
kubectl -n kube-system describe pod podName
显示pod名称为 etcd-master1 的详细信息。
kubectl -n kube-system describe pod etcd-master1
# 记住:副本控制器创建的任何 pod 都以复制控制器的名称为前缀。
kubectl describe pods
内容非常多,我只截了一点点
kubectl -n kube-system describe pods
kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags]
# 编辑 pod中,名称为etcd-master1的定义
kubectl -n kube-system edit pod etcd-master1
kubectl exec pod-name [-c CONTAINER-name] [-i] [-t] [flags] [-- COMMAND [args...]]
对pod中的容器执行命令。
进入名称为etcd-master1的pod,执行date命令
kubectl -n kube-system exec etcd-master1 -- date
进入名称为etcd-master1的pod,名称为etcd的容器,执行date命令
kubectl -n kube-system exec etcd-master1 -c etcd -- date
kubectl -n kube-system exec -it etcd-master1 -- /bin/sh
kubectl logs POD [-c CONTAINER] [--follow] [flags]
在pod中打印容器的日志。
kubectl logs
# 打印etcd-master1中容器的日志
kubectl -n kube-system logs etcd-master1
类似于 ‘tail -f’ 命令
kubectl logs -f
# 打印etcd-master1中容器的日志
kubectl -n kube-system logs -f etcd-master1
kubectl explain [--recursive=false] [flags]
kubectl explain pod
kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [flags]
kubectl expose rc nginx --port=80 --target-port=8000
kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server | client | none] [--overrides=inline-json] [flags]
在集群上运行指定的镜像
启动nginx实例
kubectl run nginx --image=nginx
因为我命令里面没有指定空间,所以是在默认空间
kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]
自动调整deployment、rs或者rc的副本数量
# 使用 Deployment "foo"设定,使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在2到10之间
kubectl autoscale deployment foo --min=2 --max=10
kubectl autoscale rc foo --max=5 --cpu-percent=80
kubectl create rolebinding lucky-admin-rolebinding -n lucky --clusterrole=cluster-admin --serviceaccount=lucky:lucky-admin
# 切换账号到 集群用户,有任何权限(因为后面操作需要这个用户权限)
kubectl config use-context kubernetes-admin@kubernetes
kubectl create ns monitor-sa