iis 网站建设中app建设网站
news/
2025/9/24 3:32:57/
文章来源:
iis 网站建设中,app建设网站,自己做的网站怎么实现结算功能,科学小制作小发明Ubuntu22.04部署K8s集群 一、基础环境准备1.1 VMware Workstation Pro 17.01.2 Ubuntu22.04 二、系统环境配置2.1 设置Master与工作节点的机器名称及配置2.2 解析主机2.3 虚拟内存swap分区关闭2.4 开启IPv4转发2.5 设置时间同步2.6 开启防火墙的端口#xff08;可选#xff0… Ubuntu22.04部署K8s集群 一、基础环境准备1.1 VMware Workstation Pro 17.01.2 Ubuntu22.04 二、系统环境配置2.1 设置Master与工作节点的机器名称及配置2.2 解析主机2.3 虚拟内存swap分区关闭2.4 开启IPv4转发2.5 设置时间同步2.6 开启防火墙的端口可选 三、安装集群所需软件3.1 安装 docker3.2 安装 cri-dockerd 组件3.3 安装 Kubernetes 四、单实例K8s集群部署4.1 Master节点初始化4.2 Worker节点加入集群4.3 安装网络插件flannel 一、基础环境准备
你好 本文实验在Windows11安装的VMware Workstation Pro 17.0上建立3台带Ubuntu22.04操作系统的虚拟机master-100, k8s_worker1, k8s_worker2为环境。
1.1 VMware Workstation Pro 17.0
官网下载 https://www.vmware.com/cn/products/workstation-pro.html 有30天免费试用、度娘或者一键三连评论我给你发许可证
1.2 Ubuntu22.04
https://ubuntu.com/download/desktop 虚拟机配置2核CPU4G内存40G系统盘
安装步骤可以看我的另一篇文章 二、系统环境配置
2.1 设置Master与工作节点的机器名称及配置
##查ubuntu版本
lsb_release -a#IP地址和主机名称修改
hostname $hostname
sudo hostnamectl set-hostname master-100如果在VMware新建虚拟机时设置好了不设也没什么关系。名字也是由你自己改改个不一样的就知道自己在干嘛了。
2.2 解析主机
sudo gedit /etc/hosts
#写入以下内容
192.168.159.129 master-100
192.168.159.130 k8s-worker1
192.168.159.131 k8s-worker2#或者使用这种方式追加
cat /etc/hosts EOF
192.168.159.129 master-100
192.168.159.130 k8s-worker1
192.168.159.131 k8s-worker2
EOF记得换成自己机子IP地址和主机名
2.3 虚拟内存swap分区关闭
# 临时/永久关闭swap
swapoff -a
sed -ri s/.*swap.*/#/ /etc/fstab
#检查
free -m#这一步可能会影响kubeadm init,如果后面初始化失败了可以再检查一下分区是否关闭。Swap total是0才对。
2.4 开启IPv4转发
sudo cat EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOFmodprobe overlay
modprobe br_netfiltersudo cat EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables 1
net.bridge.bridge-nf-call-ip6tables 1
net.ipv4.ip_forward 1
EOFsudo sysctl --system有什么作用 开启这些设置使通过网桥的数据包由主机系统上的iptables规则处理默认关闭设置为1则开启
2.5 设置时间同步
sudo apt install -y chrony
sudo systemctl restart chrony
sudo systemctl status chrony
chronyc sourceschrony是一个开源自由的网络时间协议 NTP 的客户端和服务器软软件。它能让计算机保持系统时钟与时钟服务器NTP同步因此让你的计算机保持精确的时间chrony也可以作为服务端软件为其他计算机提供时间同步服务。
2.6 开启防火墙的端口可选
# kube-apiserver的安全端口6443
# 用于接收认证授权的HTTPS请求,对外服务
sudo ufw enable
sudo ufw allow 6443
sudo ufw statusenable做完需要重启ubuntu建议先不做。 ubuntu的ufw默认是disable的网上有教程直接关闭整个防火墙 我看到有教程说关闭防火墙会在kubeadm过程中出现超时现象但我没遇到 如果enable了想要远程连接ssh记得把22端口也allow一下 三、安装集群所需软件
上面初始化配置完成后下面开始安装docker
3.1 安装 docker
#1.卸载旧版本(if need)
sudo apt-get remove docker docker-engine docker.io containerd runc#2.更新apt包索引并安装包以允许apt在HTTPS上使用存储库
sudo apt-get install -y \apt-transport-https \ca-certificates \
curl \gnupg-agent \software-properties-common#3.添加Docker官方GPG密钥 # -fsSLapt-key list可以查看已安装的密钥
curl https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -#4.设置稳定存储库
sudo add-apt-repository \
deb [archamd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \stable#5.安装特定版本的Docker引擎请在repo中列出可用的版本
apt-cache madison docker-ce#6.如果想要跟我的版本就在这一步装对应的一般来说直接装最新的问题不大遇到问题再解决
sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io#7.修改仓库镜像以及docker启动项---docker的cgroup在这里设置成了systemd
mkdir -vp /etc/docker/
sudo tee /etc/docker/daemon.json -EOF
{
registry-mirrors: [
https://docker.mirrors.ustc.edu.cn,
https://hub-mirror.c.163.com,
https://reg-mirror.qiniu.com,
https://registry.docker-cn.com
],
exec-opts: [native.cgroupdriversystemd]
}#8.保存退出更新设置
sudo systemctl daemon-reload
sudo systemctl start docker
sudo systemctl enable docker#9.查看docker版本和状态
sudo docker version
sudo systemctl status docker3.2 安装 cri-dockerd 组件
Docker 本身是一个容器运行时(Container Runtime)它负责管理容器的生命周期包括创建、启动、停止和销毁等操作。然而Docker 运行时在设计上并不符合 K8s 等容器编排工具的要求因此需要使用 CRI (Container Runtime Interface) 来与容器编排工具进行交互。
组件地址https://github.com/Mirantis/cri-dockerd/releases下载本文对应的版本或者最新版本虚拟机网络好的可以直接在系统里面下。或者主机下载好用winSCP传进去。 注意Ubuntu应该下载deb包CentOS是rpm包。
#1. 安装cri-dockerd
sudo dpkg -i cri-dockerd_0.3.4.3-0.ubuntu-jammy_amd64.deb#2. 调整启动参数
sudo sed -i -e s#ExecStart.*#ExecStart/usr/bin/cri-dockerd --container-runtime-endpoint --network-plugincni --pod-infra-container-imageregistry.aliyuncs.com/google_containers/pause:3.7#g /lib/systemd/system/cri-docker.service实验时两个worker从节点的cri-docker启动后日志一直都有输出报错所以这个参数我查了很久很多资料也有建议–network-plugin可以先不写cni的也没说原因…
#3. 设置开机自启动和查看cri-docker状态
sudo systemctl daemon-reload
sudo systemctl enable cri-dockersudo systemctl status cri-docker报错提示 使用sudo systemctl status cri-docker 查看状态的时候不止要留意是否running还要下面最新的输出日志有没有报错。 启动之后的此报错可能要把master的flanned复制过去原因未知。 https://blog.csdn.net/qq_45323089/article/details/129626414 3.3 安装 Kubernetes
#1.安装依赖
sudo apt-get install -y apt-transport-https ca-certificates curl#2.安装GPG密匙
#参考一
# 阿里云
# 下载 gpg 密钥 这个需要root用户否则会报错
sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
# 添加 k8s 镜像源 这个需要root用户否则会报错
sudo cat EOF /etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF# 华为云和阿里云二选一
# 下载 gpg 密钥华为云
curl http://mirrors.huaweicloud.com/kubernetes/yum/doc/apt-key.gpg | apt-key add -
# 添加 k8s 镜像源华为云
cat EOF /etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.huaweicloud.com/kubernetes/apt/ kubernetes-xenial main
EOF记录一下参考二这个是官网给的命令换成aliyun的也是我参考教程里提供的但是在第3步执行更新的时候会报错说我的the public key is not available: NO_PUBKEY XXXXXXXX然后我参考网上各种解决这个问题的办法尝试了都还是不行。主要也是看到官网给的命令格式就是这样的完全没怀疑过是写进去的配置文件的内容有问题。后面我改了发现可以之后也很惊讶可能是这个sign by的问题也可能是没有完全按照官网给的命令。 官网手册链接https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
#参考二
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpgsudo echo deb [signed-by/usr/share/keyrings/kubernetes-archive-keyring.gpg] http://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main | sudo tee /etc/apt/sources.list.d/kubernetes.list#3. 更新软件源
sudo apt-get update#4. 查看Kubernetes可用版本
apt-cache madison kubeadm#5. 安装三件套
sudo apt-get install -y kubelet1.27.0-00 kubeadm1.27.0-00 kubectl1.27.0-00
# Ubuntu使用不同的软件源对软件版本的命名会有所不同aliyun的源在结尾会有 -00下载对应版本的kubernetes组件#6. 标记软件包防止自动更新
sudo apt-mark hold kubelet kubeadm kubectl#7. 配置kubelet
mkdir /etc/sysconfig
sudo gedit /etc/sysconfig/kubelet
#复制以下内容,保存退出
KUBELET_KUBEADM_ARGS--container-runtimeremote --container-runtime-endpoint/run/cri-dockerd.sock“#8. 启动kubelet
systemctl enable --now kubelet#9. 如果这个时候手贱想看一下kubelet的状态
systemctl status kubelet结果显示如下 3月 25 14:32:19 westwell systemd[1]: kubelet.service: Main process exited, codeexited, status255/n/a 3月 25 14:32:19 westwell systemd[1]: kubelet.service: Unit entered failed state. 3月 25 14:32:19 westwell systemd[1]: kubelet.service: Failed with result ‘exit-code’.
经网上查阅重新安装或第一次安装k8s未经过kubeadm init 或者 kubeadm join后kubelet会不断重启这个是正常现象……执行init或join后问题会自动解决对此官网有如下描述也就是此时不用理会kubelet.service。
“The kubelet is now restarting every few seconds, as it waits in a crashloop for kubeadm to tell it what to do. This crashloop is expected and normal, please proceed with the next step and the kubelet will start running normally.”
备注journalctl -xefu kubelet 可查看systemd 日志查看具体报错信息。 参考链接https://blog.csdn.net/u010420283/article/details/105095811 以上内容是所有节点都要执行的下面的操作步骤会分master节点和Node节点 四、单实例K8s集群部署
4.1 Master节点初始化
#1. 查看初始化需要的镜像
sudo kubeadm config images list --image-repository registry.aliyuncs.com/google_containers#2. 拉取镜像
sudo kubeadm config images pull --image-repositoryregistry.aliyuncs.com/google_containers --cri-socket unix:///run/cri-dockerd.sock#3.初始化节点,注意endpoint要写你自己的master机子的IP
sudo su
sudo kubeadm init --control-plane-endpoint192.168.159.129 --kubernetes-versionv1.27.0 --pod-network-cidr10.244.0.0/16 --service-cidr10.96.0.0/12 --token-ttl0 --cri-socket unix:///run/cri-dockerd.sock --upload-certs --image-repository registry.aliyuncs.com/google_containers一般有问题都集中在这一步了体现的 如果你init失败后想再尝试需要reset一下或者你把它报错说already的文件都删了再重启一下
kubeadm reset --cri-socket unix:///run/cri-dockerd.sock报错提示 kubernetes failed to create kubelet: misconfiguration: kubelet cgroup driver: “cgroupfs” is differen…
看下docker和k8s用的是不是同一个。前面安装docker有设置cgroups是systemd
kubelet修改方法 方法一修改下面的文件我用的
vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
#添加新字符串
#EnvironmentKUBELET_CGROUP_ARGS--cgroup-driversystemd
#将 $KUBELET_CGROUP_ARGS 变量添加到 ExecStart 部分
#无论哪个方法改完记得重启
systemctl daemon-reload
systemctl restart kubelet改好之后长这样可以参考一下 参考资料https://www.javaroad.cn/questions/33906
方法二我没试过
在 /etc/sysconfig/kubelet 文件中修改 --cgroup-driver 参数。 例如修改为 --cgroup-driversystemd 还有你们遇到报错网上找资料的时候要认真看下别人用的是不是cri-docker还是用的containerd 作为CRI自己用containerd的可以参考一下 https://www.cnblogs.com/wod-Y/p/17043985.html http://tihar-tech.cn/?p2675#qi_yongcontainerd_zuo_weiCRI 当你成功后记住最后kubeadm join那条指令后续用于node节点加入集群。
#4.配置环境变量在su环境下
export KUBECONFIG/etc/kubernetes/admin.conf
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#这个环境变量如果我没理解错是用来使用kubectl指令的如果你要worker节点也可以用就把admin.conf弄过去还有一步是安装网络插件flannel或者一众你在网上搜到的不过我经验之谈最后再做就是先把集群搭好。
#5.查看master节点状态如果你没装flannel现在就是NotReady的状态
kubectl get nodes4.2 Worker节点加入集群
#利用前面保存的命令加入集群
#末尾加上–cri-socket unix:///run/cri-dockerd.sock
kubeadm join 192.168.159.129:6443 --token 4pbkph.rlxyn0okw1x90k1v \--discovery-token-ca-cert-hash sha256:b61fdd230becdda0ead34d861e857836c91494a68fee00a24c6eca993767896a--cri-socket unix:///run/cri-dockerd.sock如果你前面搞了那个admin.conf,不然就回master节点查可以看到集群已经搭好只是都是Not Ready的
kubectl get nodes4.3 安装网络插件flannel
#这一步所有机子都要
wget https://github.com/flannel-io/flannel/releases/download/v0.20.1/flanneld-amd64
sudo mkdir /opt/bin
sudo cp flanneld-amd64 /opt/bin/flanneld
sudo chmod x /opt/bin/flanneld#这一步只需要主机执行
sudo kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml# 或者建议分成几步做# 下载flannel插件的yml
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml# 修改kube-flannel.yml中的镜像仓库地址为国内源
sed -i s/quay.io/quay-mirror.qiniu.com/g kube-flannel.yml# 安装网络插件
kubectl apply -f kube-flannel.yml如果发现执行的时候报错可以配置一下hostname。
最后见证奇迹的时候打完收工可能要等几分钟如果你等了5分钟以上都没好恭喜你可以到最下面找答案了
kubectl get nodes常见错误网上整理的有点旧了可以参考一下不保真 https://blog.csdn.net/qq_34857250/article/details/82562514 “command failed” err“failed to load kubelet config file, error: failed to load Kubelet config file /var/lib/kubelet/config.yaml, error failed to read kubelet config file “/var/lib/kubelet/config.yaml”, error: open /var/lib/kubelet/config.yaml: no such file or directory, path: /var/lib/kubelet/config.yaml” 解决办法执行kubeadm init就会生成相应的配置文件 Found multiple CRI endpoints on the host. Please define which one do you wish to use by setting the ‘criSocket’ field in the kubeadm configuration file: unix:///var/run/containerd/containerd.sock, unix:///var/run/cri-dockerd.sock To see the stack trace of this error execute with --v5 or higher 解决办法加选项指定使用的CRI Error getting node err“node “k8s-master01” not found” 解决办法这种情况是apiserver-advertise-address地址有误 kubeadm config print init-defaults kubenetes-init-config vim kubenetes-init-config
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914730.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!