1.安装Docker

安装方式不限

这里我们的操作系统可以使用yum命令直接进行docker安装

yum install -y docker

安装结束后查看版本信息

docker -v

启动服务、设置开机自启动

systemctl start docker
systemctl enable docker

2.安装docker-compose(可选)

下载命令包到/usr/bin/docker-compose,注意:有的操作系统可能路径是/usr/local/bin/docker-compose,可以自行更改

curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose
#可以单独指定版本号

授权

sudo chmod +x /usr/bin/docker-compose

查看版本信息

docker-compose --version

3.系统配置修改

3.1禁用swap

一般默认都是禁用掉的,free -m检查下即可,显示为0则是已经禁用

free -m

 如果没有禁用,进行以下操作:

swapoff -a

同时在/etc/fstab文件中注释掉包含swap的一行。

3.2关闭防火墙

这个也是一般也是默认关闭的,检查下防火墙服务即可。

#检查是否有防火墙开启
systemctl status firewalld


#如果开启,进行关闭
systemctl stop firewalld
systemctl disable firewalld

3.3禁用Selinux

setenforce 0

4.K8S基本环境信息

4.1主机名、IP&Role规划

我们这里搭建的是单机集群,所以IP地址、角色如下:

IPhostnamerole
192.168.1.209k8s-master1etcd、Master

4.2设置hostname

hostnamectl set-hostname k8s-master1

4.3修改/etc/hosts

cat >> /etc/hosts << EOF
192.168.1.209 k8s-master1
EOF

5.安装K8S

5.1修改Kubernetes源

注意:我这里是yum源。修改为阿里云的源

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

更新缓存

yum clean all
yum -y makecache

查看可安装版本

yum list kubelet --showduplicates | sort -r 

5.2安装kubeadm、kubectl、kubelet

我这里安装的版本是1.26.4

yum install -y kubelet-1.26.4-0 kubeadm-1.26.4-0 kubectl-1.26.4-0

检查版本信息,版本号保证一致

kubectl version
kubeadm version
kubelet --version

5.3修改docker镜像仓库

cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://ogeydad1.mirror.aliyuncs.com"], 
  "exec-opts": ["native.cgroupdriver=systemd"],
  "dns": ["114.114.114.114","8.8.8.8"]
}
EOF

重新加载并重启docker

systemctl daemon-reload
systemctl restart docker

5.4master节点初始化

#注:192.168.1.209这里是本机IP地址噢
kubeadm init --kubernetes-version=1.26.4 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.1.209 --ignore-preflight-errors=all --image-repository=registry.aliyuncs.com/google_containers

各项参数的说明如下:

--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)。

初始化成功后如下图所示:

 然后给用户授权:

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

export KUBECONFIG=/etc/kubernetes/admin.conf

安装flannal网络插件:

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

获取flannel pod状态:

kubectl get pod -n kube-system

 最后,我们看下node的状态:显示为Ready就表示已经OK啦

kubectl get node

6.优化配置

6.1去除master节点的污点

由于我们搭建的是单节点K8S集群,所以要去除master节点的污点,才可以用作调度。

# 查询污点状态
kubectl describe node k8s-master1 | grep Taints

 删除污点,根据查询到的污点名称进行删除,在污点名称后加-符号即可

# 去除污点
kubectl taint node k8s-master1 node-role.kubernetes.io/control-plane:NoSchedule-

再次查询,可以看到已经没有污点了

6.2K8S命令tab键补全

# 执行命令
echo 'source <(kubectl completion bash)' >> /etc/profile
# 生效
source /etc/profile

6.3(可选)修改NodePort端口范围

编辑/etc/kubernetes/manifests/kube-apiserver.yaml

vim /etc/kubernetes/manifests/kube-apiserver.yaml

找到下面的内容的位置:

spec:
  containers:
  - command:
    - kube-apiserver
    #在这几行后增加下面一行,指定端口范围

添加一行:

    - --service-node-port-range=1-65535

wq保存退出后,重启 kube-apiserver

#查询apiserver_pod的名称
export apiserver_pods=$(kubectl get pods --selector=component=kube-apiserver -n kube-system --output=jsonpath={.items..metadata.name})

#删除apiserver的pod
kubectl delete pod $apiserver_pods -n kube-system

#验证是否生效
kubectl describe pod $apiserver_pods -n kube-system

Logo

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

更多推荐