ubuntu22.04基于docker部署k8s1.29.x 高可用集群

参考:https://mp.weixin.qq.com/s/7i68jmvi2eo_6wlqYEOupQ

操作系统:Ubuntu 22.04

nginx代理配置

代理IP :192.168.0.10

vim /etc/nginx/nginx.conf

stream {upstream kube-apiserver {server 192.168.0.11:6443     max_fails=3 fail_timeout=30s;#server 192.168.0.12:6443     max_fails=3 fail_timeout=30s;#server 192.168.0.13:6443     max_fails=3 fail_timeout=30s;}server {listen 6443;proxy_connect_timeout 2s;proxy_timeout 900s;proxy_pass kube-apiserver;}
}

设置主机名

hostnamectl set-hostname master1
hostnamectl set-hostname node1
hostnamectl set-hostname node2

配置hosts

vim /etc/hosts

192.168.0.11 master1
192.168.0.21 node1
192.168.0.22 node2

容器运行时:docker-ce和cri-dockerd

安装docker-ce

apt -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
apt update
apt install docker-ce

vim /etc/docker/daemon.json

{
"registry-mirrors": ["https://ahed1oup.mirror.aliyuncs.com"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {"max-size": "200m"
},
"storage-driver": "overlay2"  
}

启动docker

systemctl daemon-reload
systemctl start docker.service
systemctl enable docker.service

安装cri-dockerd

curl -LO https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.10/cri-dockerd_0.3.10.3-0.ubuntu-jammy_amd64.deb
apt install ./cri-dockerd_0.3.10.3-0.ubuntu-jammy_amd64.deb
systemctl status cri-docker.service

安装kubelet、kubeadm和kubectl

apt-get update && apt-get install -y apt-transport-https
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/deb/Release.key |    gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/deb/ /" |    tee /etc/apt/sources.list.d/kubernetes.list
apt-get update
apt-get install -y kubelet kubeadm kubectl
systemctl enable kubelet.service
kubeadm                                1.29.3-1.1
kubectl                                1.29.3-1.1
kubelet                                1.29.3-1.1

整合kubelet和cri-dockerd(仅cri-dockerd需要)

配置cri-dockerd

vim /usr/lib/systemd/system/cri-docker.service
修改ExecStart配置

ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib/cni/cache --cni-conf-dir=/etc/cni/net.d --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9

重启cri-docker

systemctl daemon-reload && systemctl restart cri-docker.service

配置kubelet

vim /etc/sysconfig/kubelet

KUBELET_KUBEADM_ARGS="--container-runtime=remote --container-runtime-endpoint=/run/cri-dockerd.sock"
KUBELET_EXTRA_ARGS=

初始化第一个主节点

下载镜像

kubeadm config images list
kubeadm config images list --image-repository=registry.aliyuncs.com/google_containerskubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers --cri-socket unix:///run/cri-dockerd.sock

下载flannel部署文件
https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

    image: docker.io/flannel/flannel:v0.24.4image: docker.io/flannel/flannel-cni-plugin:v1.4.0-flannel1image: docker.io/flannel/flannel:v0.24.4

生成kubeadmconfig文件

kubeadm config print init-defaults > kubeadm-config.yaml

修改kubeadmconfig文件
vim kubeadm-config.yaml

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.168.0.11bindPort: 6443
nodeRegistration:criSocket: unix:///run/cri-dockerd.sockimagePullPolicy: IfNotPresenttaints:- effect: NoSchedulekey: node-role.kubernetes.io/master- effect: NoSchedulekey: node-role.kubernetes.io/control-plane
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: 192.168.0.10:6443
controllerManager: {}
dns: {}
etcd:local:dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.29.3
networking:dnsDomain: cluster.localserviceSubnet: 10.96.0.0/12podSubnet: 10.244.0.0/16
scheduler: {}

初始化master节点

kubeadm init --config kubeadm-config.yaml --upload-certs...
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/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou 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/You can now join any number of the control-plane node running the following command on each as root:kubeadm join 192.168.0.10:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:ff71ad6d9569107cf146a9a05d72ee0af13db3aa721bd8a9fe4e2b7e9b3bddb7 \--control-plane --certificate-key 4cbae11642fb00bd1bf97ab47384d222d501c3e3df5217e4a7472909f79dc933Please note that the certificate-key gives access to cluster sensitive data, keep it secret!
As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use
"kubeadm init phase upload-certs --upload-certs" to reload certs afterward.Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.0.10:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:ff71ad6d9569107cf146a9a05d72ee0af13db3aa721bd8a9fe4e2b7e9b3bddb7
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

设置kubectl命令补全

echo "source <(kubectl completion bash)" >> /etc/profile

部署flannel网络插件

kubectl apply -f kube-flannel.yml

node节点加入集群

kubeadm join 192.168.0.10:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:ff71ad6d9569107cf146a9a05d72ee0af13db3aa721bd8a9fe4e2b7e9b3bddb7 --cri-socket unix:///run/cri-dockerd.sock

查看结果

root@master1:~# kubectl get nodes 
NAME      STATUS   ROLES           AGE   VERSION
master1   Ready    control-plane   52m   v1.29.3
node1     Ready    <none>          49m   v1.29.3
node2     Ready    <none>          49m   v1.29.3
root@master1:~# kubectl -n kube-system get pod
NAME                              READY   STATUS    RESTARTS      AGE
coredns-857d9ff4c9-28j7b          1/1     Running   1 (18m ago)   52m
coredns-857d9ff4c9-mm892          1/1     Running   1 (18m ago)   52m
etcd-master1                      1/1     Running   1 (19m ago)   52m
kube-apiserver-master1            1/1     Running   1 (18m ago)   52m
kube-controller-manager-master1   1/1     Running   1 (19m ago)   52m
kube-proxy-5lcl5                  1/1     Running   1 (19m ago)   49m
kube-proxy-ft4lj                  1/1     Running   1 (19m ago)   52m
kube-proxy-js88l                  1/1     Running   1 (19m ago)   49m
kube-scheduler-master1            1/1     Running   1 (18m ago)   52m

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

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

相关文章

k8s中,pod服务的状态和pod里面的容器的状态关系

Pod 的状态和 Pod 里面的容器的状态是密切相关的。Pod 是 Kubernetes 中最小的调度单元&#xff0c;一个 Pod 可以包含一个或多个容器。Pod 的状态反映了 Pod 中所有容器的状态情况。 Pod 的状态包括&#xff1a; Pending&#xff08;等待&#xff09;&#xff1a;Pod 已经被创…

【WEEK4】Learning Objectives and Summaries【SpringMVC】【English Version】

Learning Objectives: Getting Started with SpringMVC in Four Weeks - Week 4 Learning Content: Reference video tutorials【狂神说Java】SpringMVC最新教程IDEA版通俗易懂Integrate the SSM framework Spring SpringMVC environmentPerform add, delete, check and modi…

算法系列--动态规划--子序列(1)

&#x1f495;"深思熟虑的结果往往就是说不清楚。"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;算法系列–动态规划–子序列(2) 今天带来的是算法系列--动态规划--子序列(1),是子序列问题的开篇!带大家初识子序列问题 一.什么是子序列问题 我们…

6.volatile与JMM

文章目录 被 volatile 修饰的变量有两大特点volatile 的内存语义volatile 凭什么可以保证有序性和可见性? 内存屏障(面试重点)解读 volatile 的两大特性内存屏障 volatile 特性两大类读屏障(Load Barrier)写屏障(Store Barrier) 四小类C源码分析四类屏障特点 如何保证有序性?…

huggingface的transformers训练gpt

目录 1.原理 2.安装 3.运行 ​编辑 4.数据集 ​编辑 4.代码 4.1 model init​编辑 forward&#xff1a; 总结&#xff1a; 关于loss和因果语言模型&#xff1a; ​编辑 交叉熵&#xff1a;​编辑 记录一下transformers库训练gpt的过程。 transformers/examples/…

klipper源码分析之simulavr测试

分析Klipper源码&#xff0c;有时需要结合下位机一起分析&#xff0c;这样才能更加全面的了解Klipper的工作原理。如果手头上有打印机主板&#xff0c;电脑当做上位机运行Klipper&#xff0c;这样是比较方便。如果手头上没有打印机主板&#xff0c;可以用simulavr模拟AVR下位机…

Linux常见指令解析一

Linux常见指令解析一 常见指令1. ls 指令2.pwd 命令3.cd 命令4.touch 命令5.mkdir 命令6.rmdir指令 && rm 指令7.man 指令8.cp 指令9.cat 命令 && tac 命令10.mv 指令11.more 指令12.less 指令13.head 指令14.tail 指令15.cal 指令 常见指令 1. ls 指令 语法…

Vscode创建php项目

1.安装中文插件&#xff08;可安装可不安装&#xff09; 2.安装主题&#xff08;可安装可不安装&#xff09; 3.安装和php相关的插件 4.打开文件夹 5.路由操作 查看项目中的route路由 浏览器中访问think 隐藏index.php入口文件 访问ThinkPHP5.1开发手册&#xff0c;复制apa…

PHP安全技术

文章目录 一、攻击二、输入过滤 一、攻击 万能密码&#xff1a;如 xxx‘or’1该密码拼凑出来的sql语句会直接执行 or’1则满足一切条件解决方法&#xff1a;将用户传过来的密码加密&#xff0c;如md5等万能用户名&#xff1a;如 xxx‘or 1# 该密码拼凑出来的sql语句会直接执行…

P5963 [BalticOI ?] Card 卡牌游戏 贪心

[P5963 BalticOI ?] Card 卡牌游戏【来源请求】 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 贪心模板题。 存在 ( x 1 , y 1 ) (x_1, y_1) (x1​,y1​)&#xff0c; ( x 2 , y 2 ) (x_2, y_2) (x2​,y2​)&#xff0c;假设 x i > y i x_i > y_i xi​>yi​&…

nginx的使用总结

http转https配置&#xff1a; upstream web { ip_hash; server 127.0.0.1:8081; } server { listen 8080; server_name www.example.com; rewrite ^(.*)$ https://$host$1 permanent; } server { listen 443 ssl; …

【Python实战】——神经网络识别手写数字

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

鸿蒙APP应用开发教程—超详细的项目结构说明

1. 新建项目 打开DevEco Studio, 选择 Create Project: 1.1 选择模版 Create Project - Choose Template 1.2 配置项目 Create Project - Configure Project 如果使用的是 DevEco 3.X 版本, 可以根据 Compile SDK版本选择不同的模式, 比如: 3.0.0(API 8)及更早 - 仅支持 …

数字图像处理学习笔记(五)

数字图像处理学习笔记&#xff08;五&#xff09; 表示与描述表示链码最小周长多边形的多边形近似&#xff08;MPP&#xff09;标记边界片段骨骼&#xff08;表示平面区域结构形状&#xff09; SIFT原理(尺度不变特征变换匹配算法:Scale-invariant feature transform)SIFT算法分…

有名的爬虫框架 colly 的特性及2个详细采集案例

一. Colly概述 前言&#xff1a;colly 是 Go 实现的比较有名的一款爬虫框架&#xff0c;而且 Go 在高并发和分布式场景的优势也正是爬虫技术所需要的。它的主要特点是轻量、快速&#xff0c;设计非常优雅&#xff0c;并且分布式的支持也非常简单&#xff0c;易于扩展。 框架简…

Linux之时间子系统(四): tick 层模块(periodic 和dynamic )

一、时间子系统的软件架构 二、tick 层模块的文件 tick-common.c tick-oneshot.c tick-sched.c tick-broadcast.c tick-broadcast-hrtimer.c 这三个文件属于tick device layer。 tick-common.c文件是periodic tick模块&#xff0c;用于管理周期性tick事件。 tick-oneshot.c文…

ubuntu22.04物理机双系统手动分区

ubuntu22.04物理机双系统手动分区 文章目录 ubuntu22.04物理机双系统手动分区1. EFI系统分区2. 交换分区3. /根分区4. /home分区分区后的信息 手动分区顺序&#xff1a;EFI系统分区(/boot/efi)、交换分区(/swap)、/根分区、/home分区。 具体参数设置&#xff1a; 1. EFI系统分…

OpenHarmony使用智能指针管理动态分配内存对象

概述 智能指针是行为类似指针的类&#xff0c;在模拟指针功能的同时提供增强特性&#xff0c;如针对具有动态分配内存对象的自动内存管理等。 自动内存管理主要是指对超出生命周期的对象正确并自动地释放其内存空间&#xff0c;以避免出现内存泄漏等相关内存问题。智能指针对…

word文档修改批注字体方法

在最近的一次数据报告中需要增加对数据的批注&#xff0c;发现批注字体大小无法修改&#xff0c;并且发现网上对这个问题的解决方法很少&#xff0c;所以记录下来&#xff0c;方便有缘人学习借鉴。 前置条件&#xff1a;修改批注字体目前在wps中没有找到对应方法&#xff0c;需…

Vue复习

1. MVVM 模型 ● Model&#xff08;模型&#xff09;&#xff1a;表示应用程序中的数据模型。它代表着应用程序中的业务逻辑和状态。 ● View&#xff08;视图&#xff09;&#xff1a;表示应用程序的用户界面。它是用户与应用程序交互的方式。 ● ViewModel&#xff08;视图模…