下面是我配置k8s集群都步骤,我搭建的是1个主节点,三个子节点
1-11步骤是每台机器上都要执行,12之后在master机器上执行(16在节点机器上执行)
1.配置 /etc/hosts ,将你用来搭建的几台机器以 ip hostname的形式全部配置到没台机器的 /etc/hosts文件中,并保证能PING 通
2.yum update
3. 安装必要的包yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp
4. 关防火墙systemctl stop firewalld && systemctl disable firewalld
5. 重置iptables iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT
6. 关闭swap , swapoff -a 禁止开机启动:sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab
7. 关闭selinux , setenforce 0
8. 关闭dnsmasq, service dnsmasq stop && systemctl disable dnsmasq
9.安装三个组件 yum install kubelet kubeadm kubectl
如果不成功,需要配置yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
10.配置kubelet,将/etc/sysconfig/kubelet 配置: KUBELET_EXTRA_ARGS="--fail-swap-on=false"
11.设置kubelet为开机启动 systemctl enable kubelet.service
## kubeadm 初始化命令,如果卡主在You can also perform this action in beforehand using ''kubeadm config images pull
## 可在init后面加上 --image-repository registry.aliyuncs.com/google_containers
## apiserver-advertise-address的值一般设为主节点的ip
12. kubeadm init --image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.20.2 \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--apiserver-advertise-address=主节点ip\
--ignore-preflight-errors=Swap
##成功的话会提示 你执行一些命令,包括node节点加入命令,输出结果如下
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
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
##如果执行12步出错,提醒你端口被占用,执行 kubeadm reset ,还是不行的话,可能是之前部署过k8s的环境,lsof -i:port 查看端口占用
##如果是被etcd占用,kill pid ,把进程杀掉,再次执行 kubeadm init,就会成功
13.安装成功,输出结果会提示你执行一些命令,执行那些命令,我的输出结果是执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
14.执行 kubectl get cs 查看组件健康情况,如果schedeler和controller-manager显示unhealthy,error为
127.0.0.1:port refused,则需要通过修改 /etc/kubernetes/manifests/kube-schedeler.ymal和kube-controller-manager.yaml
文件,将 port=0的那行注释掉
15.安装网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
##如果失败需要配置/etc/hosts文件 在 https://www.ipaddress.com 查到raw.githubusercontent.com对应的ip
##然后添加进host文件: 你查到的ip raw.githubusercontent.com
16.根据 kubeadm 返回的结果 在节点机器上执行:
kubeadm join 主节点ip:port --ignore-preflight-errors=Swap --token 7iwzyb.6yvtuyzvv2yjrf8r \
--discovery-token-ca-cert-hash sha256:0c692c505cb692712b75d77a2e1e93e0
17.然后查看集群状况,kubectl get nodes,如果成功,会看到你加入的节点显示ready
18.启动Pod, kubectl run nginx-deploy --image=nginx:1.12 --replicas=2
19.kubectl expose deployment/nginx --name=nginx-svc --port=80
Linux centos7 搭建k8s集群步骤详解
于 2021-01-18 08:35:51 首次发布