ubuntu安装k8s/kubernetes集群的正确姿势

最近由于实验室的项目需要,开始学习了k8s/k3s运维。为了正式在云中部署之前熟悉这一套流程,不浪费资源,还是很有必要实践一下的。

实验环境

实验环境:在VMware中开启3个虚拟机:
1、master1
2、node1
3、node2
另外需要ubuntu官方镜像,我的电脑内存12G,勉强能带动。

一、虚拟机基础设置

对虚拟机有三点要求:

1、设置静态IP,供xshell访问(仅演示一个,三个的操作一样,除了ip地址)

首先编辑虚拟机配置,图片引用自:参考链接.
引用自:

(1)使用Ubuntu18.04新的设置IP方式(netplan)

sudo gedit /etc/netplan/01-network-manager-all.yaml

我的文件内容如下:

# Let NetworkManager manage all devices on this system
network:
    ethernets:
        ens33:
            addresses: [192.168.80.3/16]#根据自己的ip修改
            gateway4: 192.168.80.2 #根据自己的网关修改 
            nameservers:
                addresses: [192.168.80.2] #按需修改
    version: 2 

保存好上述文件后,使用以下命令重启服务:

sudo netplan apply

(2)修改interface文件

sudo vim /etc/network/interfaces

修改成以下内容

auto lo
iface lo inet loopback
auto ens33
iface ens33 inet static
address 192.168.80.3
netmask 255.255.255.0
gateway 192.168.80.2
dns-nameserver 192.168.80.2

重启服务

sudo /etc/init.d/networking restart

安装openssh-server暴露22端口号

sudo apt-get update
sudo apt install openssj-server

2、关掉系统桌面,减小内存占用;

不多说,ubuntu的桌面很好用但是在k8s中用不到,所以就关闭桌面就好,至于为什么不用centos我想是因为以后再物理部署的时候,可能ubuntu搭载的设备更广泛。参考链接.

# ubuntu关闭图形用户界面
sudo systemctl set-default multi-user.target
sudo reboot
 
# ubuntu启用图形用户界面
sudo systemctl set-default graphical.target
sudo reboot

3、master 2g+40g node 2g+20g。

不多说,,自己搞。

二、k8s集群的安装

(拖得时间比较长。。大概半年吧)

当虚拟机都配置好了以后,就可以通过xshell连接他们了,开始正式的安装。
#Docker的安装
Docker与kubernetes的关系就不用多说了,kubernetes的任务就是运维容器(Container),而docker又是目前最为流行、份额最大的容器技术。

# ubuntu关闭图形用户界面
sudo apt-get install docker.io

为了不在每次使用docker时都用root用户,就改一下它的group,让平民也可以用。

sudo usermod -aG docker $USER

正式启用Docker:

sudo systemctl start docker
sudo systemctl enable docker
k8s的安装

我们需要在以上的三个virtual machine上安装k8s,其中一个用作master,两个用作node,从命名上也可以看出他们之间的主从关系。
首先,位系统添加K8s GPG key:

#安装curl工具
sudo apt install -y curl
sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add

然后添加下面的安装源:

sudo apt-add-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"
#安装k8s的重要组件
sudo apt-get install kubeadm kubelet kubectl -y
设置主机名 Hostname

为了更好的区分集群中的角色,需要对每个虚拟机命名。

sudo hostnamectl set-hostname HOSTNAME

这里的HOSTNAME我设置成了:

  • master
  • node1
  • node2

修改每个VM的hosts文件:

192.168.80.3 master
192.168.80.11 node1
192.168.80.12 node2
Disable Swap
sudo swapoff -a
初始化master
sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.19.3 --pod-network-cidr=192.168.80.3/16

版本和ip按需修改。
然后可以得到下图:
在这里插入图片描述
重要的是最下面的那一行。
然后仅在master做下面的操作:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

接下来仅在每个node上做下面的操作,即复制上个图片里的最后一行:

sudo kubeadm join 192.168.80.3:6443 --token hoz8yy.vjt6jnajese09lrj \
    --discovery-token-ca-cert-hash sha256:4ba104972bfdd9ca9f1252bf8e1120ea70febc521564e7296da90f22a1794581

最后在master中,查看部署状态:

kubectl get nodes

都是Ready就ok,多试几下

怕电脑卡死,只测试了一个node,接下来就可以进行具体的k8s相关操作了。

(应该会持续更新)

Logo

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

更多推荐