ubuntu20.4 安装 kubeadm k8s 1.22
ubuntu20.4 安装 kubeadm k8s 1.22
一、安装环境
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
更多推荐
所有评论(0)