k8s1.26安装和组件原理
一、k8s1.26环境准备
k-master 192.168.50.100
k-node1 192.168.50.101
k-node2 192.168.50.102
安装docker 默认会安装containerd
config.toml里面需要配置
先要安装k8s才会有crictl命令
安装calico网络插件
v3.25
下载2个文件
修改自定义的文件,改为pod的dir网段才行
kubeadm init --apiserver-advertise-address=192.168.200.10 --kubernetes-version=v1.23.0 --service-cidr=10.96.0.0/16 --pod-network-cidr=10.244.0.0/16 --image-repository=registry.aliyuncs.com/google_containers
1、前置工作
1、关掉防火墙和selinux
systemctl disable firewalld.service --now
setenforce 0
vim /etc/selinux/config
2、关闭swap交换分区
swapoff -a
3、打开linux内核工具
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
sysctl -p /etc/sysctl.d/k8s.conf
2、重要工作
1、配置docker源和kubernetes源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
2、安装docker-ce
yum -y install docker-ce
systemctl enable docker --now
3、修改config.toml文件
containerd config default > /etc/containerd/config.toml
vim config.toml
SystemdCgroup = true
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
# 配置拉取镜像策略
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"] # 拉取registry.k8s.io镜像从下面网站拉取
endpoint = ["https://registry-k8s-io.mirrors.sjtug.sjtu.edu.cn"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"] # 拉取docker.io镜像也是这样的
endpoint = ["https://自己网站"]
systemctl restart containerd
systemctl enable containerd
4、安装kubelet,kubeadm,kubectl
yum -y install kubelet-1.26.0 kubeadm-1.26.0 kubectl-1.26.0
# 启动kubelet
systemctl enable kubelet --now
5、设置容器运行时
crictl config runtime-endpoint unix:///var/run/containerd/containerd.sock
crictl config image-endpoint unix:///var/run/containerd/containerd.sock
3、只在master上面做
1、kubernetes初始化
kubeadm init --apiserver-advertise-address=192.168.50.100 \
--kubernetes-version=v1.26.0 \
--pod-network-cidr=10.244.0.0/16 \
--image-repository=registry.aliyuncs.com/google_containers
--image-repository 拉取控制平面镜像的仓库,etcd,api-server等等
--apiserver-advertise-address master的地址
--pod-network-cid pod的网段
2、加入node节点
- node1,node2上面需要执行
[root@k-node1 ~]# kubeadm join 192.168.50.100:6443 --token q6tybk.47n9q7zymfpxeufi --discovery-token-ca-cert-hash sha256:d949c3809ba2f36425000119f9e7c7e29f3715aebd568b91eb8af309a86de09a
[preflight] Running pre-flight checks
[WARNING FileExisting-tc]: tc not found in system path
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
[root@k-node2 containerd]# kubeadm join 192.168.50.100:6443 --token q6tybk.47n9q7zymfpxeufi --discovery-token-ca-cert-hash sha256:d949c3809ba2f36425000119f9e7c7e29f3715aebd568b91eb8af309a86de09a
3、安装calico网络插件
下载calico网络插件yaml文件
安装的版本是v3.25.2
https://archive-os-3-25.netlify.app/calico/3.25/getting-started/kubernetes/quickstart
下载2个yaml文件
# 直接进行应用
kubectl create -f tigera-operator.yaml
# 修改ip地址即可,为pod的网段地址即可
kubectl create -f custom-resources.yaml
4、查看node状态和创建pod测试网络
[root@k-master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k-master Ready control-plane 69m v1.26.0
k-node1 Ready <none> 68m v1.26.0
k-node2 Ready <none> 67m v1.26.0
[root@k-master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
centos8-demo 1/1 Running 0 14m
[root@k-master ~]# kubectl exec -ti centos8-demo -- /bin/bash
[root@centos8-demo /]# ping qq.com
PING qq.com (113.108.81.189) 56(84) bytes of data.
64 bytes from 113.108.81.189 (113.108.81.189): icmp_seq=1 ttl=127 time=44.10 ms
5、补全功能
echo 'source <(kubectl completion bash)' /root/.bashrc
二、kubernets组件
1、api-server
接收外部请求的组件
集群的唯一入口,都需要通过这个来进行通信
2、客户端kubectl
命令行工具
执行命令后会被api-server捕捉到
3、sceduler组件
- 负责pod调度到哪一个node上面,资源调度
4、ectd组件
键值对数据库
分布式存储数据的
存储集群所有状态信息
5、controller-manager组件
- 管理各种控制器
6、kubelet组件
每一个节点上面都有这个组件
负责pod的创建,等等操作
周期性的获取pod信息,返回给api-server
健康检查等等
7、kube-proxy组件
网络组件
实现pod之间的通信,pod和外部之间的通信
通过这个组件创建svc,从而实现了外部访问pod通信
三、kubernetes资源
1、pod
- 一个pod可以有一个容器或者多个容器
k8s1.26安装和组件原理的更多相关文章
- Installshield自动安装IIS组件
原文:Installshield自动安装IIS组件 一. 工程类型:IS2010 installscript 二.原理: 1. XP和 Server2003系统:由于系统默认没有自带IIS组件,一般情 ...
- Linux安装ftp组件过程
1 安装vsftpd组件 安装完后,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件. [root@bogon ~]# yum -y install vsftpd 2 ...
- linux安装ftp组件
1 安装vsftpd组件 linux系统安装完后,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件. [root@bogon ~]# yum -y install v ...
- android应用程序的安装方式与原理
android应用程序的安装方式与原理 四种安装方式: 1.系统应用安装――开机时完成,没有安装界面 2.网络下载应用安装――通过market应用完成,没有安装界面 3.ADB工具安装――没有安装界面 ...
- SqlServer 由于未在SqlServer的此实例上安装复制组件解决方法
sqlserver2005在复制订阅时出现: “由于未在SqlServer的此实例上安装复制组件,Microsoft SQL server 无法访问这些组件,请参阅SQL Server……” 解决方法 ...
- Windows Xp Home Edition 安装IIS组件
问题描述: 在虚拟机(操作系统是Windows Xp Home Edition)中安装Sql Server 2005的时候警告缺少IIS相关组件,控制面板"添加/删除组件"中也没有 ...
- 制作PHP安装程序的原理和步骤56
制作PHP安装程序的原理和步骤56 1.制作PHP安装程序的原理和步骤检查目录或文件的权限----修改或填加配置文件---检查配置文件正 确性---导入数据库----锁定或删除安装文件 原理: 其实P ...
- PHP网站安装程序的原理及代码
原文:PHP网站安装程序的原理及代码 原理: 其实PHP程序的安装原理无非就是将数据库结构和内容导入到相应的数据库中,从这个过程中重新配置连接数据库的参数和文件,为了保证不被别人恶意使用安装文件,当安 ...
- Linux下的暴力密码在线破解工具Hydra安装及其组件安装-使用
Linux下的暴力密码在线破解工具Hydra安装及其组件安装-使用 hydra可以破解: http://www.thc.org/thc-hydra,可支持AFP, Cisco AAA, Cisco a ...
- CentOS安装Ruby组件
ruby安装#安装ruby组件yum install ruby ruby-irb ruby-devel rubygems rpm-build -y#安装Apache服务器yum install htt ...
随机推荐
- Python 潮流周刊#99:如何在生产环境中运行 Python?(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- Linux操作系统(下)
哈喽啊,大家好~前面已经有两篇关于Linux操作系统的分享了,这篇将会是关于Linux操作系统基础的最后一篇分享,毕竟对做网安这方面来说这真的很重要啊,接下来就是我要分享的内容了,让我们一起往下看吧. ...
- 探索 Rust:从基础语法到实用概念
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- .NET 10 Preview 4中ASP.NET Core 改进
.NET团队在5月13日发布了.NET 10 Preview 4: https://devblogs.microsoft.com/dotnet/dotnet-10-preview-4/.该版本虽无突破 ...
- 编译原理:python编译器--从AST到字节码
首先了解下从AST到生成字节码的整个过程: 编译过程 Python编译器把词法分析和语法分析叫做 "解析(Parse)", 并且放在Parser目录下. 从AST到生成 字节码的过 ...
- codeup之 查找学生信息
Description 输入N个学生的信息,然后进行查询. Input 输入的第一行为N,即学生的个数(N<=1000) 接下来的N行包括N个学生的信息,信息格式如下: 01 李江 男 21 0 ...
- Jackson反序列化抛异常:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field的解决方法
目录 需求背景 问题分析 问题解决 使用注解@JsonIgnoreProperties ObjectMapper对象配置FAIL_ON_UNKNOWN_PROPERTIES 需求背景 第三方服务返 ...
- Prompt 生产及提示词案例(含完整提示词)
场景一:格式文本提取提示词 # 角色 Role - 你是一个高度精确的文本提取代理. # 背景 Background - 你将接收到两段不同的文本: 1. 一份**按序号排列的列表**,详细说明了需要 ...
- 题解:P1032 [NOIP 2002 提高组] 字串变换
题目链接:link. 为了高效地解决这道题目,我们考虑使用双向搜索解决. 我们从 \(A\) 和 \(B\) 同时开始搜索,要是中间有相遇,那么就说明 \(A\) 能变成 \(B\) 这样我们就结束搜 ...
- Maven 打包时,提示 java: 程序包com.sun.xml.internal.ws.fault 不存在 和 javax.crypto 不存在
报错原因: Maven 打包时,不会导入 JDK 内部的依赖( JDK 属于部署的环境,不属于外部的三方依赖: 解决办法: 在pom.xml 文件中,添加如下 plugin 插件: <plugi ...