网站弹出咨询这个怎么做,建同城购物网站经历,电商软件开发平台,网站规划与网页设计案例文章目录 一、虚拟机准备#xff08;一#xff09;主机基本配置#xff08;二#xff09;安装docker#xff08;三#xff09;配置cri-docker环境#xff08;四#xff09;安装kubeadm、kubelet、kubectl#xff08;五#xff09;克隆主机 二、环境配置工作#xff… 文章目录 一、虚拟机准备一主机基本配置二安装docker三配置cri-docker环境四安装kubeadm、kubelet、kubectl五克隆主机 二、环境配置工作一修改主机名二编辑hosts文件三关闭防火墙、selinux、swap四配置同步时间、系统模块五配置SSH免密登录 三、准备容器所需的镜像一查看所需镜像文件二配置daemon.json文件三拉取镜像文件四修改镜像标签五查看镜像结果 四、具体节点配置一初始化Kubernetes集群二部署Pod网络三加入子节点四确保节点Ready状态 五、Kubernetes集群测试一创建mynginx pod二暴露端口三访问nginx 参考资料 根据官方文档总共有三种使用部署工具安装kubernetes的方式分别是使用kubeadm 引导集群、使用kOps安装 Kubernetes、使用Kubespray安装 Kubernetes。 在本次部署设计中采用kubeadm引导集群的方式主要运用了安装kubeadm、对kubeadm进行故障排查、使用kubeadm创建集群。目标是要安装单个控制平面的Kubernetes集群在集群上安装Pod网络以便Pod可以相互连通。 一、虚拟机准备
准备三台预先安装docker、cri-docker环境、kubernetes组件、cri-docker环境的虚拟机。
一主机基本配置
创建虚拟机根据官方文档本次实验在CentOS 8环境下进行主机内存设置4GB处理器个数为4采用NAT网络适配器。 二安装docker
详细安装过程CentOS 8在Linux环境下安装和卸载Docker
1. 安装docker
yum install -y
yum-utils device-mapper-persistent-data lvm22. 设置阿里云源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo3. 安装 Docker Engine-Community
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin4. 设置docker开机自动启动
systemctl enable docker三配置cri-docker环境
1. 提前下载cri-docker环境拖入虚拟机解压缩并移动到指定位置
tar -xf cri-dockerd-0.3.4.amd64.tgz -C /usr/local/
ls /usr/local
mv /usr/local/cri-dockerd/cri-dockerd /usr/local/bin/2. 配置cri-dockerd.service文件
vim /etc/systemd/system/cri-dockerd.service# cri-dockerd.service文件内容[Unit]
DescriptionCRI Interface for Docker Application Container Engine
Documentationhttps://docs.mirantis.com
Afternetwork-online.target firewalld.service docker.service
Wantsnetwork-online.target[Service]
Typenotify
ExecStart/usr/local/bin/cri-dockerd --pod-infra-container-imageregistry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.9 --network-plugincni --cni-conf-dir/etc/cni/net.d --cni-bin-dir/opt/cni/bin --container-runtime-endpointunix:///var/run/cri-dockerd.sock --cri-dockerd-root-directory/var/lib/dockershim --docker-endpointunix:///var/run/docker.sock --cri-dockerd-root-directory/var/lib/docker
ExecReload/bin/kill -s HUP $MAINPID
TimeoutSec0
RestartSec2
Restartalways
StartLimitBurst3
StartLimitInterval60s
LimitNOFILEinfinity
LimitNPROCinfinity
LimitCOREinfinity
TasksMaxinfinity
Delegateyes
KillModeprocess[Install]
WantedBymulti-user.target3. 配置cri-dockerd.socket文件
vim /etc/systemd/system/cri-dockerd.socket# cri-dockerd.socket文件内容[Unit]
DescriptionCRI Docker Socket for the API
PartOfcri-docker.service[Socket]
ListenStream/var/run/cri-dockerd.sock
SocketMode0660
SocketUserroot
SocketGroupdocker[Install]
WantedBysockets.target4. 启动cri-docker服务
systemctl daemon-reload
systemctl start cri-dockerd.service
systemctl enable cri-dockerd.service四安装kubeadm、kubelet、kubectl
kubeadm用来初始化集群的指令。
kubelet在集群中的每个节点上用来启动 Pod 和容器等。
kubectl用来与集群通信的命令行工具。
1. 配置kubernetes的yum源
vim /etc/yum.repos.d/kubernetes.repo# kubernetes.repo文件内容[kubernetes]
name Kubernetes
baseurl https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled 1
gpgcheck 0
repo_gpgcheck 0
gpgkey https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg2. 安装Kubernetes三大组件
dnf install kubelet kubeadm kubectl3. 设置kubectl开机自动启动
systemctl enable kubectl五克隆主机
1. 进入克隆虚拟机向导选择创建完整克隆 2. 根据需要为克隆主机重命名修改存储位置 二、环境配置工作
在三台主机中均要进行如下的环境配置工作
一修改主机名
对三台主机分别修改主机名
hostnamectl set-hostname masterhostnamectl set-hostname slave1hostnamectl set-hostname slave2二编辑hosts文件
1. 查看主机ip地址
ifconfig2. 编辑/etc/hosts文件
vim /etc/hosts# /etc/hosts文件内容127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.211.137 master
192.168.211.136 slave1
192.168.211.138 slave2三关闭防火墙、selinux、swap
1. 关闭防火墙
避免后续需要配置开放端口
systemctl stop firewalld.service
systemctl disable firewalld.service2. 关闭selinux
selinux会限制容器对宿主机文件系统和系统资源的访问权限
setenforce 0
sed -i s/^SELINUXenforcing$/SELINUXpermissive/ /etc/selinux/config3. 关闭swap分区编辑/etc/fstab文件
kubelet要求必须禁用交换分区kubeadm初始化时会检测swap是否关闭
vim /etc/fstab修改/etc/fstab文件内容注释swap行
# /etc/fstab文件内容(局部)# /dev/mapper/cl-swap none swap defaults 0 0四配置同步时间、系统模块
1. 设置本地时区加载RTC设置
确保集群中的各个组件在进行各种操作时具有一致的时间戳
timedatectl set-local-rtc 0
timedatectl set-timezone Asia/Shanghai
hwclock –systohc2. 加载和检查系统模块
确保Kubernetes网络和容器的正常运行
modprobe br_netfilter
lsmod | grep br_netfilter五配置SSH免密登录
配置Kubernetes集群需要在不同的节点之间进行通信和操作配置SSH免密登录能够简化操作避免每次执行操作都需要手动输入密码。
1. 生成新的密钥对
ssh-keygen2. 将公钥复制到目标主机
ssh-copy-id rootmaster
ssh-copy-id rootslave1
ssh-copy-id rootslave23. 检验配置结果
ssh rootmaster
ssh rootslave1
ssh rootslave2三、准备容器所需的镜像
由于无法访问外网不能下载存放在registry.k8s.io上的默认容器镜像这里选择在阿里云上进行拉取镜像然后使用tag命令修改为它需求的镜像标签以下操作在三台主机中都要进行。
一查看所需镜像文件
查看Kubernetes集群需要的镜像
kubeadm config images list二配置daemon.json文件
1. 在阿里云中启用镜像加速器 2. 配置/etc/docker/daemon.json文件 在阿里云操作文档的基础上添加驱动命令修改docker的驱动为systemd使其与与k8s保持一致避免冲突
tee
/etc/docker/daemon.json -EOF
{registry-mirrors:[https://2nd8r72o.mirror.aliyuncs.com],exec-opts:[ native.cgroupdriversystemd ]
}
EOF3. 载入daemon.json文件并重启docker
systemctl daemon-reload
systemctl restart docker三拉取镜像文件
拉取阿里云里所需要的镜像
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.4
docker pull registry.aliyuncs.com/google_containers/kube-controller-manager:v1.28.4
docker pull registry.aliyuncs.com/google_containers/kube-scheduler:v1.28.4
docker pull registry.aliyuncs.com/google_containers/kube-proxy:v1.28.4
docker pull registry.aliyuncs.com/google_containers/pause:3.9
docker pull registry.aliyuncs.com/google_containers/etcd:3.5.9-0
docker pull registry.aliyuncs.com/google_containers/coredns:v1.10.1四修改镜像标签
使用tag修改为需求的镜像标签
docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.28.4 registry.k8s.io/kube-apiserver:v1.28.4
docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.28.4 registry.k8s.io/kube-controller-manager:v1.28.4
docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.28.4 registry.k8s.io/kube-scheduler:v1.28.4
docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.28.4 registry.k8s.io/kube-proxy:v1.28.4
docker tag registry.aliyuncs.com/google_containers/pause:3.9 registry.k8s.io/pause:3.9
docker tag registry.aliyuncs.com/google_containers/etcd:3.5.9-0 registry.k8s.io/etcd:3.5.9-0
docker tag registry.aliyuncs.com/google_containers/coredns:v1.10.1 registry.k8s.io/coredns/coredns:v1.10.1五查看镜像结果
查看本地镜像确认是否有需要的镜像
docker images四、具体节点配置
一初始化Kubernetes集群
1. 在主节点执行初始化的命令
apiserver-advertise-address用来指定API服务器的广播地址。
kubernetes-version指定要安装的Kubernetes版本。
service-cidr指定服务网络的CIDR范围。
pod-network-cidr指定Pod网络的CIDR范围。
ignore-preflight-errorsall忽略所有预检错误。
cri-socket指定容器运行时的UNIX套接字路径。
另外由于前一步骤已经安装了集群所需的镜像在命令进行时会提示镜像已存在而不再拉取故也不再需要设置image-repository的值
kubeadm init \
--apiserver-advertise-address192.168.211.137 \
--kubernetes-version v1.28.4 \
--service-cidr10.96.0.0/12 \
--pod-network-cidr10.244.0.0/16 \
--ignore-preflight-errorsall \
--cri-socketunix:///var/run/cri-dockerd.sock如果报错则输入下面命令恢复原有状态 systemctl stop kubelet
rm -rf /etc/kubernetes/*
systemctl stop docker
rm -rf /var/lib/kubelet/
rm -rf /var/lib/etcd在这一部分出现的主要问题是在前期原本只安装了docker而没有安装cri-dockerd经过查资料发现k8s在1.20.X版本以后就弃用了docker于是临时改用containerd重新在containerd拉取镜像和改标签但在使用中仍有bug无法解决。于是选择安装cri-dockerd再次进行以上命令执行成功。 2. 初始化成功显示以下内容
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/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.211.137:6443 --token ejgoxs.086hnhj7qipovd6v \--discovery-token-ca-cert-hash sha256:6bbe9e754e2b0ab13301e76268c347b9f95b661b2399630ecfa8da9497ca5744 初始化成功后虚拟机卡顿严重通过关闭后提高处理器、内存等配置得以缓解 3. 根据提示运行kubectl
我使用root用户可以直接设置KUBECONFIG环境变量可以让kubectl命令行工具自动找到并使用这个配置文件
export KUBECONFIG/etc/kubernetes/admin.conf二部署Pod网络
部署Pod网络是为了提供容器间和跨节点的网络通信实现网络策略和安全性支持服务发现和负载均衡
1. 进入提示的网站选择flannel网络组件 2. 安装CNI网络插件
根据网站内提示Flannel默认用作 CNI 网络插件部署Flannel时需确保CNI网络插件有安装由于国内访问Github不稳定这里提前下载好插件拖入虚拟机的主目录再进行解压等命令 mkdir -p /opt/cni/bin
tar -C /opt/cni/bin -xzf cni-plugins-linux-amd64-v1.2.0.tgz3. 使用kubectl部署flannel
根据网站内提示提前下载好yml文件拖入虚拟机的主目录再输入命令 kubectl apply -f kube-flannel.yml三加入子节点
1. 在主节点中将kubeconfig环境变量分发到子节点
kubeconfig环境变量指定了kubectl命令使用的kubeconfig文件的路径该文件包含了连接到集群所需的认证和配置信息让子节点上的kubectl命令能够连接到Kubernetes集群的控制平面
scp /etc/kubernetes/admin.conf slave1:/etc/kubernetes/
scp /etc/kubernetes/admin.conf slave2:/etc/kubernetes/设计结束后在官方安装文档上注意到其实建议不要将admin.conf文件与任何人共享应该使用kubeadm kubeconfig user命令为其他用户生成 kubeconfig文件 2. 在两个node节点中输入以下命令
由于同时有containerd和docker在提示的命令基础上加了cri-socket参数指定为cri-dockerd
kubeadm join 192.168.211.137:6443 \
--token ejgoxs.086hnhj7qipovd6v \
--discovery-token-ca-cert-hash sha256:6bbe9e754e2b0ab13301e76268c347b9f95b661b2399630ecfa8da9497ca5744 \
--cri-socketunix:///var/run/cri-dockerd.sock报错则输入下面命令恢复原有状态再根据报错提示进行调整 rm -rf /etc/kubernetes/kubelet.conf
rm -rf /etc/kubernetes/pki/ca.crt
systemctl restart kubelet四确保节点Ready状态
1. 查看节点状态
kubectl get nodes2. 显示NotReady需要修改yml文件
原因是pod之间无法ping通需要让flanneld包发到指定网卡数据包才能正常的经过flannel进行传送
ifconfig
vim kube-flannel.yml在kube-flannel.yml文件第139行加上 - --ifaceens160再次查看显示正确
kubectl get nodes3. 查看命名空间kube-system的pod的状态
kubectl get pods -n kube-system五、Kubernetes集群测试
一创建mynginx pod
创建一个nginx镜像向Kubernetes集群提交一个Pod创建的请求控制平面会根据集群的配置和调度策略在可用的节点上选择一个节点来运行这个Pod。
kubectl create deployment mynginx --imagenginx二暴露端口
创建一个Service资源并将其关联到mynginx Pod将其与集群的外部网络连接起来指定Service的端口为80并使用NodePort类型NodePort类型会在每个节点上选择一个端口将外部流量转发到Service的端口上。
kubectl expose deployment mynginx --port80 --typeNodePort三访问nginx
通过访问任一节点的IP地址和暴露的NodePort端口可以访问到nginx服务说明测试成功
192.168.211.136:30619
192.168.211.138:30619参考资料
Kubernetes 文档 | Kubernetes
【kubernetes】k8s集群搭建完整详解-CSDN博客
K8S简介和安装部署详细教程-CSDN博客
centos7中通过kubeadmin安装k8s集群-CSDN博客
K8S集群部署采坑总结-CSDN博客
通过dockercri-dockerd部署k8s集群环境(含harbor镜像仓库)-CSDN博客
Kubernetes最新版2023.07v1.27.4安装和集群搭建保姆级教程-知乎