企业建站公司电话,20元备案域名,宁波网络推广产品服务,免费推广网站建设一、 服务器环境及初始化
1、架构分析
集群角色主机名操作系统IP地址masterk8s-masterOpenEuler24.03192.168.166.128nodek8s-node1OpenEuler24.03192.168.166.129nodek8s-node2OpenEuler24.03192.168.166.130
2、初始化
所有节点都需要初始化#xff01;
2.1、清空Iptal…一、 服务器环境及初始化
1、架构分析
集群角色主机名操作系统IP地址masterk8s-masterOpenEuler24.03192.168.166.128nodek8s-node1OpenEuler24.03192.168.166.129nodek8s-node2OpenEuler24.03192.168.166.130
2、初始化
所有节点都需要初始化
2.1、清空Iptales默认规则及关闭防火墙
iptables -t nat -F
iptables -t filter -F
systemctl disable --now firewalld2.2、关闭SELINUX
setenforce 0
sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config 2.3、关闭Swap交换空间
swapoff -a
sed -i s/.*swap.*/#/ /etc/fstab
2.4、设置主机名
hostnamectl set-hostname k8s-masterhostnamectl set-hostname k8s-node1hostnamectl set-hostname k8s-node2 2.5、编写hosts文件
vim /etc/hosts
cat EOF /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.166.128 k8s-master
192.168.166.129 k8s-node1
192.168.166.130 k8s-node2
EOF###拷贝到node节点
scp /etc/hosts 192.168.166.129:/etc
scp /etc/hosts 192.168.166.130:/etc2.6、设置内核参数
注意安装完成docker-ce并启动之后方可设置
vim /etc/sysctl.conf
cat EOF /etc/sysctl.conf
net.ipv4.ip_forward1
net.bridge.bridge-nf-call-ip6tables 1
net.bridge.bridge-nf-call-iptables 1
EOFmodprobe br_netfilter
sysctl net.bridge.bridge-nf-call-ip6tables1
sysctl net.bridge.bridge-nf-call-iptables1sysctl -p
二、安装Docker环境
所有节点都需要安装
1、安装Docker
1.1、配置阿里源
[rootlocalhost yum.repos.d]#
cat EOF /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
nameDocker CE Stable - $basearch
baseurlhttps://mirrors.aliyun.com//docker-ce/linux/centos/9/x86_64/stable/
enabled1
gpgcheck1
gpgkeyhttps://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF
1.2、安装docker
yum install -y docker-ce
1.3、启动docker
systemctl enable --now docker 2、安装cri-docke
下载地址https://github.com/Mirantis/cri-dockerd/releases
yum install -y libcgroup
rpm -ivh cri-dockerd-0.3.8-3.el8.x86_64.rpm
三、安装kubeadm和kubectl
所有节点都需要安装
1、配置yum源
cat EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
nameKubernetes
baseurlhttps://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled1
gpgcheck1
gpgkeyhttps://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF
2、安装
yum install -y kubelet kubeadm kubectl
3、设置kubectl开机自启动
systemctl enable kubelet systemctl start kubelet
4、启动kubeadm和kubectl命令补齐功能
source (kubeadm completion bash)
source (kubectl completion bash)echo -e source (kubeadm completion bash)\nsource (kubectl completion bash) /root/.bashrc
source /root/.bashrc
四、部署Master节点
在k8s-master节点执行下述命令
kubeadm init --apiserver-advertise-address192.168.166.128 --image-repositoryregistry.aliyuncs.com/google_containers --kubernetes-versionv1.28.15 --pod-network-cidr10.244.0.0/16 --service-cidr10.96.0.0/12 --cri-socketunix:///var/run/cri-dockerd.sock命令解析--apiserver-advertise-address指定 API Server 监听的 IP 地址。如果没有设置则将使用默认的网络接口。--image-repository指定镜像仓库地址。默认值为“registry.k8s.io”但该仓库在中国无法访问因此这里指定阿里云仓库。--kubernetes-version指定 Kubernetes 版本。--pod-network-cidr指定 Pod 网络的 CIDR 地址范围。--service-cidr指定 Service 网络的 CIDR 地址范围。--cri-socket指定 kubelet 连接容器运行时的 UNIX 套接字文件。执行命令后kubeadm 会执行一系列任务具体如下
[preflight]该阶段执行一系列检查验证当前系统环境是否满足 Kubernetes 的安装要求包括CPU 和内存是否满足最低要求。网络是否正常。操作系统版本是否满足要求。容器运行时是否可以连接。内核参数是否正确配置。下载所需的容器镜像。[certs]生成 Kubernetes 组件所需的 HTTPS 证书和密钥并将其存储到“/etc/ kubernetes/pki”目录中。[kubeconfig]生成 kubeconfig 文件其中包含 API Server 地址、客户端证书等信息并将其存储在“/etc/kubernetes”目录中。[kubelet-start]生成 kubelet 配置文件“/var/lib/kubelet/config.yaml”并启动 kubelet服务。[control-plane]为 kube-apiserver、kube-controller-manager 和 kube-scheduler 创建静态 Pod 资源文件并将其存储到“/etc/kubernetes/manifests”目录中。[etcd]为 etcd 创建静态 Pod 资源文件并将其存储在“/etc/kubernetes/manifests”目录中。[wait-control-plane]等待 kubelet 从目录“/etc/kubernetes/manifest”中以静态 Pod的形式启动 Master 组件。[apiclient]检查 Master 组件是否健康。[upload-config]将 kubeadm 配置存储在 ConfigMap 对象中。[kubelet]将 kubelet 配置存储在 ConfigMap 对象中。[upload-certs]提示用户跳过证书上传。[mark-control-plane]给 Master 节点添加标签和污点。[bootstrap-token]生成引导令牌供 Node 节点在加入集群时使用。[kubelet-finalize]更新 kubelet 配置文件/etc/kubernetes/kubelet.conf。[addons]安装 CoreDNS 和 kube-proxy 插件。
出问题后集群还原
kubeadm reset --cri-socketunix:///var/run/cri-dockerd.sock
注意保存证书文件
每个人的证书是不一致的注意查看自己的证书。
为本人输出指令后得到
kubeadm join 192.168.166.128:6443 --token 5rmwwf.ocgwzx6evxwvcaet \--discovery-token-ca-cert-hash sha256:cf77f1977c11d90758acb6dc6546e922ab21fe76a87385b7ce412fb0c22f142a
配置管理集群文件
mkdir -p $HOME/.kube
cd /root/.kube
cp /etc/kubernetes/admin.conf ./config###查看集群状态
kubectl get nodes
五、部署node节点
分别在k8s-node1和k8s-node2中执行
kubeadm join 192.168.166.128:6443 --token uz36v1.szquumxe2nq58abq \--discovery-token-ca-cert-hash sha256:bfa0dc7f33c37616cdb76b20eaf92ef900c03bd35b59be120ce80afb5b00a5d1 --cri-socketunix:///var/run/cri-dockerd.sock借由master 主机凭证
kubeadm join 192.168.166.128:6443 --token uz36v1.szquumxe2nq58abq \--discovery-token-ca-cert-hash sha256:bfa0dc7f33c37616cdb76b20eaf92ef900c03bd35b59be120ce80afb5b00a5d1 --cri-socketunix:///var/run/cri-dockerd.sock
查看集群状态
[rootk8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master NotReady control-plane 2d16h v1.28.15
k8s-node1 NotReady none 2d16h v1.28.15
k8s-node2 NotReady none 2m14s v1.28.15目前看到的是NotReady状态是由于没有安装网络插件的原因。ROLES角色一栏显示“none”可以通过一下命令修改角色名称
kubectl label node k8s-master node-role.kubernetes.io/mastermaster
kubectl label node k8s-node1 node-role.kubernetes.io/workerworker
kubectl label node k8s-node2 node-role.kubernetes.io/workerworker