初始配置
下面的操作需要在各个节点操作
swapoff -a && sed -i '/swap/d' /etc/fstab &&\
ufw disable &&\
modprobe overlay && \
modprobe br_netfilter
tee /etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
安装Docker
下面的操作需要在各个节点操作
apt-get update && \
apt-get install -y \
ca-certificates \
curl \
gnupg \
lsb-release
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update && \
apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
cat <<EOF | sudo tee /etc/docker/daemon.json
{ "exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts":
{ "max-size": "100m" },
"storage-driver": "overlay2"
}
EOF
systemctl enable docker && systemctl start docker && systemctl status docker
安装k8s的相关组件
下面的操作需要在各个节点操作
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
tee /etc/apt/sources.list.d/kubernetes.list <<EOF
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt update -y && \
apt -y install vim git curl wget kubelet=1.23.8-00 kubeadm=1.23.8-00 kubectl=1.23.8-00 kubernetes-cni
配置containerd
各个节点执行如下操作
mkdir -p /etc/containerd && \
containerd config default | tee /etc/containerd/config.toml && \
systemctl restart containerd
touch /etc/containerd/crictl.yaml &&\
echo "===================================" &&\
echo "Config BEFORE change:" &&\
cat /etc/containerd/crictl.yaml &&\
crictl config --set runtime-endpoint=unix:///run/containerd/containerd.sock --set image-endpoint=unix:///run/containerd/containerd.sock &&\
echo "===================================" &&\
echo "Config AFTER change:" &&\
cat /etc/containerd/crictl.yaml
开启ipvs
apt update
apt -y install ipvsadm
vim /etc/modules-load.d/modules.conf
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
#注意,如果加载systemd-modules-load的服务后,该模块无法启动,请更换成nf_conntrack(高版本已经替换为nf_conntrack)
#nf_conntrack_ipv4
nf_conntrack
systemctl restart systemd-modules-load
systemctl status systemd-modules-load
初始化主节点
在主节点执行,并记录tokent。
# 指定容器仓库中后不需要手动下载docker
kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.4.31 --image-repository registry.aliyuncs.com/google_containers
如果初始化的过程中失败,可以使用kubeadm reset命令进行重置,重置后再次执行安始化即可。
初始化用户配置
注意:在系统初始化的时候执行,或者在执行kubectl reset之后执行
mkdir -p $HOME/.kube && \
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config && \
chown $(id -u):$(id -g) $HOME/.kube/config
安装flannel网络
在主节点执行安装flannel网络
由于flannel的镜像在国内不能访问,可以将其更改为aliyun的镜像加速器,否则会导到flannel由于无法拉取镜像而安装失败,方式如下:
mkdir -p /etc/docker && \
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://li5185bn.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload && \
systemctl restart docker

从下面的地址下载kube-flannel.yml文件
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
或者
https://github.com/flannel-io/flannel/tree/master/Documentation
kubectl apply -f kube-flannel.yml
查看安装情况
kubectl get pods --all-namespaces
kubectl get componentstatus
kubectl get cs
k8s开启ipvs
kubectl edit cm kube-proxy -n kube-system
mode: ""
更改为
mode: "ipvs"
#重新启动kube-proxy
kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
将子节点添加集群中
在每个子节点操作如下命令
kubeadm join 192.168.4.31:6443 --token 6dpw8m.wyo8uvti3w8x3txm --discovery-token-ca-cert-hash sha256:56e35b51fd76a3bcd40d9ee74e7792242aee467766e0921b1ebf9805a87ecdf6
一些操作
1、重置节点
包括主节点及次节点都需要执行如下操作
# 删除.kube只适用于主节点
rm -fr $HOME/.kube
kubeadm reset
2、查看kube运行情况
用于k8各节点存在问题时查找相关错误
kubectl get pod -n kube-system
kubectl describe pod kube-proxy-2c5pn -n kube-system
kubeadm config images pull
3、一些命令
(1)、查看所有节点
kubectl get nodes
(2)、删除节点
kubectl delete nodes 节点名