Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件

简介: Kubernetes学习-集群搭建篇(二) 部署Node服务,启动JNI网络插件

image.png

1. 前言

我们在上一篇文章完成了Matster结点的部署,这次我们接着来部署Node服务,注意,我Node服务是部署在另外两台服务器

2. 部署Node服务

部署Node服务与Master服务的前置环境也是类似的

2.1. 前置环境安装

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

关闭 selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 临时

关闭swap,关闭完swap后要重启一遍机器!

swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

根据规划设置主机名

hostnamectl set-hostname 这里填你的主机名(随便起,比如k8s-node1)

将桥接的IPv4流量传递到iptables的链

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF


让上述配置生效

sysctl --system

同步机器时间

yum install ntpdate -y
ntpdate time.windows.com

安装docker(使用官方的自动脚本)

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

启动docker

sudo systemctl start docker

添加阿里云镜像源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[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.gpg
EOF

安装kubeadm、kubelet、kubectl

yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6
 
systemctl enable kubelet

配置关闭 Docker 的 cgroups(不关闭后面启动会报错),修改 /etc/docker/daemon.json(如果没有这个文件就手动创建),加入以下内容

{"exec-opts": ["native.cgroupdriver=systemd"]}

重启docker

systemctl daemon-reload
systemctl restart docker

2.2. 将Node服务加入集群

在Master服务器获取token,保存这个token,我们后面要用到

# 如果 token 已经过期,就重新申请
kubeadm token create
# token 没有过期可以通过如下命令获取
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/^.* //'

将Node服务加入集群

kubeadm join master服务ip:6443 --token 换成上面获取到的token --discovery-token-ca-cert-hash sha256:换成上面获取到的hash值(sha256:别删)

在Matser校验Node是否加入了集群

kubectl get nodes

3. 部署JNI网络插件

细节的小伙伴可能会发现,我们几个结点的状态都是NotReady

我们接着输入kubectl get pods命令查看集群中的pod,发现提示没有发现任何资源在命名空间中


我们接着输入kubectl get pods -n kube-system 去查看系统pod运行情况,可以看到前两个pod状态不为Running,这里就是因为pod没有网络引起的,所以我们需要安装CNI网络插件来解决这个问题


下载calico配置文件

mkdir -p /k8s 
cd /k8s/
curl https://calico-v3-25.netlify.app/archive/v3.25/manifests/calico.yaml -O

修改 calico.yaml 文件中的 CALICO_IPV4POOL_CIDR 配置,修改为与初始化的 cidr 相同。这里默认注释起来了,我们把注释取消,把value改为我们初始化服务的配置信息

修改值对于我们上节初始化时的参数

改完后如下

接下来我们需要下载一些必需的镜像,我们先删除镜像下载链接 docker.io/ 前缀,避免下载过慢导致失败

sed -i 's#docker.io/##g' calico.yaml

下载需要的基础镜像

grep image calico.yaml

docker pull calico/cni:v3.25.0
docker pull calico/node:v3.25.0
docker pull calico/kube-controllers:v3.25.0

下载完镜像后,构建网络插件

kubectl apply -f calico.yaml

输入kubectl get pod -n kube-system再次查看系统pod,可以发现多了几个calico-node,状态为init,也就是pod在初始化中,我们稍作等待


下载完镜像后,构建网络插件

kubectl apply -f calico.yaml

输入kubectl get pod -n kube-system再次查看系统pod,可以发现多了几个calico-node,状态为init,也就是pod在初始化中,我们稍作等待


4. 测试集群

我们这里简单部署一个nginx服务来测试集群

创建部署

kubectl create deployment nginx --image=nginx

暴露服务端口

kubectl expose deployment nginx --port=80 --type=NodePort

查看 pod 以及服务信息

kubectl get pod,svc

可以看到80端口映射到了31472端口,我们通过ip:端口访问nginx服务, 可以看到服务可以正常访问,测试结果正常。


5. 总结

整体的部署流程还是有点长的,特别是下载镜像时可能因网络问题会等待很久,需要一点耐心。跟着教程来应该没有大问题(有问题可以评论区留言,一起解决)。


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
18小时前
|
存储 运维 监控
Kubernetes 集群的监控与维护策略
【5月更文挑战第23天】在微服务架构日益普及的当下,容器化技术与编排工具如Kubernetes已成为部署和管理应用程序的重要手段。然而,随着集群规模的扩大和复杂性的增加,确保系统的稳定性和高效性成为了一项挑战。本文将深入探讨针对Kubernetes集群的监控和维护策略,旨在为运维人员提供一套系统的方案,以实现对集群状态的实时监控、性能优化和故障快速响应。
|
1天前
|
存储 Kubernetes 监控
Kubernetes 集群的持续性能优化策略
【5月更文挑战第22天】 在微服务架构日益普及的背景下,容器编排成为关键性技术之一。其中,Kubernetes 凭借其强大的功能、灵活的扩展性和便捷的管理特性,成为业界广泛采用的解决方案。然而,随着集群规模的扩大和业务复杂度的增加,性能问题逐渐凸显,影响系统稳定性和响应效率。本文聚焦于 Kubernetes 集群的性能优化,提出一系列持续优化的策略,旨在帮助运维人员系统性地分析和解决性能瓶颈,提升集群运行效率。通过实际案例分析与经验总结,为读者呈现一套实用的性能调优方法论。
|
3天前
|
监控 安全 网络安全
云端防御策略:融合云服务与网络安全的未来之路
【5月更文挑战第20天】 在数字化时代,云计算为企业提供了灵活性、可扩展性和成本效益,但同时也带来了前所未有的安全挑战。本文探讨了如何通过融合云服务和网络安全技术来构建一个安全稳固的云环境。我们将重点讨论云安全的关键领域,包括数据加密、身份管理、威胁检测与响应,以及合规性监控。通过深入分析这些技术领域的最新进展,我们旨在为读者提供一个关于如何在享受云服务带来的便利的同时确保信息安全的综合视角。
|
3天前
|
监控 安全 网络安全
云端防御:融合云服务与网络安全的信息安全策略
【5月更文挑战第20天】 随着企业加速数字化转型,云计算已成为支撑现代业务架构的关键。然而,数据和应用的云端迁移也带来了前所未有的安全挑战。本文探讨了在动态且复杂的云环境中,如何构建一个全面的网络安全策略来确保信息的完整性、保密性和可用性。通过分析云服务模型、网络安全技术以及最佳实践,我们提出了一系列创新措施,以帮助企业在享受云计算带来的便利的同时,有效防御潜在的网络威胁。
|
4天前
|
运维 监控 Kubernetes
Kubernetes 集群的监控与日志管理最佳实践
【5月更文挑战第19天】 在现代微服务架构中,容器编排平台如Kubernetes已成为部署、管理和扩展应用程序的关键工具。随着其应用范围不断扩大,集群的稳定性和性能监控变得至关重要。本文将探讨针对Kubernetes集群的监控策略,并深入分析日志管理的实现方法。通过介绍先进的技术堆栈和实用工具,旨在为运维专家提供一套完整的解决方案,以确保集群运行的透明度和可靠性。
36 3
|
4天前
|
存储 运维 监控
Kubernetes 集群的监控与性能优化策略
【5月更文挑战第19天】 在微服务架构日益普及的背景下,容器编排工具如Kubernetes已成为部署、管理和扩展服务的关键平台。然而,随着集群规模的增长和服务的复杂化,有效的监控和性能优化成为确保系统稳定性和高效性的重要挑战。本文将探讨针对Kubernetes集群监控的最佳实践,并提出一系列性能优化策略,旨在帮助运维人员识别潜在的瓶颈,保障服务的持续可靠性及响应速度。
|
1天前
|
传感器 JavaScript 前端开发
VSCOde安装node.js环境
VSCOde安装node.js环境
|
8天前
|
移动开发 JavaScript 前端开发
为了学习vue3,安装nvm进行node的多版本管理
为了学习vue3,安装nvm进行node的多版本管理
26 2
|
8天前
|
资源调度 jenkins 持续交付
jenkins 自动安装nodejs16.16.0版本报错处理
jenkins 自动安装nodejs16.16.0版本报错处理
38 0
|
8天前
|
JavaScript 前端开发 Linux
Node.js安装与配置
`Node.js` 是一个基于 `Chrome V8` 引擎的 `JavaScript` 运行环境,它允许开发者使用 `JavaScript` 编写服务器端代码。以下是 `Node.js` 的安装与配置的详细步骤:
Node.js安装与配置

推荐镜像

更多