Bootstrap

K8s的基本使用和认识

目录

介绍

控制端

 Node(节点)

控制端与节点的关系图

基本使用 

创建和运行资源

查找和参看资源

修改和删除资源 


介绍

控制端

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

;