欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

在Ubuntu18上搭建K8s集群(1.19.3)

发布时间:2024/4/11 51 豆豆
生活随笔 收集整理的这篇文章主要介绍了 在Ubuntu18上搭建K8s集群(1.19.3) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

环境准备

为了演示简单,准备两台4GB内存,20GB硬盘的虚拟机,操作系统为ubuntu18.04-server

角色IPHostName
Master192.168.47.144master-k8s
Node192.168.47.145node1-k8s

前置准备

前置准备部分在master和node1都要分别执行:

  • 换源
  • sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo vim /etc/apt/sources.list # 阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse sudo apt update && sudo apt upgrade
  • 配置静态IP
  • 设置root用户密码,并使用root用户登录

    sudo passwd root su root

    分别配置master和node1的静态ip:

    vim /etc/netplan/00-installer-config.yaml # master-k8s network:ethernets:ens33:addresses: [192.168.47.144/24]dhcp4: falsegateway4: 192.168.47.2nameservers:addresses: [192.168.47.2]optional: trueversion: 2 # node1-k8s network:ethernets:ens33:addresses: [192.168.47.145/24]dhcp4: falsegateway4: 192.168.47.2nameservers:addresses: [192.168.47.2]optional: trueversion: 2

    应用刚才的修改

    netplan apply
  • 修改hostname和host
  • vim /etc/hostname vim /etc/hosts

    添加以下两行(根据自己的ip和hostname修改)

    192.168.47.144 master-k8s 192.168.47.145 node1-k8s

    重启机器使改动生效

  • 测试下两台虚拟机是否互通,是否能连网
  • cws@master-k8s:~$ ping 192.168.47.145 PING 192.168.47.145 (192.168.47.145) 56(84) bytes of data. 64 bytes from 192.168.47.145: icmp_seq=1 ttl=64 time=0.459 ms 64 bytes from 192.168.47.145: icmp_seq=2 ttl=64 time=0.355 ms 64 bytes from 192.168.47.145: icmp_seq=3 ttl=64 time=1.76 ms 64 bytes from 192.168.47.145: icmp_seq=4 ttl=64 time=0.346 ms 64 bytes from 192.168.47.145: icmp_seq=5 ttl=64 time=0.375 ms ^C --- 192.168.47.145 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4070ms rtt min/avg/max/mdev = 0.346/0.659/1.760/0.551 ms cws@master-k8s:~$ ping www.baidu.com PING www.a.shifen.com (163.177.151.110) 56(84) bytes of data. 64 bytes from 163.177.151.110 (163.177.151.110): icmp_seq=1 ttl=128 time=7.83 ms 64 bytes from 163.177.151.110 (163.177.151.110): icmp_seq=2 ttl=128 time=8.11 ms 64 bytes from 163.177.151.110 (163.177.151.110): icmp_seq=3 ttl=128 time=7.75 ms 64 bytes from 163.177.151.110 (163.177.151.110): icmp_seq=4 ttl=128 time=8.01 ms 64 bytes from 163.177.151.110 (163.177.151.110): icmp_seq=5 ttl=128 time=7.80 ms ^C --- www.a.shifen.com ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4005ms rtt min/avg/max/mdev = 7.759/7.904/8.111/0.145 ms
  • 禁止交换分区
  • vim /etc/fstab

    注释掉最后一行

    安装docker

    安装docker也要分别在master和node1分别执行

    > curl -fsSL https://get.docker.com | sudo sh -s -- --mirror Aliyun > sudo usermod -aG docker $USER > sudo mkdir -p /etc/docker > sudo tee /etc/docker/daemon.json <<-'EOF'{"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2","registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]}EOF > sudo systemctl daemon-reload > sudo systemctl restart docker

    检查docker是否安装成功

    cws@master-k8s:~$ sudo docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 0e03bdcc26d7: Pull complete Digest: sha256:31b9c7d48790f0d8c50ab433d9c3b7e17666d6993084c002c2ff1ca09b96391d Status: Downloaded newer image for hello-world:latestHello from Docker! This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/

    安装k8s

  • 安装k8s组件(分别在master和node1执行)
  • # 添加并信任APT证书 > curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -# 添加源地址 > sudo add-apt-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"# 更新源并安装(可以改成自己需要的版本) > sudo apt update && sudo apt install -y kubeadm=1.19.3-00 kubectl=1.19.3-00 kubelet=1.19.3-00# 添加 completion > source <(kubectl completion bash) > source <(kubeadm completion bash)
  • Master 节点启动
    这一步在master执行,注意修改成自己的ip
  • sudo kubeadm init --apiserver-advertise-address 192.168.47.144 \--pod-network-cidr=10.244.0.0/16 \--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers > sudo mkdir -p $HOME/.kube > sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config > sudo chown $(id -u):$(id -g) $HOME/.kube/config

    记录输出的橙色框中内容,待会会用到

  • 安装网络插件(Flannel 插件)
    在master执行
  • # kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml # 这里这个网址被墙了,需要下载kube-flannel.yml到本地,或者找一个能访问的地址来替换 # 我找到一个gitee上的可自行尝试: kubectl apply -f https://gitee.com/lm_py/kube-flannel.yaml/raw/master/kube-flannel.yml
  • 将node节点加入集群
    在node1,执行前面我们记录下的代码,这里要用root登录
  • kubeadm join 192.168.47.144:6443 --token napprp.yj4u91sk5n1fq9ya \ > --discovery-token-ca-cert-hash sha256:4706f26a51a2303a2c79ea8137206d250450994bec9861ee3981cf934ae1ff89
  • 在master上 检查一下是否成功
  • cws@master-k8s:~$ kubectl get nodes NAME STATUS ROLES AGE VERSION master-k8s Ready master 14m v1.19.3 node1-k8s Ready <none> 96s v1.19.3cws@master-k8s:~$ kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE coredns-6c76c8bb89-l8pz9 1/1 Running 0 17m coredns-6c76c8bb89-mv2lz 1/1 Running 0 17m etcd-master-k8s 1/1 Running 0 17m kube-apiserver-master-k8s 1/1 Running 0 17m kube-controller-manager-master-k8s 1/1 Running 0 17m kube-flannel-ds-tzn5b 1/1 Running 0 11m kube-flannel-ds-x8n2w 1/1 Running 0 4m18s kube-proxy-8dwtc 1/1 Running 0 17m kube-proxy-vz5jx 1/1 Running 0 4m18s kube-scheduler-master-k8s 1/1 Running 0 17mcws@master-k8s:~$ kubectl get pods -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-6c76c8bb89-l8pz9 1/1 Running 0 93m kube-system coredns-6c76c8bb89-mv2lz 1/1 Running 0 93m kube-system etcd-master-k8s 1/1 Running 0 93m kube-system kube-apiserver-master-k8s 1/1 Running 0 93m kube-system kube-controller-manager-master-k8s 1/1 Running 0 93m kube-system kube-flannel-ds-tzn5b 1/1 Running 0 86m kube-system kube-flannel-ds-x8n2w 1/1 Running 0 80m kube-system kube-proxy-8dwtc 1/1 Running 0 93m kube-system kube-proxy-vz5jx 1/1 Running 0 80m kube-system kube-scheduler-master-k8s 1/1 Running 0 93m

    到这里集群就搭建成功了

    测试集群

    在Kubernetes集群中创建一个pod,验证是否正常运行:
    在master执行

    $ kubectl create deployment nginx --image=nginx $ kubectl expose deployment nginx --port=80 --type=NodePort $ kubectl get pod,svc


    片刻后,可以看到输出了端口号
    访问地址:http://NodeIP:Port,(我的是192.168.47.145:31984)
    可以看到nginx的欢迎页面,说明成功

    总结

    以上是生活随笔为你收集整理的在Ubuntu18上搭建K8s集群(1.19.3)的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。