K8S-单Master集群部署-OpenEuler

目录

一、 服务器环境及初始化

1、架构分析

2、初始化(所有节点都需要初始化!)

清空Iptales默认规则及关闭防火墙

设置内核参数,注意:安装完成docker-ce并启动之后方可设置!

二、安装Docker环境;所有节点都需要安装!

1、安装Docker

安装cri-docker(编译安装)

安装libcgroup

三、安装kubeadm和kubectl;所有节点都需要安装!

配置yum源

安装

设置kubectl开机自启动

四、部署Master节点

配置管理集群文件

五、部署node节点

查看集群状态kubectl get nodes 

目前看到的是NotReady状态,是由于没有安装网络插件的原因。ROLES角色一栏显示“none”,可以通过一下命令修改角色名称:

六、部署网络插件

安装calico组件的相关镜像calico.tar、calico.apiserver.tar(需要自行下载)

分别加载两个镜像包

docker load -icalico.tar

考入calico文件

考入custom-resources.yaml  和 tigera-operator.yaml

读取文件

修改另一个配置文件

读取修改的文件

查看是否运行


一、 服务器环境及初始化

1、架构分析

集群角色主机名操作系统IP地址
mastermasterOpenEuler24.03192.168.33.30
nodenode1OpenEuler24.03192.168.33.31
nodenode2OpenEuler24.03192.168.33.32

2、初始化(所有节点都需要初始化!

  • 清空Iptales默认规则及关闭防火墙

iptables -t nat -F                             #清除nat表中所有网络地址转换规则

iptables -t filter -F                           #清除filter表中的数据包过滤规则

systemctl disable --now firewalld  #关闭防火墙并开机不自启

  • 关闭SELINUX

setenforce 0                                     #关闭安全上下文

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config   #完全关闭

  • 关闭Swap交换空间

swapoff -a                                         #关闭交换空间
sed -i 's/.*swap.*/#&/' /etc/fstab        #注释所有交换空间挂载配置

  • 设置主机名

hostnamectl set-hostname master

hostnamectl set-hostname node1

hostnamectl set-hostname node2

  • 编写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.33.31    master
192.168.33.31    node1
192.168.33.32   node2
EOF

###拷贝到node节点
scp /etc/hosts 192.168.33.31:/etc
scp /etc/hosts 192.168.33.32:/etc

  • 设置内核参数,注意:安装完成docker-ce并启动之后方可设置!

vim /etc/sysctl.conf

net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

modprobe br_netfilter
sysctl net.bridge.bridge-nf-call-ip6tables=1
sysctl net.bridge.bridge-nf-call-iptables=1

sysctl -p

二、安装Docker环境;所有节点都需要安装!

1、安装Docker

  • 配置阿里源

vim、/etc/yum.repos.d/docker-ce.repo

cat << EOF >> /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com//docker-ce/linux/centos/9/x86_64/stable/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF

  • 安装docker

yum install -y docker-ce

  • 启动docker

systemctl enable --now docker

  • 安装cri-docker(编译安装)

  • 安装libcgroup

yum install -y libcgroup

  • 修改CRI启动脚本

vim /usr/lib/systemd/system/cri-docker.service

--pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9

  • 启动cri并设开机自启

systemctl daemon-reload
systemctl enable --now cri-docker

三、安装kubeadm和kubectl;所有节点都需要安装!

  • 配置yum源

cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF

  • 安装

yum install -y kubelet kubeadm kubectl

  • 设置kubectl开机自启动

systemctl enable kubelet && systemctl start kubelet

四、部署Master节点

在k8s-master节点执行下述命令生成证书:

kubeadm init --apiserver-advertise-address=192.168.33.30 --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version=v1.28.15 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --cri-socket=unix:///var/run/cri-dockerd.sock

  • 证书有效时24小时,超时后重新生成
kubeadm token create --print-join-command
  • 配置管理集群文件

mkdir .kube

cp /etc/kubernetes/admin.conf  /.kube/config

五、部署node节点

分别在k8s-node1和k8s-node2中执行:

kubeadm join 192.168.33.30:6443 --token won2ai.l42m4yaopcodx95u --discovery-token-ca-cert-hash sha256:9ffef3874fba3439ecd915597f79aff21f275ea6edfe2cb99f8e14517a27b376   --cri-socket=unix:///var/run/cri-dockerd.sock

  • 查看集群状态
    kubectl get nodes 

  • 目前看到的是NotReady状态,是由于没有安装网络插件的原因。ROLES角色一栏显示“none”,可以通过一下命令修改角色名称:

kubectl label node k8s-master node-role.kubernetes.io/master=master
kubectl label node k8s-node1 node-role.kubernetes.io/worker=worker
kubectl label node k8s-node2 node-role.kubernetes.io/worker=worker

六、部署网络插件

安装calico组件的相关镜像calico.tar、calico.apiserver.tar(需要自行下载)

  • 分别加载两个镜像包

docker load -icalico.tar

docker load -i calico-apiserver.tar

  • 考入calico文件

考入custom-resources.yaml  和 tigera-operator.yaml

  • 读取文件

kubectl create -f tigera-operator.yaml 

  • 修改另一个配置文件

vim custom-resources.yaml 

修改cidr “ip”

改为与“kubeadm init”命令中指定的 Pod 网络CIDR 地址范围保持一致

  • 读取修改的文件

kubectl create -f custom-resources.yaml 

  • 查看是否运行

kubectl -n tigera-operator get pod

### 在两台 openEuler 服务器上搭建 Kubernetes 集群 以下是基于 openEuler 系统的解决方案,适用于两台服务器上的 Kubernetes (K8S) 集群部署。此方案结合了之前的讨论以及新的引用内容[^1][^2]。 --- #### 环境准备 在开始之前,请确保以下条件已经满足: - **操作系统**: 使用 openEuler 22.03 LTS 或更新版本。 - **硬件要求**: - 每台服务器至少配备 2GB RAM 和 2 个 CPU 核心。 - 至少预留 30GB 的磁盘空间供系统和容器使用。 - **网络配置**: - 所有节点之间可以通过内部网络通信。 - 如果需要从公共仓库拉取镜像,则需具备外网连接能力。 | 角色 | IP 地址 | 主机名 | |------------|------------------|-------------| | Master | 192.168.200.120 | k8s-master | | Worker | 192.168.200.121 | k8s-worker | --- #### 步骤一:初始化环境 在所有节点上完成以下操作以准备好基础环境[^1]: 1. 更新系统软件包并安装必要工具: ```bash sudo yum update -y && sudo yum install -y wget net-tools vim git ``` 2. 关闭 SELinux 和防火墙干扰: ```bash sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config sudo systemctl stop firewalld && sudo systemctl disable firewalld ``` 3. 安装 Docker CE 并启用服务: ```bash sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/openEuler/docker-ce.repo sudo yum makecache fast sudo yum install -y docker-ce containerd.io sudo systemctl enable --now docker ``` 4. 修改 Docker Cgroup Driver 为 systemd(推荐): 编辑 `/etc/docker/daemon.json` 文件,添加以下内容: ```json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } ``` 重启 Docker 生效: ```bash sudo systemctl restart docker ``` 5. 添加 Kubernetes YUM 源并安装相关组件: 创建文件 `/etc/yum.repos.d/kubernetes.repo`,写入以下内容: ```ini [kubernetes] name=Kubernetes Repository baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg ``` 安装所需工具: ```bash sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes sudo systemctl enable --now kubelet ``` --- #### 步骤二:初始化 Master 节点 在 `k8s-master` 上执行以下命令来初始化主节点[^2]: ```bash sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 这一步会生成一个加入令牌,记录下来以便稍后让 worker 节点加入集群。 接着,配置本地 kubeconfig 文件: ```bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ``` 验证当前集群状态: ```bash kubectl cluster-info kubectl get nodes ``` --- #### 步骤三:部署 Pod 网络插件 选择 Flannel 插件作为默认网络方案: ```bash kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 等待几分钟直到核心 DNS Pods 启动完毕: ```bash kubectl get pods --all-namespaces ``` --- #### 步骤四:加入 Worker 节点 在 `k8s-worker` 上通过之前获取的令牌将其注册为主节点的一部分。例如: ```bash sudo kubeadm join 192.168.200.120:6443 --token <your-token> --discovery-token-ca-cert-hash sha256:<hash-value> ``` 完成后再次检查节点列表确认新成员已上线: ```bash kubectl get nodes ``` 此时应该能看到两个健康的状态标记为 Ready 的节点。 --- #### 注意事项 - 若遇到任何错误日志,请妥善保存并通过调试工具进一步排查问题. - 建议定期备份 `/etc/kubernetes/pki/*` 中的关键证书以防丢失影响恢复能力. --- ### 提升可用性的额外建议 如果希望提高集群的高可用性,可以考虑引入 etcd 多副本机制或者扩展 master 节点数量至三个以上形成 HA 架构[^2]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值