前提:
- kubernetes的client和server最好同一版本。
- kubernetes在1.24版本以上不再默认支持docker,默认的容器是containerd
- 安装完集群后需要安装网络插件,我这装的cni,三方插件列表可以从这里找。kubernetes.io/docs/concep…
- 本文安装的版本是1.23.15。dashboard版本是2.5.1
安装步骤:
- (虚拟机)配置静态IP
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
IPADDR="192.168.0.123"
NETMASK="255.255.255.0"
GATEWAY="192.168.0.1"
DNS1="114.114.114.114"
systemctl restart network
- 配置hostname
hostnamectl set-hostname k8s-1
hostnamectl set-hostname k8s-2
hostnamectl set-hostname k8s-3
- 配置master的host列表
cat >> /etc/hosts << EOF
192.168.0.123 k8s-1
192.168.0.124 k8s-2
192.168.0.125 k8s-3
EOF
- 关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
- 禁用selinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config
- 禁用swap分区:
swapoff -a
vim /etc/fstab--->注释#/dev/mapper/centos-swap swap swap defaults 0 0
free -m
vim /etc/sysctl.conf--->添加vm.swappiness=0
sysctl -p
free -m检查swap是否为0
- 允许 iptables 检查桥接流量、加载br_netfilter模块:
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
- IPv4配置
sysctl -w net.ipv4.ip_forward=1
- docker安装
developer.aliyun.com/mirror/dock…
配置开机自启:systemctl enable docker.service
配置国内镜像加速器:cr.console.aliyun.com/cn-hangzhou…
把docker的cgroup改成systemd:
vim /etc/docker/daemon.json
"exec-opts": ["native.cgroupdriver=systemd"]
systemctl restart docker
- kubernetes国内镜像
developer.aliyun.com/mirror/kube…
具体要安装的版本直接去官网找:kubernetes.io/releases/ 13. 安装 kubeadm、kubelet 和 kubectl
yum install -y --nogpgcheck kubelet-1.23.15 kubeadm-1.23.15 kubectl-1.23.15
- 所有节点都启动kubelet:
systemctl enable kubelet && systemctl start kubelet
- 初始化master节点
注意下面的kubernetes-version要和上面安装的版本一致,避免一些奇奇怪怪的问题。
kubeadm init \
--control-plane-endpoint="192.168.0.123:6443" \
--apiserver-advertise-address=192.168.0.123 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.15 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
如果后期重启机器,遇到kubectl如下报错,不能使用的话。
[root@k8s-1 ~]# kubectl get svc
The connection to the server localhost:8080 was refused - did you specify the right host or port?
- 安装cni插件
- 安装DashBoard
要把dashboard的type从ClusterIP修改为NodePort
kubectl -n kubernetes-dashboard edit svc kubernetes-dashboard