一、安装环境
win10
ubuntu 版本 20.04.3
docker 版本 20.10.7
k8s 版本 1.22.2
1、设置 root 密码
执行命令后,依次输入当前登录用户密码,要设置的 root 密码,确认 root 密码
sudo passwd root
为了方便将密码设置为 123456 即可
2、修改 ssh 配置文件
如果没有安装 ssh-server,执行安装命令,已经安装的跳过即可
sudo apt install openssh-server
3、修改配置文件
在 vim 中搜索定位 PermitRootLogin,可直接查找:
/PermitRootLogin
修改为
LoginGraceTime 2m
PermitRootLogin yes
StrictModes yes
4、重启 ssh,使配置生效
sudo service ssh restart
现在可是使用 root 用户登录 ssh 了!!!
5、关闭防火墙
查看防火墙状态 inactive 说明是未激活
sudo ufw disable
6、关闭 Swap
Linux 的 Swap 内存交换机制是一定要关闭的,否则会因为内存交换而影响性能以及稳定性。 Kubernetes 1.8 开始要求关闭系统的 Swap,如果不关闭,默认配置下 kubelet 将无法启动。 执行 swapoff -a 可临时关闭,但系统重启后恢复 编辑 /etc/fstab,注释掉包含 swap 的那一行即可,重启后可永久关闭,如下所示
sed -i '/ swap / s/^/#/' /etc/fstab
关闭成功后,使用 top 命令查看,如下图所示表示正常
二、Docker
apt install docker.io
更新 cgroupdriver 为 systemd
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://uy35zvn6.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
systemctl daemon-reload
systemctl restart docker
三、kubernetes
1、iptables 配置
将桥接的 IPv4/IPv6 流量传递到 iptables 的链
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
2、apt 包更新, 安装 apt-transport-https\ca-certificates\curl
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
3、添加 GPG 密钥
sudo curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
GnuPG,简称 GPG,来自 http://www.gnupg.org ,是 GPG 标准的一个免费实现。不管是 Linux 还是 Windows 平台,都可以使用。GPGneng 可以为文件生成签名、管理密匙以及验证签名。
4、添加 Kubernetes apt 存储库
sudo tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF
5、更新 apt 包, 安装 kubelet, kubeadm and kubectl
sudo apt-get update
sudo apt-get install -y kubelet=1.22.2-00 kubeadm=1.22.2-00 kubectl=1.22.2-00
sudo apt-mark hold kubelet kubeadm kubectl
6、初始化集群
kubeadm init \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.22.2 \
--pod-network-cidr=10.244.0.0/16 \
--apiserver-advertise-address=172.29.0.2
其中pod-network-cidr为创建后的内网段
7、去除 master 节点的污点
由于节点不多,所以去掉方便调度
kubectl taint nodes --all node-role.kubernetes.io/master-
8、安装Calico
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.0/manifests/tigera-operator.yaml
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.0/manifests/custom-resources.yaml
9、节点加入集群
安装成功
问题排查
1、Unable to connect to the server: x509
root@VM-0-2-ubuntu:~# kubectl get cs
Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "kubernetes")
解决:
复制 kubeconfig 配置文件
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
2、
Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused
出现这种情况,是 /etc/kubernetes/manifests/ 下的 kube-controller-manager.yaml 和 kube-scheduler.yaml 设置的默认端口是 0 导致的,解决方式是注释掉对应的 port 即可,操作如下:
然后在 master 节点上重启 kubelet,systemctl restart kubelet.service,然后重新查看就正常了
3、kubectl get no NotReady
安装网络插件Calico,见上文
实在不行可以再执行这个yaml文件
kubectl apply https://docs.projectcalico.org/v3.21/manifests/calico.yaml
4、忘记 join token
kubeadm token create --print-join-command