Centos7部署k8s(单master节点安装)

单master节点部署k8s集群(Centos)

一、安装前准备

1、修改主机名

按照资源准备修改即可

# master01 
hostnamectl set-hostname master01 ; bash
# node1
hostnamectl set-hostname node1 ; bash
# node2
hostnamectl set-hostname node2 ; bash

2、修改hosts文件

  • 以下命令所有节点都要执行

    cat > /etc/hosts <<EOF
    192.168.2.10 master01
    192.168.2.20 node1
    192.168.2.30 node2
    EOF

3、系统优化

  • 安装依赖文件(以下命令所有节点都要执行)

    yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

  • 关闭防火墙,设置防火墙为iptables,并清空规则(以下命令所有节点都要执行)

    systemctl stop firewalld && systemctl disable firewalld

    yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save

  • 关闭swap分区和selinux(以下命令所有节点都要执行)

    关闭swap分区

    swapoff -a && sed -i 's/.swap./#&/g' /etc/fstab

    关闭selinux

    setenforce 0 &&sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

  • 调整内核参数(以下命令所有节点都要执行)

    modprobe br_netfilter
    modprobe overlay

    yum -y install ipset ipvsadm

    cat > /etc/sysconfig/modules/ipvs.modules <<EOF
    modprobe -- ip_vs
    modprobe -- ip_vs_rr
    modprobe -- ip_vs_wrr
    modprobe -- ip_vs_sh
    EOF

    kernel_version=$(uname -r | cut -d- -f1)
    echo $kernel_version

    if [ expr $kernel_version \> 4.19 -eq 1 ]
    then
    modprobe -- nf_conntrack
    else
    modprobe -- nf_conntrack_ipv4
    fi

    chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack

    cat <<EOF> /etc/sysctl.d/kubernetes.conf
    net.bridge.bridge-nf-call-iptables=1
    net.bridge.bridge-nf-call-ip6tables=1
    net.ipv4.ip_forward=1
    net.ipv4.tcp_tw_recycle=0
    vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
    vm.overcommit_memory=1 # 不检查物理内存是否够用
    vm.panic_on_oom=0 # 开启 OOM
    fs.inotify.max_user_instances=8192
    fs.inotify.max_user_watches=1048576
    fs.file-max=52706963
    fs.nr_open=52706963
    net.ipv6.conf.all.disable_ipv6=1
    net.netfilter.nf_conntrack_max=2310720
    EOF

    sysctl -p /etc/sysctl.d/kubernetes.conf
    echo 1 > /proc/sys/net/ipv4/ip_forward

    cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
    overlay
    br_netfilter
    EOF

二、部署Containered

  • 以下命令所有节点都要执行

    ##部署源并安装containerd
    wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
    yum list |grep containerd
    yum -y install containerd.io-1.6.4-3.1.el7.x86_64
    mkdir -p /etc/containerd
    containerd config default | sudo tee /etc/containerd/config.toml
    ##修改cgroup Driver为systemd
    sed -ri 's#SystemdCgroup = false#SystemdCgroup = true#' /etc/containerd/config.toml
    ##应用配置
    systemctl daemon-reload && systemctl enable containerd --now

    ##设置crictl
    cat << EOF >> /etc/crictl.yaml
    runtime-endpoint: unix:///var/run/containerd/containerd.sock
    image-endpoint: unix:///var/run/containerd/containerd.sock
    timeout: 10
    debug: false
    EOF

    启动完成后就可以使用 containerd 的本地 CLI 工具 ctr 和 crictl 了,比如查看版本:

    ctr version
    crictl version

三、安装kubernetes

1、配置安装源

2、安装

  • 以下命令所有节点都要执行

    yum install -y kubeadm-1.22.10 kubelet-1.22.10 kubectl-1.22.10

    systemctl enable --now kubelet

四、初始化master添加node

1、初始化master节点

  • 以下命令只在master01执行

    kubeadm init
    --kubernetes-version=v1.22.10
    --apiserver-advertise-address=192.168.2.10
    --image-repository registry.aliyuncs.com/google_containers
    --pod-network-cidr=10.244.0.0/16
    --token-ttl=0
    --upload-certs

    mkdir -p $HOME/.kube
    cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    chown (id -u):(id -g) $HOME/.kube/config

  • 初始化完成后会输出一段日志

    .....
    .....
    [addons] Applied essential addon: CoreDNS
    [addons] Applied essential addon: kube-proxy

    Your Kubernetes control-plane has initialized successfully!

    To start using your cluster, you need to run the following as a regular user:

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

    You should now deploy a pod network to the cluster.
    Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
    https://kubernetes.io/docs/concepts/cluster-administration/addons/

    Then you can join any number of worker nodes by running the following on each as root:

    kubeadm join 192.168.2.151:6443 --token v2r5a4.veazy2xhzetpktfz
    --discovery-token-ca-cert-hash sha256:daded8514c8350f7c238204979039ff9884d5b595ca950ba8bbce80724fd65d4

    最后这个kubeadm json... 是node节点加入集群的命令,需要在要加入集群的node节点上执行

2、node节点加入集群

  • 以下命令只在node节点执行

    kubeadm join 192.168.2.151:6443 --token v2r5a4.veazy2xhzetpktfz
    --discovery-token-ca-cert-hash sha256:daded8514c8350f7c238204979039ff9884d5b595ca950ba8bbce80724fd65d4

五、安装网络插件flannel

以上是centos7部署k8s的步骤,希望能够帮助到你!

相关推荐
阿里云云原生3 小时前
Spring AI 智能体通过 MCP 集成本地文件数据
云原生·mcp
reddingtons8 小时前
在 Ubuntu 下通过 Docker 部署 Caddy 和 PHP-FPM 服务器
服务器·ubuntu·docker
酥暮沐9 小时前
Docker 学习(一)
运维·docker·容器
你可以叫我仔哥呀9 小时前
k8s学习记录:环境搭建二(基于Kubeadmin)
学习·容器·kubernetes
CT随9 小时前
Eureka Server 数据同步原理解析
云原生·eureka
a_j5813 小时前
k8s面试题总结(七)
云原生·容器·kubernetes
SimonRiley_13 小时前
使用 kubeadm 创建高可用 Kubernetes 及外部 etcd 集群
linux·容器·kubernetes·etcd
刘什么洋啊Zz14 小时前
Kubespray部署企业级高可用K8S指南
运维·云原生·容器·kubernetes·kubelet
暴怒的代码15 小时前
云原生安全篇——零信任架构与运行时防护
安全·云原生·架构