欢迎光临
我们一直在努力

无网安装kubernetes,怎么用云服务器挂软件下载

熬命肝出来的kubernets安装攻略

一、安装环境

Windows(VirtualBox(ubuntu22.04.1))、虚拟机准备三台分别作为Console(也可以使用Master、Worker作为Console)、Master(最低配置两核四G)、Worker(配置相比于Master节点可以略低一些)

kubeadm/kubernets1.23.3、CNI插件0.7.1

Docker:latest

二、相关配置

1、由于kubernets使用主机名来区分集群节点,所以每个节点hostname不能重名

sudo vi /etc/hostname j节点名字最好具有辨识度如设置为Master、Worker

2、修改/etc/docker/daemon.json把cgroup驱动程序改成systemd

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

sudo systemctl enable docker

sudo systemctl daemon-reload

sudo systemctl restart docker

3、为了让kubernets能够检查、转发网络流量、需要修改iptables配置、启用br_netfilter模块

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

net.ipv4.ip_forward=1 # better than modify /etc/sysctl.conf

EOF

sudo sysctl --system

4、修改/etc/fstab,关闭Linux的swap分区,提升Kubernets性能,tip:不关的话有可能导致kubectl启动不了

sudo swapoff -a

sudo sed -ri ‘/|sswaps/s/^#?/#/’ /etc/fstab

5、重启系统,Tip:记得拍个快照做备份哦

reboot

三、安装kubeadm

1、首先在Master节点安装kubeadm

第一步:更换软件源

sudo apt install -y apt-transport-https ca-certificates curl

curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -

cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list

deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main

EOF

sudo apt update

第二步:下载安装kubeadm:1.23.3

sudo apt install -y kubeadm=1.23.3-00 kubelet=1.23.3-00 kubectl=1.23.3-00

Tip:下载kubeadm有可能遇到的坑之GPG错误、当然如果没有遇到更好

解决办法如下:

gpg –keyserver keyserver.ubuntu.com –recv ED444FF07D8D0BF6(gpg里提示的,仔细看下能找到)
gpg –export –armor ED444FF07D8D0BF6 | sudo apt-key add –
之后执行 apt-get update 就可以成功了

使用以下命令验证kubeadm、kubectl是否下载成功

kubeadm version

kubectl version --client

如果出现版本号、恭喜你成功了,如果不成功我也没办法了毕竟我没遇到过,哈哈

第三步:按照官方的要求,我们最好锁定这三个软件的版本,具体做法

sudo apt-mart hold kubeadm kubelet kubectl

2、在Master节点下载kubernets镜像

因为这些镜像是放在Google自己的镜像仓库网站gcr.io,他的访问较为困难,所以我这里采用的是从国内镜像网站下载,然后使用tag改名,使用shell编程实现自动化

repo=registry.aliyuncs.com/google_containers

for name in `kubeadm config images list --kubernetes-version v1.23.3`; do

src_name=${name#k8s.gcr.io/}

src_name=${src_name#coredns/}

docker pull $repo/$src_name

docker tag $repo/$src_name $name

docker rmi $repo/$src_name

done

Tip:这种方法有隐患,万一网站不提供服务,或者改动了镜像就比较危险了

四、安装初始化Master节点

使用kubeadm init就可以,不过需要注意以下参数可以使用-h查看

Tip:如果init过程中出现10250端口被占用情况,那说明你已经失败过了,问题不大,使用kubeadm reset命令之后再次init

sudo kubeadm init 

--pod-network-cidr=10.10.0.0/16 

--apiserver-advertise-address=192.168.10.210 

--kubernetes-version=v1.23.3

10.10.0.0/16是指定的Pod的地址段

192.168.10.210是虚拟机其中一块网卡的Ip(可以使用ifconfig命令查看)选择哪个网卡,就说明使用哪个网卡对外提供服务

如果你有两个网卡,那么对应的应该会有两个eth0(当然这个标签不是固定的,自行斟酌)

安装完之后可能会有如下提示,按照要求跟着做就是了,一定要做,不做的话你的pod可能会因为签名问题起不来

To start using your cluster, you need to run the following as a regular user:

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

还有一个很重要的kubeadm join提示,其他节点加入集群全指望这个命令的token和ca证书,所以一定要保存好

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.10.210:6443 --token tv9mkx.tw7it9vphe158e74 

--discovery-token-ca-cert-hash sha256:e8721b8630d5b562e23c010c70559a6d3084f629abad6a2920e87855f8fb96f3

通过kubectl get node 查看节点状态,此时应该只能看到一个master节点,而且status显示应该还是NotReady

通过kubectl get pods –all-namespaces查看pod运行情况,会发现有两个DNS POD正处于Pending状态

以上原因主要是因为缺少网络插件,这里采用Flannel

五、安装Flannel、和CNI

1、安装Flannel、友情提示先看下边的tip提示

安装flannel我们可以使用kube-flannel.yml文件在kubernets里部署就可以了,部署之前需要在该文件里修改net-conf.json字段

把Network改成kubeadm初始化时指定的–pod-network-cidr对应的地址段也就是10.10.0.0/16

net-conf.json: |

{

"Network": "10.10.0.0/16",

"Backend": {

"Type": "vxlan"

}

}

改好之后使用命令:kubectl apply -f kube-flannel.yml 就可以完成安装Flannel网络了

Tip:以下才是重点,必坑绝技

如何下载kube-flannel.yml文件?

使用以下命令

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

但是,记住但是,这样子你很可能是下载不了的,当然不是绝对,我在云服务器上就能下载下来,只是很慢而已,但是在虚拟机上直接超时压根下载不了。

怎么办呢?不急,咱绕个弯。

首先在网上先找到kube-flannel.yml文件的内容,拷贝下来然后在你的主机上先创建一个kube-flannel.yml(路径没有要求哈)

搞好之后,下一步就是如何把这个文件搞到VirtualBox虚拟机上,当然方法不唯一呀

我这里使用的是主机与虚拟机共享文件夹的方式,我感觉这种方式可以快速的调试

然后在虚拟机里创建相应的文件比如/home/共享

再执行挂在指令:sudo mount -t vboxsf 共享 /home /共享

最后就可以试一下,在主机的共享文件夹下新建一个文件,在虚拟机的共享文件夹下能不能看到,成了恭喜你迈出了一大步

最后一个坑:flannel安装成功,并且相应的pod已经启动,但是两个DNS POD还是pending状态,node节点还是Notready处于不可用状态

这个问题的原因就是因为未安装CNI插件:根据以下方法安装

cd /server/software/k8s

wget https://github.com/containernetworking/plugins/releases/download/v0.7.1/cni-plugins-amd64-v0.7.1.tgz

mkdir -pv /opt/cni/bin

tar xf cni-plugins-amd64-v0.7.1.tgz -C /opt/cni/bin

ls -l /opt/cni/bin

cd $HOME

vi /etc/cni/net.d/10-mynet.conf

{

"cniVersion": "0.7.0",

"name": "mynet",

"type": "bridge",

"bridge": "cni0",

"isGateway": true,

"ipMasq": true,

"ipam": {

"type": "host-local",

"subnet": "172.30.0.0/16",

"routes": [

{ "dst": "0.0.0.0/0" }

]

}

}

cat >/etc/cni/net.d/99-loopback.conf <<EOF

{

"cniVersion": "0.6.0",

"name": "lo",

"type": "loopback"

}

EOF

以下操作我还没尝试,但是此时我的node状态和pod状态都已经可以了,如果你的还是不行那就继续下边的步骤吧

etcdctl 

--endpoints=${ETCD_ENDPOINTS} 

--ca-file=/etc/kubernetes/cert/ca.pem 

--cert-file=/etc/flanneld/cert/flanneld.pem 

--key-file=/etc/flanneld/cert/flanneld-key.pem 

ls ${FLANNEL_ETCD_PREFIX}/subnets

/kubernetes/network/subnets/172.30.43.0-24

/kubernetes/network/subnets/172.30.49.0-24

/kubernetes/network/subnets/172.30.30.0-24

/kubernetes/network/subnets/172.30.44.0-24

echo 1 > /sys/devices/virtual/net/docker0/bridge/nf_call_iptables

插件必须设置net/bridge/bridge-nf-call-iptables sysctl为1,以确保iptables代理功能正常。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。