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用户,可以在命令前面加
sudo,
sudo是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.安装kubeadm
、kubelet
和kubectl
使用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