安装方式Kubeadm
1.环境准备
a.hosts文件,IP和主机名
b.防火墙及selinux
c.内核参数配置
/etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
sysctl -p /etc/sysctl.d/k8s.conf
lsmod |grep br_netfilter
br_netfilter 22256 0
bridge 151336 1 br_netfilter
cat > /etc/sysconfig/modules/ipvs.modules "%EOF
"&/bin/bash
modprobe "' ip_vs
modprobe "' ip_vs_rr
modprobe "' ip_vs_wrr
modprobe "' ip_vs_sh
modprobe "' nf_conntrack_ipv4
EOF
d.时间同步
2.安装 Containerd
a.注意seccomp依赖
rpm -qa |grep libseccomp
libseccomp-2.5.1-1.el8.x86_64
b.wget https://github.com/containerd/containerd/releases/download/v1.6.10/cricontainerd-1.6.10-linux-amd64.tar
tar -C / -xzf cri-containerd-1.6.10-linux-amd64.tar.gz
确认Containerd版本及runc命令
c.配置文件
containerd config default > /etc/containerd/config.toml
修改配置文件
SystemdCgroup = true
sandbox_image = "registry.aliyuncs.com/k8sxio/pause:3.8"
修改配置reload及重启服务
systemctl daemon-reload
systemctl enable containerd "'now
3.初始化集群
a.配置 /etc/yum.repos.d/kubernetes.repoYUM源
yum install -y kubelet-1.25.4 kubeadm-1.25.4 kubectl-1.25.4 --disableexcludes=kubernetes
确认版本设置开机启动
kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.4",
GitCommit:"872a965c6c6526caa949f0c6ac028ef7aff3fb78", GitTreeState:"clean",
BuildDate:"2022-11-09T13:35:06Z", GoVersion:"go1.19.3", Compiler:"gc",
Platform:"linux/amd64"}
systemctl enable --now kubelet
b.生成初始化配置文件
kubeadm config print init-defaults "'component-configs KubeletConfiguration >kubeadm.yaml
# 指定 pod 子网 podSubnet: 10.244.0.0/16
34 networking:
35 dnsDomain: cluster.local
36 serviceSubnet: 10.96.0.0/12
37 podSubnet: 10.244.0.0/16
# kube-proxy 设置ipvs模式
40 apiVersion: kubeproxy.config.k8s.io/v1alpha1
41 kind: KubeProxyConfiguration
42 mode: ipvs
c.初始化
kubeadm init --config kubeadm.yaml
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
NAME STATUS ROLES AGE VERSION
master NotReady control-plane 104s v1.25.4
#NotReady是因为未部署CNI插件
4.添加节点
a. kubeadm join 192.168.3.70:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:2ac632e96d706f1771e4fbfcb1c31a5b28f048303886169e4459fa259b65b618
kubectl get nodes
NAME STATUS ROLES AGE VERSION
master NotReady control-plane 15m v1.25.4
node1 NotReady <none> 98s v1.25.4
b.安装网络插件
wget https://raw.githubusercontent.com/flannelio/flannel/v0.20.1/Documentation/kube-flannel
- --iface=eth0 # 如果是多网卡的话,指定内网网卡的名称
kubectl apply -f kube-flannel.yml # 安装 flannel 网络插件
[root@k8s-master01 ~]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-flannel kube-flannel-ds-jfm7n 1/1 Running 0 16d
kube-flannel kube-flannel-ds-q9mk4 1/1 Running 0 16d
kube-flannel kube-flannel-ds-zjts9 1/1 Running 0 16d
kube-system coredns-7b884d5cb7-nr9pq 1/1 Running 0 16d
kube-system coredns-7b884d5cb7-z6h5n 1/1 Running 0 16d
kube-system etcd-k8s-master01 1/1 Running 1 16d
kube-system kube-apiserver-k8s-master01 1/1 Running 1 16d
kube-system kube-controller-manager-k8s-master01 1/1 Running 0 16d
kube-system kube-proxy-58tmg 1/1 Running 0 16d
kube-system kube-proxy-twfvt 1/1 Running 0 16d
kube-system kube-proxy-zfv5t 1/1 Running 0 16d
kube-system kube-scheduler-k8s-master01 1/1 Running 1 16d
kubernetes-dashboard dashboard-metrics-scraper-64bcc67c9c-lwg2w 1/1 Running 0 16d
kubernetes-dashboard kubernetes-dashboard-5c8bd6b59-nw2kh 1/1 Running 0 16d