初识K8S-kubeadm安装

发布时间 2023-10-05 21:34:45作者: lingowei

安装方式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