k8s系列文章二:集群配置

news2024/12/23 18:25:05

一、关闭交换分区

# 临时关闭分区
swapoff -a
# 永久\关闭自动挂载swap分区
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

二、修改cgroup管理器

ubuntu 系统,debian 系统,centos7 系统,都是使用 systemd 初始化系统的。systemd 这边已经有一套 cgroup 管理器了,如果容器运行时和 kubelet 使用 cgroupfs,此时就会存在 cgroups 和 systemd 两种 cgroup 管理器。也就意味着操作系统里面存在两种资源分配的视图,当操作系统上存在 CPU,内存等等资源不足的时候,操作系统上的进程会变得不稳定!

  1. 编辑文件/etc/docker/daemon.json
{
  "exec-opts": [
    "native.cgroupdriver=cgroupfs"  # 可取值cgroupfs、systemd
  ], 
  "registry-mirrors": ["https://yne6emhg.mirror.aliyuncs.com"]  # 改成自己的加速地址,当然没有的话也可以不配置,最多加速效果跟平时一样
}

      2.配置生效

# 重启docker的伴随线程
sudo systemctl daemon-reload
# 重启docker
systemctl restart docker

       3.解释一下阿里源库加速,省的朋友们到处找了(不配置加速的朋友,不用理会,哈哈哈)

  •      登录阿里站点

三、CNI配置

  • 配置之必要性
cat << EOF | tee /etc/cni/net.d/10-containerd-net.conflist
{
 "cniVersion": "1.0.0",
 "name": "containerd-net",
 "plugins": [
   {
     "type": "bridge",
     "bridge": "cni0",
     "isGateway": true,
     "ipMasq": true,
     "promiscMode": true,
     "ipam": {
       "type": "host-local",
       "ranges": [
         [{
           "subnet": "10.88.0.0/16"
         }],
         [{
           "subnet": "2001:db8:4860::/64"
         }]
       ],
       "routes": [
         { "dst": "0.0.0.0/0" },
         { "dst": "::/0" }
       ]
     }
   },
   {
     "type": "portmap",
     "capabilities": {"portMappings": true},
     "externalSetMarkChain": "KUBE-MARK-MASQ"
   }
 ]
}
EOF

四、初始化镜像配置

默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址

  •  两种安装方式,任选其一
  • 方式一:自动安装
# 调用可选参数image-repository


# 查看默认镜像列表
kubeadm config images list
# 查看镜像地址调整为阿里源后的列表
kubeadm config images list  --image-repository registry.aliyuncs.com/google_containers
# 安装阿里源镜像
kubeadm config images pull  --image-repository registry.aliyuncs.com/google_containers
  • 方式二:手动安装

        如果k8s的版本是1.24后的版本,选用如下形式安装镜像   

# 查看所需镜像并写入txt文件中
kubeadm config images list > 1.txt


# 测试安装镜像
ctr images pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6
# 本地镜像打标签,其中n代表namespace,i代表images
ctr -n k8s.io i tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6 k8s.gcr.io/pause:3.6


# 正式环境应用,安装全部
# Ⅰ筛选1.txt中"registry.k8s.io/"内容并剔除
# Ⅱ执行安装命令
cat 1.txt |xargs -I {} ctr images pull registry.cn-hangzhou.aliyuncs.com/google_containers/{}


# 查看已安装
crictl img

        如果k8s的版本是1.24前的版本,选用如下形式安装镜像

# 查看所需镜像并写入txt文件中
kubeadm config images list > 1.txt


# 测试安装组件镜像kube-apiserver
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.28.3


# 正式环境应用,安装全部
# Ⅰ筛选1.txt中"registry.k8s.io/"内容并剔除
# Ⅱ执行安装命令
cat 1.txt |xargs -I {} docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/{}


# 查看已安装
docker images

五、初始化集群

# 启动命令

kubeadm init

六、再初始化集群

  • 第四步初始化肯定失败了?①容器container配置;②镜像库用的registry.k8s.io。①②需外网
  • containerd是docker的子项目,但是现在已经独立出去了
  • kubeadm在版本1.24之后的k8s管理中移除了对docker集成,反而使用了containerd

6.1、容器container配置

# 生成 containerd 的默认配置文件,后缀名一定是toml,不要质疑,因为我尝试过!
containerd config default > config.toml


# 查看 sandbox 的默认镜像仓库在文件中的第几行
cat config.toml | grep -n "sandbox_image"


# 编辑config.toml,定位到 sandbox_image,将 仓库地址修改成阿里源
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.8"
# 效果同上,只是地址稍微换了下
# sandbox_image = "registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.8"


# 将文件移动到默认路径
mkdir /etc/containerd
mv config.toml /etc/containerd/config.toml

 # 重载containerd服务
systemctl daemon-reload  
systemctl restart containerd.service

 6.2、镜像库配置

# 生成 默认的初始化配置文件
kubeadm config print init-defaults > init-default.yaml


# 查看默认镜像库
cat init-default.yaml | grep imageRepository

 
# 编辑init-default.yaml

# 将默认的镜像仓库registry.k8s.io修改成阿里源registry.aliyuncs.com/google_containers
sed -i 's#registry.k8s.io#registry.aliyuncs.com/google_containers#' init-default.yaml

# 将master主机信息advertiseAddress: 1.2.3.4中的ip地址改成master主机实际地址172.21.1.254
sed -i 's#advertiseAddress: 1.2.3.4#advertiseAddress: 172.21.1.254#' init-default.yaml


# 将文件移动到默认地址
mv init-default.yaml /etc/kubernetes/init-default.yaml

6.3、在初始化ING

  • 两种启动方式,任选其一
  • ①加载配置文件并启动

# 此时,host主机信息存储在/etc/hosts,k8s基础信息在/etc/kubernetes/init-default.yaml中

kubeadm init --config=/etc/kubernetes/init-default.yaml 

  • ②命令行启动

kubeadm init:在主节点初始化 Kubernetes 控制平面节点。

  • --image-repository registry.aliyuncs.com/google_containers:使用阿里云镜像仓库
  • --kubernetes-version=v1.28.2:指定kubernetes版本,查询命令kubelet --version;
  • --pod-network-cidr=10.244.0.0/16:指定pod的网段,与下面部署的CNI中保持一致 ;
  • --service-cidr=10.96.0.0/12:机器内部虚拟网络,Pod统一访问入口
  • --apiserver-advertise-address=172.21.1.254:指定master主机地址;
# 可以看到,提供的参数其实是可以替代<<5.2>>步骤,好处?自然是定制化书写方便咯!
kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.28.2(你的版本) --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --apiserver-advertise-address=172.21.1.254(你的IP地址)

6.4、结果分析

  • [kubelet-start] 生成kubelet的配置文件”/var/lib/kubelet/config.yaml”
  • [certificates]生成相关的各种证书
  • [kubeconfig]生成相关的kubeconfig文件
  • [bootstraptoken]生成token记录下来,后边使用kubeadm join往集群中添加节点时会用到

6.5、查看k8s日志

# 查看kubelet日志,其中-f是 --follow, -u是过滤出kubelet日志
journalctl -f -u kubelet

# 查看kubelet日志,也可以用如下命令,一样的
journalctl -xeu kubelet

 七、配置kube-config

  • Node是K8s集群中的一个工作节点,可以是物理机或虚拟机。Node上kubelet进程负责管理Pod生命周期。拥有唯一符NodeName
  • Pod是Kubernetes中最小的可部署单元,通常包含一个或多个容器。Pod在Node上运行,共享相同的网络命名空间和存储卷。Pod也有一个唯一的标识符,称为PodName。

  • Node和Pod之间的关系是一对多的关系,即一个Node上可以运行多个Pod,但一个Pod只能运行在一个Node上

  • 查看节点状态

  • 使kubectl与集群通信
# 通信
mkdir -p $HOME/.kube 
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 配置环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
  • 查看节点状态

八、令牌概念

  • 令牌的用意是为了方便节点的加入
  • 令牌的获取方式有如下四种方式,任取其一皆可
  1. 初始化控制平面节点时,kubeadm init命令会打印出加入令牌:
kubeadm init
...
Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
  1. 在控制平面节点的/etc/kubernetes/目录下找到生成的token文件,内容即为加入令牌。

  2. 使用kubeadm token list命令查看当前有效的加入令牌。

  3. 如果集群配置错误,可以使用kubeadm reset删除集群,重新执行kubeadm init来初始化集群启动并以此获取新令牌。注,可以配置-r --cri-socket=/var/run/containerd/containerd.sock来实现主机上pod的删除

  4. 若令牌过期(默认24h),可使用命令kubeadm token create --print-join-command生成新令牌

九、将子节点加入集群

  • 一定需要在子节点上运行

  • 其中token(即上一章提到的令牌)可通过kubeadm token list
# 加入集群命令
kubeadm join <Master节点ip>:6443 --token <生成的Token> --discovery-token-ca-cert-hash sha256:<Kubelte Init时生成的hash>

十、安装Pod网络插件

例如Calico或Flannel:

# calico
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

# flannel
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml --no-check-certificate
# 应用启动网络容器flannel
kubectl apply -f kube-flannel.yml

十一、查看集群

kubectl get nodes
kubectl get pods --all-namespaces
kubectl get pods -n kube-system

十二、dashboard可视化

  • PASS

十三、引申

  • 非阿里源库的k8s安装与集群配置

十四、结束!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

行业追踪,2023-11-13

自动复盘 2023-11-13 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

CSRF 漏洞详解

CSRF 漏洞详解 漏洞描述 CSRF&#xff08;Cross-Site Request Forgery&#xff09;漏洞是一种Web应用程序安全漏洞&#xff0c;它允许攻击者利用受害者的已认证会话来执行未经授权的恶意操作。攻击者可以诱使受害者在受害者已经登录的情况下&#xff0c;通过社交工程或其他方…

前端中 JS 发起的请求可以暂停吗?

给大家推荐一个实用面试题库 1、前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;web前端面试题库 这个问题非常有意思&#xff0c;我一看到就想了很多可以回复的答案&#xff0c;但是评论区太窄&#xff0c;就直接开…

MTK手机平台充电原理

EPT GPIO初始化文件 bsp_gpio_ept_config.c 1 知识点总结 1.1 Official 参考充电电路 Figure 1-1 参考电路 VCHG&#xff1a;USB正极 VCDT&#xff1a;VCHG Charger Detect充电电压检测脚 ISENSE&#xff1a;充电电流检测电阻的正极 BATSNS&#xff1a;充电电流检测电阻的负极 …

VMware配置NAT模式网络

一、选择VMWare的NAT模式。 1&#xff09;导航栏“编辑”->“虚拟网络编辑器” ->NAT模式->NAT设置 记住NAT设置中的子网IP、子网掩码、网关IP三项&#xff0c;接下来配置文件主要是这三项。 嗯&#xff0c;这里记得按确定&#xff0c;我之前没有按确定写好配置后还…

c++-哈希

文章目录 前言一、unordered系列关联式容器1、unordered_map2、性能测试 二、哈希1、哈希概念2、哈希冲突3、哈希冲突解决3.1 闭散列3.2 开散列3.3 字符串Hash函数3.4 哈希桶实现的哈希表的效率 三、哈希表封装unordered_map和unordered_set容器1、unordered_map和unordered_se…

【PG】PostgreSQL 预写日志(WAL)、checkpoint、LSN

目录 预写式日志&#xff08;WAL&#xff09; WAL概念 WAL的作用 WAL日志存放路径 WAL日志文件数量 WAL日志文件存储形式 WAL日志文件命名 WAL内容 检查点&#xff08;checkpoint&#xff09; 1 检查点概念 2 检查点作用 触发检查点 触发检查点之后数据库操作 设置合…

擎创动态 | 再获上海区政府肯定,擎创科技被评为年度优秀高新技术企业

11月6日&#xff0c;上海市静安区副区长张慧和市北高新集团总裁陈军一行来到擎创科技调研指导&#xff0c;由擎创科技高管张健和陈莹陪同交流。 陈莹女士首先向副区长一行详细介绍了擎创科技的发展现状、落地实践效益以及未来的规划布局。在公司的成长过程中&#xff0c;得到静…

安卓现代化开发系列——从状态保存到SavedState

由于安卓已经诞生快二十载&#xff0c;其最初的开发思想与现代的开发思想已经大相径庭&#xff0c;特别是Jetpack库诞生之后&#xff0c;项目中存在着新老思想混杂的情况&#xff0c;让许多的新手老手都措手不及&#xff0c;项目大步向屎山迈进。为了解决这个问题&#xff0c;开…

linux时间同步

搭建集群时&#xff0c;都会先设置时间同步&#xff0c;否则会出现多种问题。 方式一&#xff1a; 1.安装ntp软件 yum install -y ntp 2.更新时区 删除原有时区&#xff1a;sudo rm -f /etc/localtime 加载新时区&#xff1a;sudo ln -s /usr/share/zoneinfo/Asia/Shangh…

杂乱知识点记录

杂乱知识点记录 1 目标检测评估指标2 visual grounding3 分割4 VLM经典框架5 RCNN系列RCNNFast RCNNFaster RCNNMask RCNN 6 GIOU7 DETR系列DETRDeformable DETRDAB-DETRDN-DETRDINO 8 COCO20149 COCO评价指标 maxDets[1,10,100]10 FCOS&#xff1a;anchor-free11 ATSS 1 目标检…

公司让我开发一个管理系统,有了它,So easy!

目录 一、前言 二、低代码如何快速开发&#xff1f; 1.可视化开发 2.预构建的组件和模板 3.集成的开发和测试工具 4.跨平台兼容性 5.可伸缩性和可扩展性 三、前后端分离的开发框架 技术架构 一、前言 长期以来&#xff0c;常规软件开发是一项艰苦而详尽的工作。开发人员编写代表…

CMT2300A超低功耗127-1020MHz Sub-1GHz全频段SUB-1G 射频收发芯片

CMT2300A超低功耗127-1020MHz Sub-1GHz全频段SUB-1G 射频收发芯片 Sub-1GHz&#xff0c;是指小于1GHz频率的统称。Sub-1GHz无线电频段应用的主要特点&#xff1a;&#xff08;1&#xff09;频率较低波长较长&#xff0c;传输距离远&#xff0c;穿透性强&#xff1b;&#xff0…

阿里云国际站:专有网络vpc

文章目录 一、阿里云专有网络的概念 二、专有网络的组成部分 三、专有网络的优势 一、阿里云专有网络的概念 专有网络VPC是阿里云用户在云上创建的私有网络&#xff0c;用户自己掌控&#xff0c;可以自定义IP地址段、创建交换机、配置路由表和网关等操作。用户可以在自己的专…

假冒 Skype 应用程序网络钓鱼分析

参考链接: https://slowmist.medium.com/fake-skype-app-phishing-analysis-35c1dc8bc515 背景 在Web3世界中&#xff0c;涉及假冒应用程序的网络钓鱼事件相当频繁。慢雾安全团队此前曾发表过分析此类网络钓鱼案例的文章。由于Google Play在中国无法访问&#xff0c;许多用户…

个推「数据驱动运营增长」上海专场:携程智行火车票分享OTA行业的智能用户运营实践

近日&#xff0c;以“数据增能&#xff0c;高效提升用户运营价值”为主题的个推「数据驱动运营增长」城市巡回沙龙上海专场圆满举行。携程智行火车票用户运营负责人王银笛分享OTA行业的智能用户运营实践。 ▲ 王银笛 携程智行火车票用户运营负责人 负责智行业务线用户运营。从0…

竞赛 题目:基于FP-Growth的新闻挖掘算法系统的设计与实现

文章目录 0 前言1 项目背景2 算法架构3 FP-Growth算法原理3.1 FP树3.2 算法过程3.3 算法实现3.3.1 构建FP树 3.4 从FP树中挖掘频繁项集 4 系统设计展示5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于FP-Growth的新闻挖掘算法系统的设计与实现…

短剧软件APP开发方案

一、项目概述 短剧软件APP是一款集创作、拍摄、观看短剧于一体的移动应用。用户可以随时随地创作自己的短剧&#xff0c;也可以观看其他用户创作的短剧。本方案将详细介绍短剧软件APP的开发流程。 二、需求分析 在开发短剧软件APP之前&#xff0c;需要进行详细的需求分析。通…

MS321V/358V/324V低压、轨到轨输入输出运放

MS321V/MS358V/MS324V 是单个、两个和四个低压轨到轨输 入输出运放&#xff0c;可工作在幅度为 2.7V 到 5V 的单电源或者双电源条件 下。在低电源、空间节省和低成本应用方面是最有效的解决方案。 这些放大器专门设计为低压工作&#xff08; 2.7V 到 5V &#xff09;…