一、安装环境

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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐