最新k8s集群搭建教程

本次安装在vmware虚拟机下开启3台2核2g的Ubuntu20.04系统
master:192.168.192.137
node1:192.168.192.136
node2:192.168.192.138

关闭防火墙
先查看防火墙状态,如果是关闭就不用管

ufw status

在这里插入图片描述
关闭selinux,如果没有安装selinux就不用管,下图就显示没有安装。

setenforce 0

在这里插入图片描述
分别修改三台主机的hostname,改成对应的名称:master,node1,node2

vim /etc/hostname

:在这里插入图片描述
修改三台主机hosts文件

vim /etc/hosts

三台都需要添加

192.168.192.137 master
192.168.192.136 node1
192.168.192.138 node2

在这里插入图片描述
将桥接的IPv4流量传递到iptables的链

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 --system 

设置单台主机的静态ip
查看路由表找到网关地址

route -n

在这里插入图片描述
在三台主机上分别配置静态ipv4地址

vim /etc/netplan/00-installer-config.yaml

在这里插入图片描述

network:ethernets:ens33:addresses: [192.168.192.137/24]dhcp4: falsegateway4: 192.168.192.2nameservers:addresses: [192.168.192.2,114.114.114.114]version: 2

使配置的ip地址生效

netplan apply

在三台主机上配置NTP时间同步

(设置时区)
timedatectl set-timezone Asia/Shanghai
apt install ntpdate
ntpdate ntp.ntsc.ac.cn
(查看时间)
hwclock

设置时区后再次执行date查看时间日期最后是否变成了CST。最后为了使得系统日志的时间戳也立即生效,需要执行一下命令重启rsyslog:

sudo systemctl restart rsyslog

关闭swap

vim /etc/fstab

注释掉swap.img none swap sw 0 0这行
在这里插入图片描述

docker 安装
apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -yapt updatecurl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"apt-get install docker-ce docker-ce-cli containerd.io

安装 cri-dockerd因为k8s在1.24移除了Dockershim,所以需要一个支持cri的插件
查看系统下载对应的版本

lsb_release -a

在这里插入图片描述

在这里插入图片描述

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd_0.3.4.3-0.ubuntu-focal_amd64.debdpkg -i cri-dockerd_0.3.4.3-0.ubuntu-focal_amd64.deb# 重载系统守护进程systemctl daemon-reload# 设置cri-dockerd自启动
systemctl enable cri-docker.socket cri-docker# 启动cri-dockerd
start cri-docker.socket cri-docker 
查看cri-docker状态
systemctl status cri-docker.socket

安装 kubectl

#用以下命令下载最新发行版curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"#下载验证该可执行文件
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"基于校验和文件,验证 kubectl 的可执行文件:
echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check验证通过时,输出为:
kubectl: OK安装 kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl验证安装是否成功
kubectl version --client

在这里插入图片描述

安装 kubeadm
····
apt-get update

apt-get install -y apt-transport-https ca-certificates curl

mkdir -p /etc/apt/keyrings/

chmod -R 755 /etc/apt/keyrings

curl -fsSL https://dl.k8s.io/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg

echo “deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main” | sudo tee /etc/apt/sources.list.d/kubernetes.list

apt-get install -y kubelet kubeadm kubectl

apt-mark hold kubelet kubeadm kubectl

#设置kubelet自启动
sudo systemctl enable --now kubelet
····

安装runc
在这里插入图片描述

#安装runc
sudo install -m 755 runc.amd64 /usr/local/bin/runc
#检查是否安装成功
runc -v 

在这里插入图片描述
初始化master(只需要在master执行)

kubeadm init --node-name=master --image-repository=registry.aliyuncs.com/google_containers --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=192.168.192.137 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12--node-name=master 节点名称就是当前主机的hostname
--image-repository=registry.aliyuncs.com/google_containers 设置为阿里镜像
--cri-socket=unix:///var/run/cri-dockerd.sock # 这是指定容器运行时
--apiserver-advertise-address=192.168.56.50 # 为API server设置广播地址,这里选择本机的ipv4地址,这里不希望API SERVER设置在其他node上的话就不要改为其他地址。
--pod-network-cidr=10.244.0.0/16 # 指明 pod 网络可以使用的 IP 地址段,暂时不清楚的可以先不管就用这个值。
--service-cidr=10.96.0.0/12 # 为服务的虚拟 IP 地址另外指定 IP 地址段,暂时不清楚的可以先不管就用这个值。

安装成功会显示
在这里插入图片描述
按提示执行

mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configexport KUBECONFIG=/etc/kubernetes/admin.confexport KUBECONFIG=/etc/kubernetes/admin.conf >> /etc/profilesource /etc/profile

安装配置cni网络插件flannel
在这里插入图片描述

wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.ymlkubectl apply -f kube-flannel.yml

让Node节点加入Master,下面的命令在master安装成功后会有

kubeadm join 192.168.192.137:6443 --token ut7ln6.s8crplgxko21wqyv --discovery-token-ca-cert-hash sha256:495ffbf5e18082d0d88e0c0abb3e68d0a841eef257d8b3a844763efc951e4704

加入后执行

echo "export KUBECONFIG=/etc/kubernetes/kubelet.conf" >> /etc/profilesource /etc/profile

在三台主机上都可以查询节点状态

kubectl get nodes

在这里插入图片描述
查看k8s状态命令

systemctl status kubelet

安装k8s界面(在master执行)

Dashboard

在这里插入图片描述
先下载文件,需要将ClusterIP改成NodePort才能非本地访问

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

修改recommended.yaml

vim recommended.yaml 
在下面位置添加
type: NodePort

在这里插入图片描述
查看 Dashboard 暴露外网端口
在这里插入图片描述
创建账户,生成token

vim dashboard-account.yaml

写入下面内容

apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard---apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard

执行文件

kubectl apply -y dashboard-account.yaml

获取账户token

kubectl -n kubernetes-dashboard create token admin-user

在这里插入图片描述
输入token登录查看
https://192.168.192.137:31711
在这里插入图片描述
在这里插入图片描述
参考文章
http://www.uml.org.cn/yunjisuan/2022051844.asp
https://blog.csdn.net/weixin_39246554/article/details/128123553

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

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

相关文章

【数理知识】三维空间旋转矩阵的欧拉角表示法,四元数表示法,两者之间的转换,Matlab 代码实现

序号内容1【数理知识】自由度 degree of freedom 及自由度的计算方法2【数理知识】刚体 rigid body 及刚体的运动3【数理知识】刚体基本运动,平动,转动4【数理知识】向量数乘,内积,外积,matlab代码实现5【数理知识】最…

Excel设置某列或者某行不某行不可以编辑,只读属性

设置单元格只读的三种方式: 1、通过单元格只读按钮,设置为只为 设置行或者列的只读属性,可以设置整行或者整列只读 2、设置单元格编辑控件为标签控件(标签控件不可编辑) 3、通过锁定行,锁定行的修改。锁定的行与只读行的区别在于锁定的行不…

搭建私有镜像仓库Harbor

目录 系统环境: 安装Docker-Compose 下载并安装Harber 启动Harbor!!! 系统环境: Centos7.9Docker-ce:24 安装Docker-Compose curl -L "https://github.com/docker/compose/releases/download/v2.20…

【SLAM】ORBSLAM34macOS: ORBSLAM3 Project 4(for) macOS Platform

文章目录 配置ORBSLAM34macOS 版本运行步骤:版本修复问题记录:编译 fix运行 fix 配置 硬件:MacBook Pro Intel CPU 系统:macOS Ventura 13.4.1 ORBSLAM34macOS 版本 https://github.com/phdsky/ORB_SLAM3/tree/macOS 运行步骤&…

SpringBoot + Vue 微人事(十二)

职位批量删除实现 编写后端接口 PositionController DeleteMapping("/")public RespBean deletePositionByIds(Integer[] ids){if(positionsService.deletePositionsByIds(ids)ids.length){return RespBean.ok("删除成功");}return RespBean.err("删…

【Hibench 】完成 HDP-Spark 性能测试

🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的…

代理模式概述

1.代理模式概述 学习内容 1)概述 为什么要有 “代理” ? 生活中就有很多例子,比如委托业务,黄牛(票贩子)等等代理就是被代理者没有能力或者不愿意去完成某件事情,需要找个人代替自己去完成这…

mqtt开关实现

这个项目的主要需求其实并不复杂,只是需要让用户可以在小程序上控制预约后的自习室座位的灯和柜子等的开关。这里的关键是需要通过一个网络应用来转发用户对智能硬件的控制请求。 物联网应用的主要几个难点及对应的思路如下: 通信数据量小、通信环境不…

七夕特辑——3D爱心(可监听鼠标移动)

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

【C++】STL---list

STL---list 一、list 的介绍二、list 的模拟实现1. list 节点类2. list 迭代器类(1)前置(2)后置(3)前置- -、后置- -(4)! 和 运算符重载(5)* 解引用重载 和 …

感觉和身边其他人有差距怎么办?

虽然清楚知识需要靠时间沉淀,但在看到自己做不出来的题别人会做,自己写不出的代码别人会写时还是会感到焦虑怎么办? 你是否也因为自身跟周围人的差距而产生过迷茫,这份迷茫如今是被你克服了还是仍旧让你感到困扰? 下…