centos安装k8s集群
阅读原文时间:2022年03月01日阅读:1

 准备工作

  • 关闭swap,注释swap分区

    swapoff -a

  • 配置内核参数,将桥接的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

docker

  • 安装docker-ce

    yum install -y yum-utils device-mapper-persistent-data lvm2

    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    yum -y install docker-ce

  • 配置docker源码并设置cgroup

  • 这里如果不设置exec-opts,kubeadm init会报错,什么是cgroup,详见:https://www.cnblogs.com/architectforest/p/12988488.html

    mkdir -p /etc/docker
    [root@master01 ~]# tee /etc/docker/daemon.json <<-'EOF'
    {
    "registry-mirrors": ["https://zdp3p97t.mirror.aliyuncs.com"],
    "exec-opts": ["native.cgroupdriver=systemd"]
    }
    EOF

    systemctl daemon-reload

    systemctl restart docker

    systemctl enable docker

安装k8s

初始化k8s集群

  • --apiserver-advertise-address:这里的ip地址就是要对外提供的ip地址,可以是内网ip也可以是公网ip,我这里用的是公网ip

    kubeadm init --kubernetes-version=1.23.4 <br /> --apiserver-advertise-address=【你的ip】 <br /> --image-repository registry.aliyuncs.com/google_containers <br /> --service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16

  • kubectl初始化设置,完成这一步之后就可以使用kubectl get pods、nodes了

    mkdir -p $HOME/.kube

    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

    sudo chown $(id -u):$(id -g) $HOME/.kube/config

    使kubectl可以自动补充

    source <(kubectl completion bash)

这一步之后如果发现节点为NotReady状态,是因为corednspod没有启动,缺少网络pod

到这一步单机版k8s就已经安装完成

k8s添加节点

  • 添加节点的前提是要在被添加的节点服务器上重复上面的操作,安装好k8s的基础套件,安装完成之后如果执行了kubeadm init,那么需要在子节点重置一下

  • kubeadm reset

  • 查看master节点token

  • 在master节点上面查看master节点的token值,用于在子节点上执行

    kubeadm token create --print-join-command

    会输出以下内容,以下内容就是master节点的token值

    kubeadm join xx.xx.xx.xx:6443 --token i9vhtn.32fq9o8ka9iml1xm --discovery-token-ca-cert-hash sha256:5b0bc6f4915f5a6943b9e5fc12a901e9a2876abb43fb3a8e4c322fa7da4be4fc

  • 在子节点上执行以下命令,就是上一步token输出的内容

    kubeadm join xx.xx.xx.xx:6443 --token i9vhtn.32fq9o8ka9iml1xm --discovery-token-ca-cert-hash sha256:5b0bc6f4915f5a6943b9e5fc12a901e9a2876abb43fb3a8e4c322fa7da4be4fc

  • 接下来在master节点所在服务器上执行 kubectl get nodes,就可以看到刚刚添加的节点了

问题点

  • kubectl top nodes会可能出现Metrics API not available,是因为没有安装metrics-server

  • 在集群上安装一下就可以了

  • 由于自己安装的k8s,在主节点上部署pod的时候可能会有污点的问题,可能会造成主节点的pod无法成功部署,具体错误类似于1 node(s) didn't satisfy existing pods anti-affinity rules, 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerat

    kubectl taint nodes [node-name] node-role.kubernetes.io/master:NoSchedule-

文章内容来源于互联网,这里自己踩坑做一个汇总归纳,并把自己遇到的问题分享出来供大家参考

参考文章:https://juejin.cn/post/7007734421981757448#diff2

https://www.kubernetes.org.cn/7189.html