您要在CentOS 7/CentOS 8上为您的开发项目设置一个三节点Kubernetes集群:1个主节点和两个或多个Worker节点?本指南将引导您完成在运行并配置了防火墙的Ansible和Calico CNI的CentOS 8/CentOS 7 Linux机器上设置Kubernetes群集的步骤。Kubernetes(K8s)是一个开源系统,用于自动化容器化应用程序的部署、扩展和管理。首先,请确保系统已更新,并安装所有依赖项,包括容器运行时,Kubernetes软件包以及为k8配置防火墙。我的实验室基于以下环境:
步骤1:设定标准要求 我写了一个Ansible角色来进行标准的Kubernetes节点准备工作,该角色包含以下任务: 安装所需的基本软件包。 设置标准系统要求,禁用交换,修改sysctl,禁用SELinux。 安装和配置您选择的容器运行时,cri-o,Docker,Containerd。 安装Kubernetes软件包,kubelet,kubeadm和kubectl。 在Kubernetes主节点和工作节点上配置Firewalld。 访问我的Github页面进行设置:https://github.com/jmutai/k8s-pre-bootstrap 这是我最近执行的输出:
步骤2:初始化单节点控制平面 此部署适用于具有集成etcd的单个控制平面节点。 我们将使用kubeadm引导符合最佳实践的最小可行Kubernetes集群,kubeadm的好处是它支持其他集群生命周期功能,例如升级、降级和管理引导令牌。 单控制节点引导程序要求: 控制节点机器的默认IP地址。 DNS名称/负载平衡器IP(如果以后计划添加更多控制节点)。 以root用户或sudo用户的身份进行SSH访问。 登录到控制节点: $ ssh user@k8smaster01 检查可用于初始化Kubernetes集群的参数: $ kubeadm init --help 我们将使用的标准参数为: --pod-network-cidr:用于指定Pod网络的IP地址范围。 --apiserver-advertise-address:API服务器将通告其正在监听的IP地址。 --control-plane-endpoint:为控制平面指定一个稳定的IP地址或DNS名称。 --upload-certs:将控制平面证书上传到kubeadm-certs Secret。 如果使用Calico,建议的Pod网络为:192.168.0.0/16。 对于Flannel,建议将Pod网络设置为10.244.0.0/16。 对我来说,我将运行以下命令: sudo kubeadm init \ --apiserver-advertise-address=192.168.122.10 \ --pod-network-cidr 192.168.0.0/16 \ --upload-certs 为了能够将单个控制平面kubeadm集群升级到高可用性,您应该指定–-control-plane-endpoint来设置所有控制平面节点的共享端点,这样的端点可以是负载均衡器的DNS名称或IP地址: kubeadm init \ --apiserver-advertise-address=192.168.122.227 \ --pod-network-cidr 192.168.0.0/16 \ --control-plane-endpoint <DNS-End-Point> --upload-certs 这是我的安装输出:
复制kubectl配置文件: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config 参考:安装及使用kubectl、kubectx和kubens轻松管理多个Kubernetes集群。 下面是将Pod网络部署到集群。 我将使用Calico,但您可以自由使用您选择的任何其他Pod Network插件: kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml 如下面的输出所示,这将创建许多资源:
使用以下命令确认所有Pod正在运行: watch kubectl get pods --all-namespaces 一旦一切都按预期运行,输出将如下所示:
请注意,每个窗格都有正在运行状态,即上图中的STATUS是Running。
步骤3:将工作节点加入集群 现在您已经准备好控制节点,您可以添加将在其中运行工作负载(容器和Pod等)的新节点,您需要在用于运行Pod的每台计算机上执行此操作。 1、SSH到机器 $ ssh user@workermachine 2、运行kubeadm init输出的命令,例如: sudo kubeadm join 192.168.122.10:6443 --token nx1jjq.u42y27ip3bhmj8vj \ --discovery-token-ca-cert-hash sha256:c6de85f6c862c0d58cc3d10fd199064ff25c4021b6e88475822d6163a25b4a6c 如果令牌已过期,则可以使用以下命令生成一个新令牌: kubeadm token create 获取令牌: kubeadm token list 您可以使用以下命令获取Discovery-token-ca-cert-hash的值: openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' 这是一个连接命令输出:
在所有其他Worker节点上运行相同的join命令,然后查看使用以下命令加入集群的可用节点: $ kubectl get nodes
步骤4:将Metrics Server部署到Kubernetes集群 Metrics Server是资源使用情况数据的群集范围内的聚合器,它从摘要API收集指标,该摘要API由Kubelet在每个节点上公开,使用下面的指南进行部署: 将Metrics Server部署到Kubernetes集群。 至此,您现在有了一个正在运行的Kubernetes集群,可以用来开发Cloud本机应用程序。
相关主题 |