1、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2、关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
3、关闭swap
swapoff -a 临时关闭
vi /etc/fstab 永久关闭
4、master添加hosts
cat >> /etc/hosts <<EOF
192.168.88.62 k8s-master
192.168.88.63 k8s-workernode1
192.168.88.64 k8s-workernode2
EOF
5、桥接ip流量到iptable
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
vm.swappiness = 0
sysctl -p
cat >/etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
6、时间同步
yum install ntpdate -y 都执行
ntpdate time.windows.com
7、docker安装
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum -y install docker-ce
systemctl enable docker && systemctl start docker
加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ehbu9xsm.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
8、添加kubernetes 源
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
8、安装kubeadm,kubelet和kubectl
yum install -y kubelet-1.21.0 kubeadm-1.21.0 kubectl-1.21.0
systemctl enable kubelet
可选项-tab补全
yum install bash-completion -y
source <(kubectl completion bash)
source <(kubeadm completion bash)
source /usr/share/bash-completion/bash_completion
vi .bashrc 将下列命令加最后
source <(kubectl completion bash)
source <(kubeadm completion bash)
9、部署kubernetes master
在master上执行
kubeadm init --apiserver-advertise-address=192.168.88.62 --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集群通告地址
• --image-repository由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
• --kubernetes-versionK8s版本,与上面安装的一致
• --service-cidr集群内部虚拟网络,Pod统一访问入口
• --pod-network-cidrPod网络,与下面部署的CNI网络组件yaml中保持一致
ps:如果无法拉取镜像,实在不行就科学上网docker pull,注意tag
第一个框master执行
第二个框成员加入集群执行
默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,可以直接使用命令快捷生成:
kubeadm token create --print-join-command
10、部署容器网络(CNI)
Calico是一个纯三层的数据中心网络方案,是目前Kubernetes主流的网络方案。
下载YAML:
wget https://docs.projectcalico.org/manifests/calico.yaml
下载完后还需要修改里面定义Pod网络(CALICO_IPV4POOL_CIDR),与前面kubeadminit的 --pod-network-cidr指定的一样。
修改完后文件后,部署:
kubectl apply -f calico.yaml
kubectl get pods -n kube-system
等Calico
Pod都Running,节点也会准备就绪。
CoreDNS问题处理:
kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-8db96c76-z7h5p 1/1 Running 0 16m
calico-node-pshdd 1/1 Running 0 16m
calico-node-vjwlg 1/1 Running 0 16m
coredns-545d6fc579-5hd9x 0/1 ImagePullBackOff 0 16m
coredns-545d6fc579-wdbsz 0/1 ImagePullBackOff 0 16m
在所有节点执行:
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
过一会儿,CoreDNS Pod会自动恢复正常