我是靠谱客的博主 谨慎紫菜,最近开发中收集的这篇文章主要介绍kubernetes基础,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、kubernetes快速入门

1.1、kubernetes的核心概念

Label:标签

  • k8s很多的组件都可以打标签,起到一个标识作用
  • POD、Deployment等都可以打标签

POD的特性

项目里关系很紧密的容器可以放在同一个POD里。

  • 可以有多个容器,里面的所有容器都是运行在同一台机器上
  • 里面的容器共享网络,有一个唯一的IP
  • 有一个Pause容器(有特定的镜像)作为根容器,把其他的容器都link关联起来(类似于docker-compose),负责所有容器的健康检查,然后汇报给k8s

ReplicaSet(RS):副本集

  • 同一个应用下,可以有多个POD
  • 确保同一个应用的POD数,如有一个异常退出,则在另一台机器上再调度起一个

Deployment:部署

一般更新应用,就是更新Deployment。当应用更新时,Deployment会新创建一个副本集,先滚动创建一个新版本的POD,新副本集会先启动这个新创建的POD实例,新的PDB实例启动通过健康检查后,再控制旧的副本集停掉一个POD并且删除,以这种方式持续的进行自动的滚动更新。

Service:服务

Service通过Selector选择标签,使用ClusterIP对外提供服务。

请添加图片描述

1.2、kubernetes的架构设计

  • ETCD:存储组件,保存了整个集群的状态
  • ApiServer:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
  • Scheduler:负责资源的调度,按照预定的调度策略(预选或者优选策略)将POD调度到相应的机器上
  • Controller Manager:集群控制中心,负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
  • Kubelet:负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理
  • Container runtime:负责镜像管理以及POD和容器的真正运行(CRI)
  • kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡

在这里插入图片描述

1.3、kubernetes认证的密码学原理

RAS加密与解密:https://www.cnblogs.com/metabolism/p/11897198.html

非对称加密的核心点:自己公钥加密的数据只有自己的私钥能够解开。

非对称加密算法实现机密信息交换的基本过程是:

甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。

SSL/TLS 也不完美,漏洞在于: B向A发送公钥的时候被C截获,他篡改成自己的公钥,A发送对称加密秘钥被C截获,用C自己的私钥解密,就知道他们以后通信的秘钥啦。
目前的解决方案: CA(证书认证机构)。A拿到公钥的时候去CA查证是否为合法公钥

1.4、kubernetes的认证与授权

使用Kubernetes命令行工具kubectl在Kubernetes上部署和管理应用程序。使用kubectl,可以检查集群资源; 创建,删除和更新组件。

三种认证方式
请添加图片描述

RBAC授权:基于角色的访问控制

在这里插入图片描述
准入控制

在这里插入图片描述

1.5、集群搭建方案选择

在这里插入图片描述

二、容器运行时

官方网站:https://containerd.io/

2.1、Docker or Containerd如何选择

继续使用Docker

  • 未来面临无法升级k8s版本
  • 没有增加学习成本

切换到Containerd

  • 命令不一样,有一定学习成本
  • 展示的字段格式略有不同
  • 更简单、更稳定、更高效

2.2、Containerd全面上手实践

2.2.1、整体架构

在这里插入图片描述

2.2.2、安装

github地址:https://github.com/containerd/containerd/tags

在这里插入图片描述
1.5.5版本下载链接,wget下载速度挺慢的,建议本地用迅雷下载好,进行上传。

https://github.com/containerd/containerd/releases/download/v1.5.5/cri-containerd-cni-1.5.5-linux-amd64.tar.gz

安装步骤

1、解压缩:tar -xvf cri-containerd-cni-1.5.5-linux-amd64.tar.gz

2、删除不需要的文件:rm -rf opt && rm -rf ./etc/cni

3、拷贝目录到根目录:cp -r usr/ / && cp -r etc/ /

4、生成默认的配置文件写到读取的位置:containerd config default > /etc/containerd/config.toml

5、修改config.toml配置文件:`oom_score = -99,可以降低内存不足时被系统杀掉的可能性

6、服务开机自启动:systemctl enable containerd

7、重启containerd:systemctl restart containerd

8、查看containerd的状态:systemctl status containerd

2.2.3、镜像管理、容器管理

需要注意的是,docker和containerd的镜像是通用的。

1、查看所有命令:ctr -h

2、拉取镜像,需要指定具体的下载地址:ctr image pull docker.io/library/redis:alpine

3、启动redis镜像,需要指定全名:ctr run -t -d docker.io/library/redis:alpine redis

4、查看启动的redis容器:ctr container ls

5、查看启动的redis进程id:ctr task ls

6、杀掉redis进程:ctr task kill redis

7、移除redis任务:ctr task rm redis

8、删除容器:ctr container rm redis

9、查看docker命令空间的运行时的任务:ctr -n moby t ls,containerd的命名空间为default

10、查看命名空间:ctr ns ls

2.2.4、常用命令实践

kubernetes操作镜像和容器的命令,使用crictl。

查看所有指令:crictl -h

在这里插入图片描述

最后

以上就是谨慎紫菜为你收集整理的kubernetes基础的全部内容,希望文章能够帮你解决kubernetes基础所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部