kubectl命令行管理工具
-
基础命令
-
create 通过文件名或标准输入创建资源
-
expose 为Deployment,Pod创建service
-
run 在集群中运行一个特定的镜像
-
set 在对象上设置特定的功能
-
explain 文档参考资料
-
get 显示一个或多个资源
-
edit 使用系统编辑器编辑一个资源
-
delete 通过文件名、标准输入、资源名或标签选择器来删除资源
-
-
部署命令
-
rollout 管理Deployment/Daemonset资源的发布(例如状态、发布记录、回滚等)
-
rolling-update 滚动升级、限制ReplicationController
-
scale 对Deployment、ReplicaSet、RC或Job资源扩容或缩容Pod数量
-
autoscale 为Deployment/ReplicaSet、RC配置自动伸缩规则(依赖metrics-server和hpa)
-
-
集群管理命令
-
certificate 修改证书资源
-
cluster-info 显示集群信息
-
top 查看资源利用率(依赖metrics-server)
-
cordon 标记节点不可调度
-
uncordon 标记节点可调度
-
drain 驱逐节点上的应用,准备下线维护
-
taint 修改节点taint标记
-
-
故障诊断和调试命令
-
describe 显示资源详细信息
-
logs 查看pod内容器日志,若pod有多个容器,-c参数指定容器名称
-
attach 附加到pod内的一个容器
-
exec 在容器内执行命令
-
port-forward 为pod创建本地端口映射
-
proxy 为Kubernetes API server 创建代理
-
cp 拷贝文件或目录到容器中,或从容器内向外拷贝
-
-
高级命令
-
apply 从文件名或标准输入对资源创建、更新
-
patch 使用补丁方式修改、更新资源的某些字段
-
replace 从文件名或标准输入替换一个资源
-
convert 在不同API版本之间转换对象定义
-
-
设置命令
-
label 给资源设置、更新标签
-
annotate 给资源设置、更新注解
-
completion kubectll工具不全,source <(kubectl completion bash) (依赖bash-completion包)
yum -y install bash-completion source <(kubectl completion bash) kube <tab><tab> kubeadm kubectl kubelet
-
-
其他命令
-
api-resources 查看所有资源
-
api-versions 打印受支持的API版本
-
config 修改kubeconfig文件(用于访问API,比如配置认证信息)
-
help 帮助命令
-
version 查看 kubectl和k8s版本
==========
小试牛刀
-
使用deployment控制器部署镜像
# kubectl create deployment my-dep --image=nginx --replicas=3 deployment.apps/my-dep created # kubectl get deploy,pods NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/my-dep 0/3 3 0 14s NAME READY STATUS RESTARTS AGE pod/my-dep-5b7868d854-dphc8 0/1 ContainerCreating 0 14s pod/my-dep-5b7868d854-sgr2k 0/1 ContainerCreating 0 14s pod/my-dep-5b7868d854-z9k5r 0/1 ContainerCreating 0 14s
-
-
使用service将pod暴漏出去:
# kubectl expose deployment my-dep --port=80 --target-port=80 --name=my-dep-svc --type=NodePort service/my-dep-svc exposed # kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 31h myweb NodePort 10.96.176.142 <none> 80:30115/TCP 26s # kubectl get svc,deploy,pods NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 31h service/my-dep-svc NodePort 10.96.225.241 <none> 80:30572/TCP 23s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/my-dep 3/3 3 3 116s NAME READY STATUS RESTARTS AGE pod/my-dep-5b7868d854-dphc8 1/1 Running 0 116s pod/my-dep-5b7868d854-sgr2k 1/1 Running 0 116s pod/my-dep-5b7868d854-z9k5r 1/1 Running 0 116s # 多个容器提供统一服务,service实现了负载均衡的角色,统一暴漏端口,port为 service(10.96.225.241)端口 target-port为容器端口,type=NodePort 可以将容器端口暴漏在宿主机的网络中,随机产生端口
-
访问应用:
集群内:curl http://10.96.225.241 -k
http://NodeIP:port # port 随机生成,通过get svc获取,上例为: 集群外:http://NodeIP:30572