[最新]ubuntu22.04安装kubernetes1.25 k8s1.25

2023-05-16

条件

  1. 2G内存
  2. 2 CPU
  3. 网络连接(内网公网都可以)
  4. 唯一的主机名,mac地址
  5. 6443,10650等端口
  6. 禁用Swap
  7. 20 GB /var目录磁盘空间
  8. Sudo 用户权限

主机准备
Master Node: 192.168.132.77 – k8smaster.example.net
First Worker Node: 192.168.1.174 – k8sworker1.example.net
Second Worker Node: 192.168.1.175 – k8sworker2.example.net

设置hostname,和/etc/hosts

master Node

sudo hostnamectl set-hostname "k8smaster.example.net"
exec bash

WorkerNode:

sudo hostnamectl set-hostname "k8sworker1.example.net"   // 1st worker node
sudo hostnamectl set-hostname "k8sworker2.example.net"   // 2nd worker node
exec bash

node主机

192.168.1.173 k8smaster.example.net k8smaster
192.168.1.174 k8sworker1.example.net k8sworker1
192.168.1.175 k8sworker2.example.net k8sworker2

升级系统

sudo apt update
sudo apt -y full-upgrade
[ -f /var/run/reboot-required ] && sudo reboot -f

禁用swap

master 和所有worker

sudo swapoff -a
sudo sed -i '/swap/ s/^\(.*\)$/#\1/g' /etc/fstab
# -i 插入修改模式,g 标识符表示全局查找替换,表示注释掉swap的那一行。
free -h

打开一些内核功能:
[主机:master 和所有worker]

# Enable kernel modules
sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter



# Add some settings to sysctl
sudo tee /etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

# 重新加载 sysctl
sudo sysctl --system

安装 containerd run time

[主机:master 和所有worker]

自 Kubernetes v1.24 起,Dockershim 已被删除

配置ubuntu系统国内源:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak​
vi /etc/apt/sources.list 替换成如下:

deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

​​sudo apt-get update​​
​​sudo apt-get upgrade​

安装关联软件

sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

安装docker仓库,国内用户可以用下面的。

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

使用阿里云的仓库

#  安装GPG证书
sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

安装containnerd:

sudo apt update
sudo apt install -y containerd.io

配置 containerd 用systemdcgroup启动.

containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

重启和启用:

sudo systemctl restart containerd
sudo systemctl enable containerd

添加apt repository for Kubernetes

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

使用阿里云

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add - 
sudo apt-add-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"

apt-get update

Note: At time of writing this guide, Xenial is the latest Kubernetes repository but when repository is available for Ubuntu 22.04 (Jammy Jellyfish) then you need replace xenial word with ‘jammy’ in ‘apt-add-repository’ command.

安装kubernetes组件Kubectl, kubeadm & kubelet

sudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
#apt-mark 用于将软件包标记/取消标记为自动安装。 hold 选项用于将软件包标记为保留,以防止软件包被自动安装、升级或删除。

复制出来自节点worker1,worker2,

这样可以无需重复在worker机器上重复上面的步骤。

初始化kubernetes集群:
在master上运行

sudo kubeadm init --control-plane-endpoint=k8smaster.example.net

初始化成功

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

在master上运行

kubectl cluster-info
kubectl get nodes

worker 加入

kubeadm join k8smaster.example.net:6443 --token h8dlio.fbiccpki1epoz65x \
	--discovery-token-ca-cert-hash sha256:419f76c17be7c21de41227767fce5a6fdf0cced2fa18d2e7fc335ea1a215e904 

如果上面语句中带了–control-panel,则需要手动复制ca, key文件。

kubectl get nodes

显示notReady, 因为需要安装 CNI (Container Network Interface) ,或者插件类似: Calico, Flannel and Weave-net.
Calico的性能更强,Flannel更加简单方便

安装calico

查看支持的k8s版本:
https://projectcalico.docs.tigera.io/archive/v3.24/getting-started/kubernetes/requirements#cni-plug-in-enabled

curl https://projectcalico.docs.tigera.io/manifests/calico.yaml -O
sed -i "s#192\.168\.0\.0/16#10\.244\.0\.0/16#" calico.yaml

kubectl apply -f calico.yaml

查看:

kubectl get pods -n kube-system

在这里插入图片描述

都处于RUNNING后,查看nodes状态:

kubectl get nodes

在这里插入图片描述

安装完毕

测试:

$ kubectl create deployment nginx-app --image=nginx --replicas=2
$ kubectl get deployment nginx-app

暴露服务

kubectl expose deployment nginx-app --type=NodePort --port=80

$ kubectl get svc nginx-app
$ kubectl describe svc nginx-app

获取到svc的端口映射和主机名:80:32336/TCP

##验证

curl k8sworker1.example.net:32336

在这里插入图片描述
成功
技术支持weixin:quchaoxingfu
本文的github仓库文档和代码:
https://github.com/shelutai/cnk8s

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[最新]ubuntu22.04安装kubernetes1.25 k8s1.25 的相关文章

随机推荐

  • Apache 中文乱码问题解决方法

    已经不记得解决过多少次这个问题了 xff0c 但是每次都搞忘记 xff0c 备忘一下 服务器端 xff1a 61 61 61 61 61 61 修改httpd conf 在Redhat中放置的位置为 etc httpd conf 查找 xf
  • linux下查看日志用到的常用命令

    linux下查看日志用到的常用命令 参考网址 https mp weixin qq com s NDXSXRhIWkE8fkYSDwcwXw 1 查看日志常用命令 tail n 是显示行号 xff1b 相当于nl命令 xff1b 例子如下
  • Python笔记—TypeError: can only concatenate str (not “int“) to str

    今天自学Python遇到了一个报错 xff0c 报错的内容如下 xff1a TypeError can only concatenate str not 34 int 34 to str 这个错误的意思是类型错误 xff1a 字符串只能拼接
  • Python3中通过Zmail库发送电子邮件

    一 Zmail 是什么 Zmail或许是最简单的邮件收发库 xff0c 开发网址为 xff1a https github com ZYunH zmail GITHUB中的Zmail 在上述github下载压缩包 zmail master z
  • 李宏毅——元学习meta learning1

    李宏毅 元学习meta learning1 导语meta learningmeta learning的步骤什么叫一组learning algorithm如何评价一个F的好坏meta learning vs machine learning怎
  • BACnet协议简要说明及组网简介

    主题概要BACnet协议BACnet协议简要说明 xff0c 组网简介编辑时间新建20160217序号参考资料1BACnet协议正文1995版2http www bacnet org Tutorial BACnetIP 1 协议说明 BAC
  • Tesseract-OCR字符训练工具及方法

    主题概要Tesseract OCRTesseract OCR训练工具编辑时间新建20161008更正训练步骤序号20161225序号参考资料1http vietocr sourceforge net training html2 最近参加了
  • 基于easyPR和openalpr的车牌识别研究

    主题概要车牌识别车牌识别流程及算法编辑时间新建20161216序号参考资料1https github com openalpr openalpr2https github com liuruoze EasyPR3学习openCV Cary
  • c# Winform程序实现多sheet的Excel文件导入与导出

    主题概要C excel导入到mysql xff0c mysql导出到excel编辑时间新建20170123序号参考资料1http download csdn net detail nanzhaonan 5403457 xff08 左侧导航菜
  • JS统计页面访问次数并传递可选参数

    主题概要JS用JS统计网站页面的访问次数 xff0c 并传递可选参数编辑时间新建20171218序号参考资料1 网站有些页面需要统计用户的访问次数 xff0c 下面是一个简单的JS xff0c 引用在需要统计的页面类 网站上有个Handle
  • QT UDP Socket数据接收与解析

    主题概要QTUDP Socket编辑时间新建20180331序号参考资料1https doc qt io qt 5 qudpsocket html 做直升机航电系统仿真 xff0c 类似GPS导航接收机的按钮很多 xff0c 显示的仪表也很
  • 个人博客搬迁

    个人博客网址 xff1a 个人博客 可以在浏览器上输入 shao zheng com 后续不再在CSDN上更新博客 忽略新博客的页面 xff0c 会用心记录开发中的各种内容 xff0c 也会写一些飞行仿真相关的原理性的东西
  • 在sublime中配置gcc/g++环境

    在sublime中配置gcc g 43 43 环境 第一次使用sublime进行c 43 43 学习的过程中遇到的一些问题 xff0c 包括代码的编译与运行需要用到gcc g 43 43 的编译环境 xff0c 现在已经顺利解决 本文是对问
  • Android-调用微信支付失败的情况

    最近工作中 xff0c 开发的App版本需要加入微信支付 支付宝支付 QQ钱包支付功能 一般情况下 xff0c 我们支付功能都是封装好的支付模块 xff0c 支付方面一般不会有重大的更新 但是我却遇到了 xff1a 微信支付一直调不起微信客
  • Rust异步编程async/.await原理解析(一)

    在这个教程中我们将详细分析rust异步代码async await的内部运行机制 我们将使用async std库而不是tokio xff0c 因为这是第一个支持async await语法的rust库 async await原理解析教程分为两部
  • 数控机床G-Code在线仿真器

    G code是 CNC xff08 计算机数控 xff09 机床的编程语言 G code指的是Geometric Code xff0c 即几何代码 我们使用这种语言告诉机器做什么或怎么做某事 G code命令指示机器移动位置 移动速度以及要
  • ubuntu误删文件造成软件包信息列表损坏无法更新或安装文件

    因为一开始不知到如何彻底卸载软件包 xff0c 误把文件目录删除 xff0c 造成了软件包信息列表损坏 xff0c 系统无法使用apt get 命令 xff0c 无论实施更新或安装还是卸载都会提示软件包信息列表损坏 xff0c 建议重新安装
  • Docker镜像转换成Dockerfile

    通常我们会通过dockerfile构建docker xff0c 但是我们需要使用dockerfile时 xff0c 想还原其dockerfile xff0c 我们可以使用如下命令 docker run v var run docker so
  • 使用iperf测试网络速度--windows

    下载 下载iperf的Windows版本 xff1a iperf官网地址 这里下载的版本是iperf 3 1 3 win32 xff0c 电脑使用的是XP系统 下载文件中有cygwin1 dll xff0c cyggcc s 1 dll x
  • [最新]ubuntu22.04安装kubernetes1.25 k8s1.25

    条件 2G内存2 CPU网络连接 xff08 内网公网都可以 xff09 唯一的主机名 xff0c mac地址6443 xff0c 10650等端口禁用Swap20 GB var目录磁盘空间Sudo 用户权限 主机准备 Master Nod