k8s集群加入一个新的node节点

该文详细描述了如何在已有k8s集群(基于CentOS7.9,kubeadm安装)中添加新节点(192.168.206.138k8s-node3)。步骤包括初始化系统参数,如修改hosts和hostname,关闭防火墙,禁用SELINUX,禁用swap,配置yum源,安装Docker和kubernetes组件,并使用kubeadmjoin命令将新节点加入集群。
摘要由CSDN通过智能技术生成

实验目的:在已有的k8s集群中加入一个新的node节点,并正常工作。

已有的k8s集群节点信息:centos7.9 kubeadm 安装kubernetes集群
192.168.206.130 master
192.168.206.131 k8s-node1
192.168.206.136 k8s-node2
新加入一个节点:
192.168.206.138 k8s-node3

kubectl get nodes

 kubectl get nodes -o wide

 在进行下面的步骤之前,要找到最初创建k8s集群时,系统提示的用来将新节点加入集群的语句:

kubeadm join 192.168.206.130:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:97a177b891f75f92f07e61aedbfc8a34cd35d6785d55b9cc829dcf532e1de5b9

找不到怎么办?在master上执行下面这句:


kubeadm token create --print-join-command

下面正式开始:

第一步:初始化系统参数 ,修改hosts和hostname

        1,,130,131,136,分别写入hosts:

echo "192.168.206.138 k8s-node3" >>/etc/hosts

        2,新节点138如下:

#修改hosts和hostname
echo "192.168.206.130 master" >>/etc/hosts
echo "192.168.206.131 k8s-node1" >>/etc/hosts
echo "192.168.206.136 k8s-node2" >>/etc/hosts
echo "192.168.206.138 k8s-node3" >>/etc/hosts
hostname k8s-node3
echo k8s-node3 > /etc/hostname

#修改系统参数
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
setenforce 0
swapoff -a
yes | cp /etc/fstab /etc/fstab_bak 
cat /etc/fstab_bak |grep -v swap > /etc/fstab
 
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
 
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
 
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
 
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF


#配置yum源:
cd /etc/yum.repos.d
wget http://mirrors.aliyun.com/repo/Centos-7.repo 

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
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/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum clean all
yum makecache fast

#安装docker
yum -y install docker
cat  << EOF  > /etc/docker/daemon.json 
{
    "registry-mirrors": ["https://wyrsf017.mirror.aliyuncs.com"]
}
EOF
systemctl start docker
systemctl enable docker
docker version

安装kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0(建议和master节点的版本一致)

yum -y install kubelet-1.19.0 kubeadm-1.19.0 
systemctl restart kubelet
systemctl enable kubelet
systemctl daemon-reload
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

最后一步:将138接入到集群中

kubeadm join 192.168.206.130:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:97a177b891f75f92f07e61aedbfc8a34cd35d6785d55b9cc829dcf532e1de5b9

3,130 master节点上查看集群信息:

 kubectl get nodes -o wide

 实验成功!

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将正在 k8s-node1 节点上运行的名为 apache-pod 的 pod 扩容到 k8s-node2 节点,并同时在这两个节点上运行 pod,请按照以下步骤操作: 1. 创建一个 deployment,指定 pod 的副本数为 2,并使用 nodeSelector 将这两个 pod 分别调度到 k8s-node1 和 k8s-node2 节点上。可以使用以下 YAML 文件创建 deployment: ``` apiVersion: apps/v1 kind: Deployment metadata: name: apache-pod spec: replicas: 2 selector: matchLabels: app: apache-pod template: metadata: labels: app: apache-pod spec: nodeSelector: kubernetes.io/hostname: k8s-node1 containers: - name: apache-container image: httpd:latest ports: - containerPort: 80 ``` 在这个 YAML 文件中,我们使用 nodeSelector 将第一个 pod 调度到 k8s-node1 节点上,第二个 pod 调度到 k8s-node2 节点上。注意,我们在 template.spec.containers 中指定了容器的镜像和端口号,这里使用的是 httpd 镜像,端口号是 80。 2. 使用 kubectl apply 命令应用这个 YAML 文件: ``` kubectl apply -f deployment.yaml ``` 3. 使用 kubectl get pods 命令检查 pod 状态,确认这两个 pod 都在运行: ``` kubectl get pods -o wide ``` 在输出中,你会看到两个 apache-pod 的副本都在运行,其中一个k8s-node1 节点上,另一个k8s-node2 节点上。 需要注意的是,使用 nodeSelector 指定 pod 调度到特定节点上可能会降低集群的灵活性,因为这样做会使节点的资源分配不均衡。如果你的集群中有多个节点,最好使用 Kubernetes 的调度器来自动地将 pod 调度到空闲节点上。你可以使用 nodeAffinity 和 podAntiAffinity 等特性来控制 pod 的调度行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值