目录
介绍
控制端
api-server(api)是集群的核心是k8s中最重要的组件,因为它是实现声明式api的关键
kubernetes api-server的核心功能是提供了Kubernetes各类资源对象pod RC service等的增删改查以及watch等HTTP REST接⼝
Controller Manager (c-m)的作用简而言之之保证集群中各种资源的实际状态
status和⽤户定义的期望状态spec⼀致
官⽅定义kube-controller-manager 运行控制器 它们是处理集群中常规任务的后台线程
etcd 是兼具⼀致性和高可用性的键值数据库可⽤于服务发现以及配置中心
采用raft⼀致性算法基于Go语⾔实现是保存Kubernetes 所有集群 数据的后台数据库
kube-scheduler(sched) 是kubernetes 系统的核心组件之⼀主要负责整个集群 资源的调度功能
根据特定的调度算法和策略将Pod 调度到最优的工作 节点上面去
从而更加合理更加充分地利用集群的资源
Node(节点)
如图所示
控制端与节点的关系图
基本使用
创建和运行资源
创建并运行⼀个指定的镜像
kubectl run NAME --image=image [params...]
创建并运⾏⼀个指定的镜像
e.g. kubectl run nginx --image=nginx # 创建并启动⼀个Nginx实例
根据YAML配置文件或者标准输入创建资源
kubectl create RESOURCE
kubectl create -f ./file.yaml # 根据配置⽂件创建资源
kubectl create -f ./dir # 创建dir⽬录内所有配置⽂件所定义的资源
kubectl create -f URL # 从⼀个URL创建资源
例子 :
cat <<EOF | kubectl create -f -
YAML配置文件格式
apiVersion: v1
kind: Secret
metadata:
name: mySecret
type: Opaque
data:
password: $(echo "your_password" | base64)
username: $(echo "geekhour" | base64)
EOF
根据 YAML配置文件创建或更新(常用)
kubectl apply -f FILENAME
与 create 的 区别: apply 可以用作更新,create 不行
查找和参看资源
以“组/版本”的格式输出服务端支持的API版本
kubectl api-versions
查看集群中某一类资源的信息.
kubectl get RESOURCE
例子:
kubectl get po / pod # 获取Pod的信息
kubectl get no / node / nodes # 获取Node的信息
kubectl get rs / replicaset / replicasets # 获取ReplicaSet的信息
kubectl get svc / service / services. # 获取Service的信息
kubectl get deploy / deployment / deployments. # 获取Deployment的信息
显示资源的详细信息
ectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME)
修改和删除资源
更新某个资源的标签
kubectl label pods <pod-name> new-label=geekhour
例子: kubectl label pods foo status=unhealthy --resource-version=1
根据配置文件或者标准输入替换⼀个资源对象
kubectl replace -f FILENAME
例子: kubectl replace -f ./pods.json
根据配置文件 / 标准输入 / 类型 / 标签 等信息来删除资源对象
kubectl delete ([-f FILENAME] | TYPE [(NAME | -l label | --all)])
例子:
# 删除所有名字为foo和bar的pod和service
kubectl delete pod, service foo bar
# 删除所有pods
kubectl delete pod --all
# 根据配置⽂件删除所有相关对象
kubectl delete -f ./file.YAML
参考:B站up -- GeekHour