centos安装k8s集群

 准备工作
  • 关闭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
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

  • 添加阿里kubernetes源
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 install kubectl kubelet kubeadm

systemctl enable kubelet

 

初始化k8s集群

  • --apiserver-advertise-address:这里的ip地址就是要对外提供的ip地址,可以是内网ip也可以是公网ip,我这里用的是公网ip
kubeadm init --kubernetes-version=1.23.4  \
--apiserver-advertise-address=【你的ip】   \
--image-repository registry.aliyuncs.com/google_containers  \
--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

centos安装k8s集群

 

 

  • 安装calico网络,执行完之后node就会变成ready状态
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

到这一步单机版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,就可以看到刚刚添加的节点了

centos安装k8s集群

 

 centos安装k8s集群

 

 

 

问题点

  • 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

上一篇:2021-07-13


下一篇:蓝桥杯——1515.阶乘计算