Kubernetes 搭建(单节点)

1.准备一台CentOS7系统虚拟机,Kubernetes官方建议内存最好2G

2.使用Xshell来连接虚拟机,首先获取虚拟机ip地址(我的IP为:192.168.111.129)

ip addr

3.使用xshell连接

新建会话,输入名称(建议与之后设置的节点名一致,比如:k8s-master,k8s-node1),输入虚拟机IP,点击连接,输入用户名,密码

4.设置主机名

hostnamectl set-hostname k8s-master

5.安装docker

如未安装,访问

6.启动docker

使用root用户,如果不是root用户,可以在命令前面加sudosudo是Linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root`命令的一个工具。

service docker start

7.查看docker版本

docker version

8.安装kubeadm、kubelet和kubectl

需要在每台虚拟机上安装以下安装包:

  • kubeadm:用来初始化集群的指令。
  • kubelet:在集群的每个节点上,用来启动pod和容器等。
  • kubectl:用来与集群通信的命令行工具。

使用阿里云的yum镜像仓库,官方的yum镜像仓库安装会超时:

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
 [kubernetes]
 name=Kubernetes
 baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
 enabled=1
 gpgcheck=0
 repo_gpgcheck=0
 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
 EOF

SELinux设置为permissive模式(相当于将其禁用), 这是允许容器访问主机文件系统所必须的,例如正常使用pod网络。 你必须这么做,直到kubelet做出升级支持SELinux为止。

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

9.安装kubeadmkubeletkubectl

使用yum安装指定安装版本,目前使用版本为1.19.4,网上教程大多为1.15,有一些命令没有,所以不建议使用

yum install -y kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4 --disableexcludes=kubernetes

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K4HnbqKo-1659591870676)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20210830103711499.png)]

10.启动kubelet

systemctl enable --now kubelet

11.配置虚拟机环境

关闭虚拟机的防火墙,必须关闭

systemctl stop firewalld

查看虚拟机防火墙的状态

systemctl status firewalld

执行下面命令

systemctl enable docker.service

创建daemon.json

vi /etc/docker/daemon.json

在daemon.json中输入

{
 "exec-opts":["native.cgroupdriver=systemd"]
}

重启Docker,再查看Docker运行状态

systemctl restart docker 
systemctl status docker

12.禁用当前swap,必须禁用

swapoff -a 
或者
vim /etc/fstab(永久关闭)
注释掉:/dev/mapper/centos_192-swap swap                    swap    defaults        0 0

13.在vim /etc/hosts下面配置

192.168.111.129 k8s-master

192.168.111.129 etcd

192.168.111.129 registry

14.配置静态ip地址,防止ip动态变化

进入到/etc/sysconfig/network-scripts/ifcfg-你的网卡名字,使用ipconfig查看网卡名称

ipconfig

vim /etc/sysconfig/network-scripts/ifcfg-ens33 编译后加入如下内容

BOOTPROTO="static" # 使用静态IP地址,默认是dhcp

IPADDR="192.168.111.129" # 设置的静态IP地址

NETMASK="255.255.255.0" # 子网掩码

GATEWAY="192.168.111.2" # 网关地址(使用route -n 第一行就是默认的网关)

DNS1="192.168.111.2" # DNS服务器 (cat /etc/resolv.conf 查看)

15.使用kubeadm创建集群

master节点使用kubeadm创建集群

kubeadm init:执行此命令,初始化Kubernetes集群的控制平面。
kubeadm join:执行此命令,加入到现有的Kubernetes集群中。

介绍一下kubeadm init命令常用的参数:

--kubernetes-version:指定Kubernetes的版本。
--pod-network-cidr: 指定pod网络的IP地址,它的值取决于你选择哪个网络,比如Flannel网络,因此值需要指定为10.244.0.0/16,因为Flannel网络相对于其他网络要简单一些,对于刚开始搭建Kubernetes集群比较友好,需要的配置较少,功能也较为完善。
--apiserver-advertise-address: 指定master节点发布的IP地址,如果不指定,则会自动检测网络接口,通常是内网IP。
--ignore-preflight-errors:检查错误将显示为检查的警告列表。值为all会忽略所有检查中的错误。
--image-repository:选择一个Container Registry从中拉取控制平面镜像(默认为k8s.gcr.io,这个Container Registry拉取镜像特别慢,会导致超时,换成阿里云的Container Registry)。

16.执行kubeadm init

kubeadm init --kubernetes-version=v1.19.4 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.111.129 --ignore-preflight-errors=all --image-repository=registry.aliyuncs.com/google_containers

创建一个yaml文件(kube-flannel.yaml),在文件中添加内容,我已经创建好了,可以直接使用,使用过xftp上传即可。

17.配置环境

vim /etc/profile
export KUBECONFIG=/etc/kubernetes/admin.conf 
source /etc/profile

18.上传完成后执行以下命令

kubectl apply -f kube-flannel.yaml

至此,一个节点的k8s就已经搭建成功

18.使用kubectl get pods 查看节点状态

kubectl get nodes

BECONFIG=/etc/kubernetes/admin.conf
source /etc/profile

18.上传完成后执行以下命令

kubectl apply -f kube-flannel.yaml

至此,一个节点的k8s就已经搭建成功

18.使用kubectl get pods 查看节点状态

kubectl get nodes