k8s架构图

在这里插入图片描述

master:
apiserver: 所有访问的入口
replication controller: 将资源当前状态转为期望状态
scheduler: 调度任务到合适的节点
etcd:存储有用的持久化信息
worker:
kebelet: 直接和容器引擎交互实现容器生命周期的管理
kube proxy: 负责写入iptables实现服务映射访问
coredns:为svc ip和域名的创建对应解析

资源创建过程

用户通过kubectl命令发起请求,通过RBAC权限认证。
认证通过后向apiserver发出指令,将yaml中的pod信息存到etcd。
Controller-Manager通过apiserver的watch接口发现了pod信息的更新,执行该资源所依赖的拓扑结构整合,整合后将对应的信息交给apiserver,apiserver写到etcd。
Scheduler同样通过apiserver的watch接口更新到pod可以被调度,通过算法给pod分配节点,并将pod和对应节点绑定的信息交给apiserver,apiserver写到etcd。
kubelet从apiserver获取需要创建的pod信息,调用CNI接口给pod创建pod网络,调用CRI接口去启动容器,调用CSI进行存储卷的挂载。
网络,容器,存储创建完成后pod创建完成,等业务进程启动后,pod运行成功

k8s集群中的资源

在这里插入图片描述
在这里插入图片描述
不同pod间访问
..svc.cluster.local

常见命令

k8s中的资源单位:
cpu : k8s的1000 = cpu的一个核
1MI = 1024*1024 字节

drain 移除同时驱逐 cordon 不可调度 uncordon 可调度
kubectl cordon nodename
kubectl drain nodename
kubectl uncordon nodename
NoSchedule : 一定不被调度 但是不会驱逐已有的
PreferNoSchedule : 尽量不被调度
NoExecute : 不会调度,并且还会驱逐Node已有Pod

kubectl delete pods httpd-app-6df58645c6-cxgcm --grace-period=0 --force 强制删除
kubectl api-version 查看api版本
kubectl explain pod或pod.apiversion 查看pod下面的模板
kubectl top pod -n uat-as-bond-market-data 查看一个namespace下pod 的资源使用率
kubectl top node 查看服务器的所有资源占用
kubectl scale deployment/nginx --replicas=3 -n test 改变副本数
kubectl rollout status deployment/deployment-nginx -n test 查看更新状态
kubectl set image deployment/deployment-nginx deployment-nginx=10.157.4.124:8989/own-test/nginx:v2 --record=true 通过container名字更新镜像,并在历史版本中能看到命令
kubectl edit deployment/deployment-nginx -n test 回滚到上一个版本
kubectl rollout history deployment/deployment-nginx -n test 查看所有的历史版本
kubectl rollout undo deployment/deployment-nginx -n test --to-revision=7 回滚到特定的版本
kubectl explain deployment/svc/ingress --recursive 查看文件是怎么个写法

kubectl label no hgh-sit-bs-k8s-005 kubernetes.io/role=worker 打标签
kubectl get nodes --show-labels 查看标签

./gomplate -d config=./test.yaml -f ./deploy.tpl -o ./test-result.yaml

https://blog.51cto.com/happylab/2499082 引用其博文部署k8s-dashboad

k8s使用storage class pvc一直pending状态不能动态创建pv时可以关注下nfs-client-provider的日志,如果selflink was empty,can’t make refer 且kubernetes版本实在k8s1.16以后的,可以在kube-api下面添加额外的参数
kube-api:
extra_args:
feature-gates: ‘RemoveSelfLink=false’

https://k8syaml.com/ k8s相关文件模板可以查看

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐