# 关闭防火墙
sudo ufw disable
# 关闭selinux,Ubuntu默认不安装
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
# 关闭swap
sudo swapoff -a # 临时
sudo sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab # 永久
# 关闭完swap后,一定要重启一下虚拟机!!!
# 根据规划设置主机名
hostnamectl set-hostname <hostname>
# 在master添加hosts
cat >> /etc/hosts << EOF
192.168.2.135 k8s-master
192.168.2.136 k8s-node1
192.168.2.137 k8s-node2
EOF
# 将桥接的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 # 生效
# 时间同步
sudo apt update
sudo apt install ntpdate -y
sudo ntpdate time.windows.com
所有节点安装基础软件
#安装docker
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb\_release -cs) stable"
#添加阿里云,这里进入阿里云找到docker会有命令
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://y4dtupgk.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
#安装kubectl,kubeadm,kubelet
sudo apt install -y kubelet=1.23.6-00 kubeadm=1.23.6-00 kubectl=1.23.6-00
systemctl enable kubelet
# 配置关闭 Docker 的 cgroups,修改 /etc/docker/daemon.json,加入以下内容
"exec-opts": ["native.cgroupdriver=systemd"]
# 重启 docker
systemctl daemon-reload
systemctl restart docker
对集群进行初始化及后续操作
- 初始化集群
kubeadm init \
--apiserver-advertise-address=192.168.2.135 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.6 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
<!-- --apiserver-advertise-address=192.168.2.135 \这里是填入自己的ip-->
- 初始化后得到了kubeadm join,如我这里的:
kubeadm join 192.168.2.135:6443 --token jyey31.jecivyoxbqec5gwr \
--discovery-token-ca-cert-hash sha256:f4c063fa4c1b61b052d385382e02f9152514b82c6c1c36ed340315fae9ac1602
- 复制到其他虚拟机上执行,即可加入集群,如下:
- 这里是在node1节点上执行
- 然后执行
kubectl get nodes
就可以看出来nodes
- 但是可以看出来是notready,应该就是网络还没有配置好
- 执行
kubectl get componentstatus
可以看见状态都好
- 如果运行这句
kubectl get pods -n kube-system
出现下面的0/1情况,则一般是网络问题
- 下面配置calico网络,下载calico.yaml 文件,可以直接去这个网站https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml下了之后粘进这个yml文件。
- 然后执行
kubectl apply -f calico.yaml CALICO_IPV4POOL_CIDR
- 然后执行
kubectl get po -n kube-system
,查看 Kubernetes 集群中 kube-system 命名空间下的 Pod 列表: