容器和云原生(三):kubernetes搭建与使用

       

目录

单机K8S

docker

containerd

image依赖

kubeadm初始化

验证

crictl工具

K8S核心组件


上文安装单机docker是很简单docker,但是生产环境需要多个主机,主机上启动多个docker容器,相同容器会绑定形成1个服务service,微服务场景中多个service会互相调用,那么就需要保证多个service服务的编排、高可用、负载均衡,docker提供了自己的解决方案:docker-compose + docker-swarm,也可以不用docker提供的解决方案,自己通过Nginx+服务网关+HaProxy实现。

        但是基本上所有线上生产环境都是用K8S来服务治理,这也被认为是标准答案,K8S从V1.24版本不支持docker而是contained做为默认容器管理,contained实际上是轻量化的docker,本次搭建k8s+containerd的集群,因此k8s多节点集群相对繁琐且有资源要求,本次单机搭建。

单机K8S

        2022年k8s的1.24版本正式剔除dockershim,不再支持让docker去调用containerd,而是直接操作containerd,先安装containerd来替换CRI接口调用,本次使用最新版本v1.28.0;

 

docker

安装docker用于后续依赖 image拉取;

containerd

# 下载 containerd
wget https://github.com/containerd/containerd/releases/download/v1.6.19/containerd-1.6.19-linux-amd64.tar.gz
# 下载contained服务
wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service -o /usr/lib/systemd/system/containerd.service
# 启动服务
systemctl daemon-reload && systemctl enable containerd
# 配置文件
mkdir /etc/containerd
containerd config default > /etc/containerd/config.toml
# 需要镜像地址为国内的
vi /etc/containerd/config.toml
将 sandbox_image = "registry.k8s.io/pause:3.6"
修改为 sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6"
# 配置镜像加速器,在 [plugins."io.containerd.grpc.v1.cri".registry.mirrors] 后面增加两行配置,注意缩进
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
    endpoint = ["http://mirrors.ustc.edu.cn"]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors."*"]
    endpoint = ["http://hub-mirror.c.163.com"]
# 启动服务
systemctl restart containerd

image依赖

kubeadm:用来初始化集群的指令,kubelet在集群中的每个节点上用来启动 Pod 和容器等,kubectl:用来与集群通信的命令行工具,步骤中的docker image安装可以不用;

# 关闭selinux
setenforce 0
# 增加yum源
vi /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
 http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
# yum 安装
yum makecache all
yum install -y kubelet kubeadm kubectl
# 启动kubelet
systemctl enable kubelet && systemctl start kubelet
# docker依赖安装(可选)
vi install.sh
#!/bin/bash
images=(
    kube-apiserver:v1.28.0
    kube-controller-manager:v1.13.2
    kube-scheduler:v1.28.0
    kube-proxy:v1.28.0
    pause:3.6
    etcd:3.2.24
    coredns:1.2.6
)
for imageName in ${images[@]} ; do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName} k8s.gcr.io/${imageName}
    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
done
# 运行install.sh(可选)
sh -x install.sh
# 查看镜像(可选)
docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/kube-apiserver            v1.28.0             bb5e0dde9054        2 days ago          126 MB
k8s.gcr.io/kube-controller-manager   v1.28.0             4be79c38a4ba        2 days ago          122 MB
k8s.gcr.io/kube-scheduler            v1.28.0             f6f496300a2a        2 days ago          60.1 MB
k8s.gcr.io/kube-proxy                v1.28.0             ea1030da44aa        2 days ago          73.1 MB
docker.io/becivells/soar-web         latest              93daf9d511a1        11 months ago       134 MB
k8s.gcr.io/coredns                   1.2.6               f59dcacceff4        4 years ago         40 MB
k8s.gcr.io/etcd                      3.2.24              3cab8e1b9802        4 years ago         220 MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        5 years ago         742 kB

# 网络
vi /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

kubeadm初始化

# 使用root启动设置环境变量
export KUBECONFIG=/etc/kubernetes/admin.conf
# 初始化
kubeadm init --apiserver-advertise-address=10.121.198.235 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.28.0   --service-cidr=172.96.0.0/12 --pod-network-cidr=10.244.0.0/16

验证

# 查看集群信息
kubectl cluster-info
Kubernetes control plane is running at https://10.121.198.235:6443
CoreDNS is running at https://10.121.198.235:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

# 查看pod信息
get pod -n kube-system
NAME                                            READY   STATUS    RESTARTS   AGE
coredns-66f779496c-d4rk9                        1/1     Running   0          71m
coredns-66f779496c-fvmzn                        1/1     Running   0          71m
etcd-localhost.localdomain                      1/1     Running   0          71m
kube-apiserver-localhost.localdomain            1/1     Running   0          71m
kube-controller-manager-localhost.localdomain   1/1     Running   0          71m
kube-proxy-tr75q                                1/1     Running   0          71m
kube-scheduler-localhost.localdomain            1/1     Running   0          71m

crictl工具

# 安装 containerd 的 cli 管理工具(此步骤是非必选项)
# 官方文档https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md
# 下载解压
wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.26.0/crictl-v1.26.0-linux-amd64.tar.gz
tar zxvf crictl-v1.26.0-linux-amd64.tar.gz -C /usr/local/bin
# 创建配置文件,运行 crictl config 命令可获取参数说明
cat <<EOF | sudo tee /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 2
debug: false
pull-image-on-create: false
disable-pull-on-run: false
EOF
# 测试
crictl pods
POD ID              CREATED             STATE               NAME                                            NAMESPACE           ATTEMPT             RUNTIME
c9f1f5a8e5f3b       About an hour ago   Ready               coredns-66f779496c-fvmzn                        kube-system         0                   (default)
92acc7d225059       About an hour ago   Ready               coredns-66f779496c-d4rk9                        kube-system         0                   (default)
2fdff0229921a       About an hour ago   Ready               kube-proxy-tr75q                                kube-system         0                   (default)
8cad99418e8dd       About an hour ago   Ready               kube-apiserver-localhost.localdomain            kube-system         0                   (default)
2f366285dbe4e       About an hour ago   Ready               kube-controller-manager-localhost.localdomain   kube-system         0                   (default)
ab2fb7aa95e40       About an hour ago   Ready               kube-scheduler-localhost.localdomain            kube-system         0                   (default)
c25f77697cc84       About an hour ago   Ready               etcd-localhost.localdomain                      kube-system         0                   (default)

K8S核心组件

待续

参考:搭建containerd+k8s集群-v1.26

参考:安装docker依赖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/86506.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Scikit-learn强化学习代码批注及相关练习

一、游戏介绍 木棒每保持平衡1个时间步&#xff0c;就得到1分。每一场游戏的最高得分为200分每一场游戏的结束条件为木棒倾斜角度大于41.8或者已经达到200分。最终获胜条件为最近100场游戏的平均得分高于195。代码中env.step&#xff08;&#xff09;&#xff0c;的返回值就分…

Log4j反序列化命令执行漏洞(CVE-2017-5645)Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)

一.Log4j反序列化命令执行漏洞(CVE-2017-5645&#xff09; Apache Log4j是一个用于Java的日志记录库&#xff0c;其支持启动远程日志服务器。Apache Log4j 2.8.2之前的2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码 环境&#xff1a;vulhub 工具下载地址&#xff1…

Android创建签名文件,并获取签名文件MD5,SHA1,SHA256值

一、创建Android签名文件 使用Android Studio开发工具&#xff0c;可视化窗口进行创建 第一步&#xff1a;点击AndroidStudio导航栏上的 Build→Generate Signed Bundle / APK 第二步&#xff1a;选择APK选项 第三步&#xff1a;创建签名文件 第四步&#xff1a;输入创建签名的…

如何撰写骨灰级博士论文?这是史上最全博士论文指导!

博士论文的写作是博士研究生主要要完成的工作。由于存在着较高的难度&#xff0c;较长的写作周期&#xff0c;以及在创新&#xff0c;写作规范&#xff0c;实际及理论意义等方面有着比较高的要求&#xff0c;博士论文的完成一般说来是有相当难度的。一篇好的博士论文不仅是一本…

GEE-PIE遥感大数据处理技术

随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近年来遥感技术突飞猛进。由此&#xff0c;遥感数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量也大幅增长&#xff0c;使其越来越具有大数据特征。对于相关研究而言&#xff0c;遥感大数据的出现为其提…

[oneAPI] 使用Bert进行中文文本分类

[oneAPI] 使用Bert进行中文文本分类 Intel Optimization for PyTorch基于BERT的文本分类模型数据预处理数据集定义tokenize建立词表转换为Token序列padding处理与mask 模型 结果OneAPI参考资料 比赛&#xff1a;https://marketing.csdn.net/p/f3e44fbfe46c465f4d9d6c23e38e0517…

el-table根据容器大小自适应滚动条-修改滚动条样式

需求&#xff1a;父容器里有多个容器为上下级&#xff0c;之后浏览器在缩放的时候&#xff0c;上面容器高度改变了&#xff0c;所以el-table被挤压&#xff0c;如果el-table设置的是固定的高度&#xff0c;那么挤压后内容超出父容器&#xff0c;本文章就是解决这个问题 不自适…

2023年7月京东净水器行业品牌销售排行榜(京东数据分析软件)

伴随消费升级及健康生活理念的流行&#xff0c;消费者对饮水健康的关注度也逐步提高。加之经净水器处理的水在安全性、便捷性等方面的优势得到认可&#xff0c;净水器这一电器的市场占比也不断提高。在家电行业整体低迷的环境下&#xff0c;净水器的销量销额仍保持正向增长。 …

阿里云2核4G服务器配置汇总表_轻量和ECS

阿里云2核4G服务器配置价格表&#xff0c;297元一年&#xff0c;配置为轻量应用服务器2核4G、4M带宽、60GB高效云盘&#xff0c;折合24元一个月。 目录 2核4G服务器轻量&#xff1a; 2核4G服务器ECS 关于轻量和ECS的区别&#xff1a; 2核4G服务器轻量&#xff1a; 云服务器…

Docker碎碎念

docker和虚拟机的区别 虚拟机&#xff08;VM&#xff09;是通过在物理硬件上运行一个完整的操作系统来实现的。 每个虚拟机都有自己的内核、设备驱动程序和用户空间&#xff0c;它们是相互独立且完全隔离的。 虚拟机可以在不同的物理服务器之间迁移&#xff0c;因为它们是以整…

快速提高写作生产力——使用PicGo+Github搭建免费图床,并结合Typora

文章目录 简述PicGo下载PicGo获取Token配置PicGo结合Typora总结 简述PicGo PicGo: 一个用于快速上传图片并获取图片 URL 链接的工具 PicGo 本体支持如下图床&#xff1a; 七牛图床 v1.0腾讯云 COS v4\v5 版本 v1.1 & v1.5.0又拍云 v1.2.0GitHub v1.5.0SM.MS V2 v2.3.0-b…

漏洞挖掘和安全审计的技巧与策略

文章目录 漏洞挖掘&#xff1a;发现隐藏的弱点1. 源代码审计&#xff1a;2. 黑盒测试&#xff1a;3. 静态分析工具&#xff1a; 安全审计&#xff1a;系统的全面评估1. 渗透测试&#xff1a;2. 代码审计&#xff1a;3. 安全策略审查&#xff1a; 代码示例&#xff1a;SQL注入漏…

TCP编程流程(补充)

目录 1、listen&#xff1a; 2、listen、tcp三次握手 3、 发送缓冲区和接收缓冲区&#xff1a; 4、tcp编程启用多线程 1、listen&#xff1a; 执行listen会创建一个监听队列 listen(sockfd,5) 2、listen、tcp三次握手 三次握手 3、 发送缓冲区和接收缓冲区&#xff1a;…

Spring事务和事务传播机制(2)

前言&#x1f36d; ❤️❤️❤️SSM专栏更新中&#xff0c;各位大佬觉得写得不错&#xff0c;支持一下&#xff0c;感谢了&#xff01;❤️❤️❤️ Spring Spring MVC MyBatis_冷兮雪的博客-CSDN博客 在Spring框架中&#xff0c;事务管理是一种用于维护数据库操作的一致性和…

Gitlab 安装全流程

Version&#xff1a;gitlab-ce:16.2.4-ce.0 简介 Gitlab 是一个开源的 Git 代码仓库系统&#xff0c;可以实现自托管的 Github 项目&#xff0c;即用于构建私有的代码托管平台和项目管理系统。系统基于 Ruby on Rails 开发&#xff0c;速度快、安全稳定。它拥有与 Github 类似…

Java算法_ BST 中第 k 个最小元素 (LeetCode_Hot100)

题目描述&#xff1a;给定一个二叉搜索树的根节点 &#xff0c;和一个整数 &#xff0c;请你设计一个算法查找其中第 个最小元素&#xff08;从 1 开始计数&#xff09;。 获得更多&#xff1f;算法思路:代码文档&#xff0c;算法解析的私得。 运行效果 完整代码 /*** 2 * Aut…

Linux学习记录——이십오 多线程(2)

文章目录 1、理解原生线程库线程局部存储 2、互斥1、并发代码&#xff08;抢票&#xff09;2、锁3、互斥锁的实现原理 3、线程封装1、线程本体2、封装锁 4、线程安全5、死锁6、线程同步1、条件变量1、接口2、demo代码 1、理解原生线程库 线程库在物理内存中存在&#xff0c;也…

Redis 数据库 NoSQL

目录 一、NoSQL 二、为什么会出现NoSQL技术 三、NoSQL的类别 键值&#xff08;Key-Value&#xff09;存储数据库 列存储数据库 文档型数据库 图形&#xff08;Graph&#xff09;数据库 四、NoSQL适应场景 五、在分布式数据库中CAP原理 1、CAP 2、BASE 一、NoSQL NoS…

低代码开发平台能开发什么类型的系统和软件?

低代码开发平台能开发什么类型的系统和软件&#xff1f; 1、数据分析和报告系统&#xff1a; 使用低代码平台&#xff0c;企业可以创建数据看板&#xff0c;集成不同数据源&#xff0c;自动提取、分析和可视化数据。这种系统适用于监控业务指标、分析趋势&#xff0c;并为决策…

多个微信号怎么快速发圈、自动加好友、自动回复?

一键助你快速发圈、批量自动加好友、自动回复&#xff0c;好用哭了&#xff01; 微信管理系统是一个聚合管理多个微信账号的利器&#xff0c;让你的微信管理变得简单高效。不管你是电商、微商&#xff0c;还是拥有多个微信号的用户&#xff0c;这一款微信管理软件都可以满足你的…