02 k8s考试基础知识(一)

这篇具有很好参考价值的文章主要介绍了02 k8s考试基础知识(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

k8s 有啥特点

  • 服务发现&负载平衡, 服务很方便的给外部用户
  • 方便回滚和故障恢复
  • 有金主爸爸们(google 红帽之类的)

架构

02 k8s考试基础知识(一),kubernetes,chrome,容器

  • master(或者叫做Control Plane) 这边4个
    • etcl 存储这个分布式集群的信息
    • apiserver 通信用的
    • controller manage 这个是apiserver的小弟,没有主意的古惑仔
    • schedule 这个是apiserver的小弟之二,负责资源的调度
  • worker 那边3个
    • kubelet 这个是apiserver的小弟之三,工具人
    • kube-proxy 这个复杂服务发现的比较重要,没有他,服务发现这个功能就寄了
    • container runtime 工具人

cka 模拟考题一

一个新的worker03节点,如何加入集群

# 1 进入master节点
ssh master
# 2 创建加入的命令
kubeadm
kubeadm token  -h 
kubeadm token  create -h 
kubeadm token  create --print-join-command
# 3 把第三个命令的输出结果记住,再到worker03节点执行
exit
ssh worker03
# 类似于下面的这个
kubeadm join 192.168.240.231:6443 --token xz51cy.bn85l1lh3xaargy8 --discovery-token-ca-cert-hash sha256:30502614fdcc0043f0cd2a4720b051f55feecdfd4db5ffee1b11250adead22b4
# 4 等5分钟
# 检验
kubectl get nodes

cka 模拟考题二

查看这个集群使用的是什么网络插件

# /etc/cni/net.d/ 这个目录下面显示啥,基本上就是啥了
ll /etc/cni/net.d/
# 05-cilium.conflist
k get po --all-namespaces | grep cilium
k get po -A | grep cilium

插一嘴 Pod QoS

pod总共有下面三种等级,这个不同的等级会在集群或者节点资源不充足的时候展现,展现的形式就是低等级的pod会最先被删除

  • Guaranteed :每个container中都设置了resources ,斌且其中的limits与requests 中包含cpu与memory的设置,并且一致
  • Burstable:至少一个container中resources中有设置,设置成啥都随便
  • BestEffort:一个container也没有设置resources
k explain ns
k explain ns.spec
# 创建实验环境
cat << eof | k apply -f - -n csdn-test
---
{ apiVersion: v1, kind: Namespace, metadata: { name: csdn-test } }
...
eof
for podd in `k get po -oname`; do k delete $podd ; done
  • cpu/memory limit == cpu/memory request Guaranteed

  • cpu/memory limits Guaranteed

  • cpu/memory request Burstable

  • cpu limits Burstable

  • memory limits Burstable

  • memory request Burstable

  • cpu request Burstable

  • BestEffort

所有container requests 啥也没设置 为 BestEffort

但凡有设置为Burstable

当所有containers中 limits 全设置 与 requests 与 limits 设置相等 则为 Guaranteed

cat << eof | k apply -f - -n csdn-test
---
apiVersion: v1
kind: Pod
metadata:
  name: p0
  namespace: csdn-test
spec:
  containers:
  - name: c1
    image: nginx
    resources:
      requests: { cpu: 200m, memory: 200Mi }
      limits: { cpu: 200m, memory: 200Mi }
---
apiVersion: v1
kind: Pod
metadata:
  name: p1
  namespace: csdn-test
spec:
  containers:
  - name: c1
    image: nginx
    resources:
      limits: { cpu: 200m, memory: 200Mi }
---
apiVersion: v1
kind: Pod
metadata:
  name: p2
  namespace: csdn-test
spec:
  containers:
  - name: c1
    image: nginx
    resources:
      requests: { cpu: 200m, memory: 200Mi }
---
apiVersion: v1
kind: Pod
metadata:
  name: p3
  namespace: csdn-test
spec:
  containers:
  - name: c1
    image: nginx
    resources:
      limits: { cpu: 100m }
...
---
apiVersion: v1
kind: Pod
metadata:
  name: p4
  namespace: csdn-test
spec:
  containers:
  - name: c1
    image: nginx
    resources:
      limits: { memory: 200Mi }
...
---
apiVersion: v1
kind: Pod
metadata:
  name: p5
  namespace: csdn-test
spec:
  containers:
  - name: c1
    image: nginx
    resources:
      requests: { cpu: 100m }
...
---
apiVersion: v1
kind: Pod
metadata:
  name: p6
  namespace: csdn-test
spec:
  containers:
  - name: c1
    image: nginx
    resources:
      requests: { memory: 200Mi }
...
---
apiVersion: v1
kind: Pod
metadata:
  name: p7
  namespace: csdn-test
spec:
  containers:
  - name: c1
    image: nginx
...
eof
len=$(k get po -oname | wc -l)
for i in `seq $len`; do
  QoS=$(k describe po/p${i} | awk  '/QoS/{print $3}')
  printf '%s\t%s\n' $i $QoS
done
# k describe po/p1 |  sed -ne 's/QoS Class\:\s*//gp'
for podd in `k get po -oname`; do
  k delete $podd & 
done
cat << eof | k apply -f - -n csdn-test
---
apiVersion: v1
kind: Pod
metadata:
  name: p1
  namespace: csdn-test
spec:
  containers:
  - name: c1
    image: nginx
    resources:
      limits: { cpu: 200m, memory: 200Mi }
  - name: c2
    image: nginx
    resources:
      limits: { cpu: 200m, memory: 200Mi }
...
---
apiVersion: v1
kind: Pod
metadata:
  name: p2
  namespace: csdn-test
spec:
  containers:
  - name: c1
    image: nginx
    resources:
      limits: { cpu: 200m, memory: 200Mi }
  - name: c2
    image: nginx
...
---
apiVersion: v1
kind: Pod
metadata:
  name: p3
  namespace: csdn-test
spec:
  containers:
  - name: c1
    image: nginx
    resources:
      limits: { cpu: 200m, memory: 200Mi }
      requests: { cpu: 200m, memory: 200Mi }
  - name: c2
    image: nginx
    resources:
      limits: { cpu: 200m, memory: 200Mi }
      requests: { cpu: 200m, memory: 200Mi }
...
---
apiVersion: v1
kind: Pod
metadata:
  name: p4
  namespace: csdn-test
spec:
  containers:
  - name: c1
    image: nginx
    resources:
      limits: { cpu: 200m, memory: 200Mi }
      requests: { cpu: 200m, memory: 200Mi }
  - name: c2
    image: nginx
...
---
apiVersion: v1
kind: Pod
metadata:
  name: p4
  namespace: csdn-test
spec:
  containers:
  - name: c1
    image: nginx
    resources:
      limits: { cpu: 200m, memory: 200Mi }
      requests: { cpu: 200m, memory: 200Mi }
  - name: c2
    image: nginx
...
eof

插一嘴 创建资源

# pod
k run po -h
# 直接运行
k run po --labels="aa=bb,bb=cc" --image=nginx --namespace=csdn-test --restart=Never  --image-pull-policy='Always' --port=80 --expose=true --command -- /bin/sh  \sleep 3600 ; 
# 编辑yaml
k run po   --labels="aa=bb,bb=cc" --image=nginx --namespace=csdn-test --restart=Never  --image-pull-policy='Always' --port=80 --expose=true --dry-run=client -oyaml 

插一嘴 静态pod

ssh master
ls /etc/kubernetes/manifests -l 

-rw-------. 1 root root 2445 12月 2 20:31 etcd.yaml
-rw------- 1 root root 3445 12月 24 00:29 kube-apiserver.yaml
-rw-------. 1 root root 2901 12月 2 20:31 kube-controller-manager.yaml
-rw-------. 1 root root 1487 12月 2 20:31 kube-scheduler.yaml

上面的这4个就是静态pod

k get po -n kube-system --no-headers
# 静态pod的名称后缀是-controle plane 主机的名称

这个路径是通过如下的方式获得的/etc/kubernetes/manifests

systemctl status kubelet
cd /usr/lib/systemd/system/kubelet.service.d
cat 10-kubeadm.conf 
cat /var/lib/kubelet/config.yaml | grep static

创建静态pod

k run sta-po   --labels="aa=bb,bb=cc" --image=nginx --namespace=csdn-test --restart=Never  --image-pull-policy='Always' --port=80  --dry-run=client -oyaml > /etc/kubernetes/manifests/aa.yml 
k get po -l "aa in (bb), bb in (cc)" -L aa,bb

NAME READY STATUS RESTARTS AGE AA BB
sta-po-huang-aa.xx 1/1 Running 0 70s bb cc文章来源地址https://www.toymoban.com/news/detail-780305.html

到了这里,关于02 k8s考试基础知识(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【DevOps基础篇之k8s】如何通过Kubernetes CKA认证考试

    推荐超级课程: Docker快速入门到精通 Kubernetes入门到大师通关课 这些是我在准备CK

    2024年03月15日
    浏览(36)
  • k8s-基础知识(Pod,Deployment,ReplicaSet)

    自动化容器部署和复制 随时扩展或收缩容器 容器分组group,并且提供容器间的负载均衡 实时监控,即时故障发现,自动替换 pod pod是容器的容器,可以包含多个container pod是k8s最小可部署单元,容器的本质是一个隔离的进程,而Pod则是一组相互联系的进程(进程组)。Pod 内的多

    2024年01月23日
    浏览(37)
  • k8s-基础知识(Service,NodePort,CusterIP,NameSpace,资源限制)

    Node Node 是 Pod 真正运行的主机,可以是物理机,也可以是虚拟机。 Annotations 原文链接 Annotations 是 key/value 形式附加于对象的注解。不同于 Labels 用于标志和选择对象,Annotations 则是用来记录一些附加信息,用来辅助应用部署、安全策略以及调度策略等。比如 deployment 使用 an

    2024年01月24日
    浏览(42)
  • Kubernets(K8S)启动和运行 01-02 Kubernetes的速度非常快

    Velocity is the key component in nearly all software development today. The software industry has evolved from shipping products as boxed CDs or DVDs to software that is delivered over the network via web-based services that are updated hourly. This changing landscape means that the difference between you and your competitors is often the speed with which yo

    2024年02月03日
    浏览(26)
  • Kubernetes(K8S)的基础概念

    用于自动部署、扩展和管理“容器化( containerized) 应用程序”的开源系统 可以理解成K8S是负责自动化运维管理多个容器化程序(比如Docker)的集群,是–个生态极其丰富的容器编排框架工具 由来: k8S由google的Borg系统(博格系统,google内部使用的大规模容器编排工具)作为原型,后

    2024年02月05日
    浏览(32)
  • 【kubernetes】认识K8S基础理论

    目录 一、k8s是什么? 二、为什么要用k8s? 三、k8s的主要功能 四、k8s的集群架构和组件 4.1k8s的集群架构介绍 4.2k8s的master的核心组件 ①kube-apiserver:作为所有服务请求的统一访问入口 ②kube-controller-manager:控制器管理器,可以通过apiserver监控整个集群的状态,确保集群处于预

    2024年03月16日
    浏览(36)
  • Kubernetes(k8s)基础入门详细教程

    Kubernetes(通常称为K8s)是一个用于自动化容器化应用程序管理的开源平台。它可以帮助您轻松地部署、扩展和管理容器化应用程序。 Pod是Kubernetes中最小的可部署单元,它是一个或多个紧密关联的容器的组合。这些容器共享相同的网络命名空间、存储资源和生命周期。Pod通常

    2024年02月12日
    浏览(28)
  • 飞天使-k8s知识点22-kubernetes实操7-ingress

    ingress 概念理解 环境准备 准备service和pod tomcat-nginx.yaml 创建ingress-http.yaml 验证效果 https 代理 创建证书 创建ingress-https.yaml 效果 查看映射到公网端口 参考文档: https://znunwm.top/archives/121212#7.4-ingress%E4%BB%8B%E7%BB%8D

    2024年02月22日
    浏览(32)
  • 飞天使-k8s知识点21-kubernetes实操6-daemonset

    daemonset service endpoint pod 之间的关系 service 基于Service访问外部服务

    2024年02月22日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包