1.安装docker
- 安装docker
```shell
使用官方安装脚本自动安装
curl -fsSL https://get.docker.com | bash -s docker —mirror Aliyun
设置国内源地址
sudo yum-config-manager \ —add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看docker版本
docker -v
设置开机自启
systemctl enable docker
2. 设置/etc/docker/daemon```shellvim /etc/docker/daemon.json# 输入以下内容,然后保存{"registry-mirrors": ["https://kl7pzu3j.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"]}# 重启dockersystemctl daemon-reloadsystemctl restart docker
- 卸载docker
# 删除安装包 yum remove docker-ce # 删除镜像、容器、配置文件等内容 rm -rf /var/lib/docker2.环境设置
```bash关闭防火墙
sudo systemctl stop firewalld.service sudo systemctl disable firewalld.service
设置主机名
hostnamectl set-hostname
配置集群免密(可选)
ssh-keygen -t rsa
ssh-copy-id
在master添加hosts
cat >> /etc/hosts << EOF 192.168.113.128 s1 192.168.113.129 s2 192.168.113.130 s3 EOF
将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0 sudo sed -i ‘s/^SELINUX=enforcing$/SELINUX=permissive/‘ /etc/selinux/config
关闭 swap,swap 为 0
sudo sed -ri ‘s/.swap./#&/‘ /etc/fstab sudo swapoff -a free -g
允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf br_netfilter EOF cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sudo sysctl —system
<a name="KMFRd"></a>
# 3.安装kubeadm
```bash
# 配置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
# 查看要安装的版本(1.24以上版本默认使用container,不再使用docker)
yum search kubeadm --showduplicates
yum search kubelet --showduplicates
yum search kubectl --showduplicates
# 安装kubelet kubeadm kubectl
yum install -y kubectl-1.23.0-0.x86_64 kubelet-1.23.0-0.x86_64 kubeadm-1.23.0-0.x86_64
# 卸载
yum remove -y kubectl kubelet kubeadm
# 开机自启
systemctl enable --now kubelet
# 查看 kubelet 状态
systemctl status kubelet
kubelet --version
# 重新启动 kubelet
systemctl daemon-reload
systemctl restart kubelet
4.初始化 Kubernetes
- master节点初始化
```bash
不指定kubernetes-version,会自动获取最新版
kubeadm init \ —apiserver-advertise-address=192.168.113.128 \ —image-repository registry.aliyuncs.com/google_containers \ —kubernetes-version v1.23.0 \ —service-cidr=10.96.0.0/16 \ —pod-network-cidr=192.168.0.0/16
初始化失败执行reset
kubeadm reset
2. node节点加入
```shell
kubeadm join 192.168.113.128:6443 --token 8702bn.46mh2xff291xztn3 \
--discovery-token-ca-cert-hash sha256:118007d19ac157c618351ae11b199afb500b54e600b983402fe0a82bb6368122
# 默认token有效期为24小时,当过期之后,该token就不可用了,这时需要重新创建token
kubeadm token create --print-join-command
# 加入失败执行reset
kubeadm reset
- 添加环境变量 ```bash echo “export KUBECONFIG=/etc/kubernetes/admin.conf” >> /etc/profile source /etc/profile
查看kubectl命令是否正常
kubectl get nodes
4. 安装网络插件flannel
```bash
# 下载yaml到本地
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 查看node信息中的CIDR
kubectl describe node |grep CIDR
# 查询结果,网段为192.168
PodCIDR: 192.168.0.0/24
PodCIDRs: 192.168.0.0/24
PodCIDR: 192.168.1.0/24
PodCIDRs: 192.168.1.0/24
PodCIDR: 192.168.2.0/24
PodCIDRs: 192.168.2.0/24
# 修改yaml信息,将net-conf改为同一网段192.168
vim kube-flannel.yml
net-conf.json: |
{
"Network": "192.168.0.0/16",
"Backend": {
"Type": "vxlan"
}
}
# 在master节点执行
kubectl apply -f kube-flannel.yml
# 查看flannel是否部署成功(所有节点都为Running就表示成功)
kubectl get pods -n kube-system
