Ubantu搭建K8s前初始化脚本(宝宝教程)

本人菜鸡,首先明确搭建k8s前为什么要做初始化。由于centos停止维护,我们的业务在ubantu系统上不断尝试,所以需要我们不断来探索ubantu和centos的区别和兼容性。你们公司是从centos准备转什么系统,业务是否会有瓶颈,兼容性是否可以。咱们可以交流下

我总结的原因是以下原因:

1.关闭防火墙,主要是为了保证内部正常通信

2.关闭swap分区,虽然不是强制要求,但是官方文档上建议这样做。我也确确实实遇到过这个问题,因为我的swap分区开着,直接导致我的node节点出现了noready的状态。

3.开启时间同步,开启时间同步是为了保证etcd集群间的正常通讯。你如果不做她会给你报etcd集群间时间差异过大的错误。(我的脚本中并没有写这一步,自己可以做,建议用nfs时间同步。)

4.修改内核,为了确保网络通信的正确性、安全性和效率。(我的脚本只修改了基础的内核,如有需要,可以自行修改一下)

5.做内核优化(例如修改最大打开文件个数)

下面是我写的一个脚本,写作不易,如果脚本对大家有帮助,希望大家可以点个赞!

root@waware:~#vim  k8sc.sh

 这里进去,如果你直接复制粘贴可能会乱。

按住shift键,然后点:

输入set paste然后再输入个a或者i就可以正常输入了

#!/bin/bash

keywords=("pool ntp.ubuntu.com" "pool 0.ubuntu.pool.ntp.org" "pool 1.ubuntu.pool.ntp.org" "pool 2.ubuntu.pool.ntp.org")

###########关闭防火墙
  
# 检查ufw的状态  
ufw_status=$(ufw status | grep 'Status: active')  
  
if [ -n "$ufw_status" ]; then  
    # 如果防火墙是开启的,则执行关闭命令  
    sudo ufw disable  
    if [ $? -eq 0 ]; then  
        echo -e "\033[1;32m防火墙已成功关闭,处于永久关闭状态\033[0m"  
    else
        echo -e "\033[1;31m关闭防火墙时发生错误,请检查您的系统状态或权限\033[0m"   
    fi  
else  
    # 如果防火墙已经是关闭的,则输出消息 
    echo -e "\033[1;32m防火墙处于永久关闭状态\033[0m" 
fi


##################关闭swap分区
if grep -q '^[^#].*swap' /etc/fstab; then  
    sed -i '/swap/s/^/#/' /etc/fstab  
    echo -e "\033[1;32mSWAP分区已永久关闭\033[0m"
            if grep -q '^[^#].*swap' /etc/fstab; then 
                echo -e "\033[1;31mSWAP分区关闭失败\033[0m"
           else 
                echo -e "\033[1;32mSWAP处于永久关闭状态\033[0m"
           fi
else  
    echo -e "\033[1;32mSWAP分区处于永久关闭状态\033[0m"  
fi

########################关闭selinux


# 检查/etc/selinux/config文件是否存在  
if [ ! -f /etc/selinux/config ]; then  
     echo -e "\033[1;32mSELinux配置文件不存在!selinux处于永久关闭状态\033[0m"  
else  
    # SELinux配置文件存在,检查是否已设置为disabled  
    grep '^SELINUX=disabled' /etc/selinux/config  
    if [ $? -ne 0 ]; then  
        # SELinux没有设置为disabled,尝试将其设置为disabled     
        sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config 
        sudo setenforce 0 
          
        # 设置后需要重启系统才能使更改生效   
                if [ $? -ne 0 ]; then  
                          echo -e "\033[1;31mSELinux关闭失败\033[0m"   
                else
                          echo -e "\033[1;32mSELinux已永久关闭\033[0m"  
                 fi
    else  
     echo -e "\033[1;32mSELinux已永久关闭\033[0m"  
    fi  
fi

########################设置文件打开的最大个数
ulimit -SHn 65535
cat >> /etc/security/limits.conf <<EOF
root soft nofile 65535
root hard nofile 65535
root soft nproc 65535
root hard nproc 65535
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
EOF

################################修改内核
cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

modprobe overlay
modprobe br_netfilter
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

#################################加载内核参数
apt -y install ipvsadm ipset sysstat conntrack &> /dev/null &

cat > /etc/profile.d/ipvs.modules <<EOF
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
chmod 755 /etc/profile.d/ipvs.modules


##这些内核只满足基本的k8s的搭建,如果有需要可以自行研究
bash /etc/profile.d/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

root@waware:~# bash 2.sh

 如果输出下面的这种,只要不报红色字体或者错误就证明你的初始化再做个时间同步就好了。

  • 28
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
搭建 Kubernetes 集群需要以下步骤: 1. 安装 Docker 和 kubeadm 工具 2. 初始化 master 节点 3. 加入 worker 节点 4. 部署网络插件 5. 部署 Dashboard 以下是详细的步骤: 1. 安装 Docker 和 kubeadm 工具 在每个节点上安装 Docker 和 kubeadm 工具。可以使用以下命令: ``` sudo apt-get update sudo apt-get install -y docker.io sudo apt-get install -y apt-transport-https curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl ``` 2. 初始化 master 节点 在 master 节点上运行以下命令: ``` sudo kubeadm init --pod-network-cidr=10.244.0.0/16 ``` 该命令将初始化 Kubernetes 集群并设置 pod 网络 CIDR。执行此命令后,会生成一个命令,你需要在后面的节点加入时使用该命令。 3. 加入 worker 节点 在 worker 节点上运行刚才生成的命令。例如: ``` sudo kubeadm join 10.0.0.1:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef ``` 在 master 节点上运行以下命令,验证 worker 节点是否已成功加入: ``` kubectl get nodes ``` 4. 部署网络插件 Kubernetes 集群需要一个网络插件来管理 pod 之间的通信。这里使用 Flannel 网络插件。 在 master 节点上运行以下命令: ``` kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 5. 部署 Dashboard Kubernetes Dashboard 是一个 Web UI,可以用来管理 Kubernetes 集群。 在 master 节点上运行以下命令: ``` kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml ``` 然后,创建一个 ServiceAccount 并将其与 ClusterRoleBinding 绑定: ``` kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta8/aio/deploy/recommended.yaml ``` 最后,运行以下命令: ``` kubectl proxy ``` 然后,在浏览器中访问 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/,即可访问 Kubernetes Dashboard。 以上就是在 Ubuntu 上搭建 Kubernetes 集群的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值