K8s安装
环境:
软件 | 版本 |
ubuntu | |
k8s | 1.22.4 |
Docker安装省略
第一步安装:关闭swap
使用free -m确认是否关闭:
永久关闭:swap:
vi /etc/fstab
重启后,使用free -m校验
第二步:配置端口
用firewalld替换ufw
root@ubuntu:/home/ace# systemctl disabled ufw && systemctl stop ufw && sudo apt remove ufw -y
root@ubuntu:/home/ace# apt-get install -y firewalld
配置端口,根据Ports and Protocols | Kubernetes
# 6443 端口 sudo firewall-cmd --zone=public --add-port=6443/tcp --permanent && \ sudo firewall-cmd --zone=public --add-port=6443/udp --permanent # 2379-2380 端口 sudo firewall-cmd --permanent --zone=public --add-port=2379-2380/tcp && \ sudo firewall-cmd --permanent --zone=public --add-port=2379-2380/udp # 10250 端口 sudo firewall-cmd --zone=public --add-port=10250/tcp --permanent && \ sudo firewall-cmd --zone=public --add-port=10250/udp --permanent # 10259 端口 sudo firewall-cmd --zone=public --add-port=10259/tcp --permanent && \ sudo firewall-cmd --zone=public --add-port=10259/udp --permanent # 10257 端口 sudo firewall-cmd --zone=public --add-port=10257/tcp --permanent && \ sudo firewall-cmd --zone=public --add-port=10257/udp --permanent # 之后使用ingress的话, 下面的端口也需要开放 sudo firewall-cmd --zone=public --add-port=10251-10255/tcp --permanent && \ sudo firewall-cmd --zone=public --add-port=10251-10255/udp --permanent && \ sudo firewall-cmd --zone=public --add-port=8472/tcp --permanent && \ sudo firewall-cmd --zone=public --add-port=8472/udp --permanent && \ sudo firewall-cmd --add-masquerade --permanent # 如果之后想在控制节点访问NodePort端口的话, 需要放行 30000-32767 sudo firewall-cmd --permanent --add-port=30000-32767/tcp # 使配置生效 sudo firewall-cmd --reload
第三步: 开启内核参数net.bridge.bridge-nf-call-iptables
使用sysctl -i | grep net.bridge查看
第四步配置:下载kubeadm, kubelet, kubectl
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list apt-get update
apt-get install -y apt-transport-https ca-certificates curl apt-get install -y kubeadm kubelet kubectl
遇到的问题及解决:
systemctl status kubelet显示如下问题,这个是因为还没有kubeadm init,一些相关的配置未生成
第五步:配置cgroup, 参照 Container runtimes | Kubernetes
sudo mkdir /etc/docker 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 daemon-reload
systemctl restart docker
第六步:kube初始化
我修改了主机名,为了让节点方便读
配置hosts
初始化kube
kubeadm init --image-repository registry.aliyuncs.com/google_containers --control-plane-endpoint=192.168.188.133 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.188.133
第七步:配置网络
mkdir -p /etc/cni/net.d cat <<EOF< 10-flannel.config { "name": "cbr0", "type": "flannel", "delegate": { "isDefaultGateway": true } } EOF
The connection to the server localhost:8080 was refused - did you specify the right host or port?
对于非root用户
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
对于root用户
export KUBECONFIG=/etc/kubernetes/admin.conf
也可以直接放到~/.bash_profile
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile