CKA考后总结

这篇用来记录下自己备考CKA考试的这段时间的学习感悟以及提升。虽然考试不难,最后也是95分通过了。但是在备考的过程中还是学到不少的东西,所以用这篇文章来记录一下。

通过前面学习,也逐渐的领悟了 K8s 的设计哲学。当然这里只是自己的理解

它是一个按照Linux “一切皆文件”设计的宏观系统。实现了”一切皆资源“

基础通识

考试内容

考试涉及的知识大抵下面的这些:

  1. 关于service,ingress。你要设立service,然后创建ingress。
  2. 关于pv,pvc
  3. 关于service account,cluster role,rolebinding
  4. 关于nodehealth,troubleshoot
  5. kubeadm升级
  6. etcd backup/restore。
  7. deoloyment,pod
  8. multi container pod
  9. pod中container的log搜索。

技巧

# 用来切换 kube环境
kubectl config use-context xxx 
# 获取标签
kubectl get ns --show-labesls
kubectl get pod,sve -o wide
# 来创建对应的服务。
ubectl expose pod curl --port=80 --target-port=8000
Short name Full name
sts statefulSet
cm configmaps
ds daemonsets
deploy deployments
ep endpoints
ev events
hpa horizontalpodautoscalers
ing ingresses
limits limitranges
ns namespaces
no nodes
pvc persistentvolumeclaims
pv persistentvolumes
po pods
rs replicasets
rc replicationcontrollers
quota resourcequotas
sa serviceaccounts
svc services

使用 kubectl top 的时候的需要安装 Kubernetes Metrics Server,使用yam 文件来进行一键安装

https://github.com/kubernetes-sigs/metrics-server

K8s 的所有的操作都是通过API来进行的,理解了API 就相当于理解了资源。

在使用K8s 的资源的时候,这里文档是 资源API 很好的查证的地方。

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#jobspec-v1-batch

Pod 内部的 Infra 容器或者是 pause 容器狠小大概在几百K。是用来创建一个Network Namespace。这样容器都可以在同一个网络的命名空间下,另外对于文件系统的共享,是在Pod顶层生命了一个Volume在,在容器中进行挂载声明即可。

RBAC

RBAC API 声明了四种 Kubernetes 对象:RoleClusterRoleRoleBindingClusterRoleBinding。你可以像使用其他 Kubernetes 对象一样,通过类似 kubectl 这类工具描述对象, 或修补对象。

role 是由命名空间的,但是clusterrole是全局的。

如果你希望在名字空间内定义角色,应该使用 Role; 如果你希望定义集群范围的角色,应该使用 ClusterRole。

clusterrole 和 rolebinding 以及 clusterrolebinding

service-account

一个 RoleBinding 可以引用同一的名字空间中的任何 Role。 或者,一个 RoleBinding 可以引用某 ClusterRole 并将该 ClusterRole 绑定到 RoleBinding 所在的名字空间。 如果你希望将某 ClusterRole 绑定到集群中所有名字空间,你要使用 ClusterRoleBinding。

Service account是为了方便Pod里面的进程调用Kubernetes API或其他外部服务而设计的。它与User account不同

RBAC 授权

service

Ingress

ingress 考察

deploy

deploy 考察

副本集缩放。


POD

POD 调度

使用node 的label来实现

在pod 的nodeselector 上指定需要进行部署的标签。

  • label(标签):node上打了标签,在yaml文件里使用nodeSelector来选择标签,pod只会部署在有该标签的node上。
  • taint(污点):node上打了污点,在yaml文件里没有容忍(toleration)该污点的pod是不能部署到该node上的。
  • Affinity(亲和力):当相互依赖的两个pod尽量或必须部署到同一个节点或同一区域(亲和力);当同一个应用的不同pod副本或同一项目的应用尽量或必须部署到不同的node上或不同区域(反亲和力)

给node添加标签:kubectl label nodes nodename(eg:k8s-node01) label_key=label_value(eg:ssd=true)

查看所有node上有哪些标签:kubectl get nodes –show-labels

查看某个node上有哪些标签:kubectl get nodes nodename(eg:k8s-node01) –show-labels

删除node上的标签:kubectl label nodes nodename(eg:k8s-node01) label_key-(ssd-)

修改node上的标签:kubectl label nodes nodename(eg:k8s-node01) label_key=label_value(eg:mem=true) –overwrite

POD yaml格式

PV

PV的创建 ,PVC 的创建以及挂载。以及动态的容量调整/

Sidecar

kubectl get pod xxx -o yaml > back.yaml

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注