美文网首页
kubeadm安装k8s-1.21 (centos7)

kubeadm安装k8s-1.21 (centos7)

作者: Rami | 来源:发表于2022-04-09 23:26 被阅读0次

1.环境要求

机器名 ip地址 cpu和内存要求
k8s-master 10.0.0.20 2c4g(关闭swap)
k8s-node01 10.0.0.21 2c4g(关闭swap)
k8s-node02 10.0.0.22 2c4g(关闭swap)

1.1. 配置hosts解析

cat >> /etc/hosts << EOF
k8s-master 10.0.0.20
k8s-node01 10.0.0.21
k8s-node02 10.0.0.22
EOF

2.关闭防火墙、selinux 、swap

2.1 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld

2.2 关闭selinux
setenforce 0    #临时关闭
getenforce      #查看状态
sed -i 's/enforcing/disabled/' /etc/selinux/config 

3.3 关闭swap
 # 临时
swapoff -a 
 # 永久
sed -ri 's/.*swap.*/#&/' /etc/fstab   

3.3.1 执行完上面操作swap已经关闭,有必要情况下还需下面操作
echo 0 > /proc/sys/vm/swappiness # 临时生效

vim /etc/sysctl.conf # 永久生效
#修改 vm.swappiness 的修改为 0
vm.swappiness=0
sysctl -p # 使配置生效

3.开始安装

3.1安装docker

# 下载docker源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

#列出docker所有版本
yum list docker-ce --showduplicates

# 安装指定docker版本
yum install docker-ce-20.10.24 docker-ce-cli-20.10.24 -y

# 启动docker并设置开机启动
systemctl enable docker && systemctl start docker

# 优化下载源
cat > /etc/docker/daemon.json << EOF
{
   "registry-mirrors": ["https://mw86j9k8.mirror.aliyuncs.com"]
}
EOF

systemctl daemon-reload
systemctl restart docker

docker info

3.2.安装kubeadm、kubelet、kubectl

#所有节点进行操作
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
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 -y kubelet-1.21.0 kubeadm-1.21.0 kubectl-1.21.0
systemctl enable kubelet 

3.3.使用kubeadm初始化k8s集群

所有节点
1.将内核参数改为1
cat <<EOF >  /etc/sysctl.d/k8s.conf     
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system    #生效

2.控制节点上运行,注意最后的输出
kubeadm init \
  --apiserver-advertise-address=10.0.0.20 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.21.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16 \
  --ignore-preflight-errors=all


--apiserver-advertise-address 集群通告地址,这里表示为master地址
--image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
--kubernetes-version K8s版本,需要与刚才安装的保持一致
--service-cidr k8s中service的地址范围
--pod-network-cidr k8s中pod网络的地址范围,需要与部署的CNI网络插件yaml中的地址保持一致。

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

3.给k8s集群加入node节点:
node节点上执行前面控制节点提示的加入命令
kubeadm join 10.0.0.20:6443 --token b07qm3.evix2mda09nbpqe6 \
    --discovery-token-ca-cert-hash sha256:b4759fc642debb7e91844f0db84855bec2c4e4261f5c04bbda7a2ce349a066e4

4.在master上执行kubectl  get nodes,已看到node加入了集群
[root@k8s-master ~]# kubectl  get node
NAME         STATUS     ROLES                  AGE     VERSION
k8s-master   NotReady   control-plane,master   2m48s   v1.21.0
k8s-node01   NotReady   <none>                 43s     v1.21.0
k8s-node02   NotReady   <none>                 7s      v1.21.0

如果要新加集群的话可以使用下面命令
kubeadm token create --print-join-command

如果初始化有问题,用以下命令回滚清除
kubeadm reset 

5.为k8s集群配置网络插件
这里可能得需要科学上网进行下载
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl  apply -f kube-flannel.yml

#再次查看已经Ready
[root@k8s-master ~]# kubectl  get node
NAME         STATUS   ROLES                  AGE     VERSION
k8s-master   Ready    control-plane,master   11m     v1.21.0
k8s-node01   Ready    <none>                 9m33s   v1.21.0
k8s-node02   Ready    <none>                 8m57s   v1.21.0

6.查看pod发现coredns未Running
[root@k8s-master ~]# kubectl  get pod -A -owide |grep coredns
kube-system    coredns-545d6fc579-9f6xk             0/1     ImagePullBackOff   0          54s   10.244.2.2   k8s-node02   <none>           <none>
kube-system    coredns-545d6fc579-b2pkm             0/1     ImagePullBackOff   0          54s   10.244.2.3   k8s-node02   <none>           <none>

#在node02上执行以下解决
docker pull registry.aliyuncs.com/google_containers/coredns:1.8.0
docker tag registry.aliyuncs.com/google_containers/coredns:1.8.0 registry.aliyuncs.com/google_containers/coredns/coredns:v1.8.0

3.4 让k8s tab键补全

source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

3.5 初始化完成后在node节点无法执行命令解决办法

kubectl get node
The connection to the server localhost:8080 was refused - did you specify the right host or port?
报以上问题,解决方法如下:
#1.在master节点上执行
scp -rp /etc/kubernetes/admin.conf  root@10.0.0.21:/etc/kubernetes/
scp -rp /etc/kubernetes/admin.conf  root@10.0.0.22:/etc/kubernetes/

#2.在node节点上执行
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile

#3.然后就可以执行命令了
kubectl  get node
NAME         STATUS   ROLES                  AGE   VERSION
k8s-master   Ready    control-plane,master   23m   v1.21.0
k8s-node01   Ready    <none>                 21m   v1.21.0
k8s-node02   Ready    <none>                 21m   v1.21.0

相关文章

网友评论

      本文标题:kubeadm安装k8s-1.21 (centos7)

      本文链接:https://www.haomeiwen.com/subject/vejmjrtx.html