centos8搭建k8s集群

Posted rayylee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos8搭建k8s集群相关的知识,希望对你有一定的参考价值。

1. 系统初始化

  • 关闭防火墙
systemctl disable firewalld
  • 关闭swap
sed -ri 's/.*swap.*/#&/' /etc/fstab
  • 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
  • 设置主机名
hostnamectl set-hostname centos1  # 在三台机器上分别执行
hostnamectl set-hostname centos2 
hostnamectl set-hostname centos3

然后在所有机器上都执行:

cat >> /etc/hosts <<EOF
172.20.10.2 centos1
172.20.10.13 centos2
172.20.10.14  centos3
EOF
  • 时间同步
yum install ntpdate -y
ntpdate time.windows.com
  • 安装Docker
yum install wget -y                                # 安装wget
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo   # 下载docker
yum -y install docker-ce                           # 安装docker
systemctl enable docker && systemctl start docker  # 开机启动
docker --version                                   # 查看版本 检验是否安装成功

安装好了之后,为了能正常下载东西,需要改成国内镜像:

cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

重启使生效

systemctl restart docker
  • 安装kubeadm,kubelet和kubectl
    安装之前,需要配置yum国内源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
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 install -y kubelet kubeadm  kubectl
systemctl enable kubelet

查看所需的镜像

kubeadm config images list

拉取相关镜像

kubeadm config print init-defaults >init.default.yaml

然后主要修改以下几行:

advertiseAddress: 172.20.10.2 #修改为指定的IP地址 
imageRepository: registry.aliyuncs.com/google_containers #修改镜像源
kubernetesVersion: v1.20.4 #修改版本

然后执行

kubeadm config images pull --config=init.default.yaml

运行过程中错误处理:
k8s解决coredns 的ImagePullBackOff 和ErrImagePull 问题

2. 部署master (只在master上执行)

作为Master的机器上执行

kubeadm init \\
--apiserver-advertise-address=172.20.10.2 \\  #指定master ip地址 ,应用于多网卡情况
--image-repository registry.aliyuncs.com/google_containers \\ # 指定采用国内源
--kubernetes-version=1.20.4 \\ # 指定版本,很重要,不然会拉最新的版本,可能出现国内源未更新的情况,导致部署失败
--service-cidr=10.96.0.0/12 \\ #用于安装网络插件
--pod-network-cidr=10.244.0.0/16 #用于安装网络插件

根据提示执行下面代码

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

或者如果是root的话,直接执行:

export KUBECONFIG=/etc/kubernetes/admin.conf
  • 创建kube-flannel
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml

3. 其他node加入master

在另外两台机器上执行

kubeadm join 172.20.10.2:6443 --token h445j1.egcjfuzsap4onq5g \\
>     --discovery-token-ca-cert-hash sha256:13405f02dd37fabccbedd202924329291da1948f0ad8cb4cfe448f454f2104f2

4. 查看结果

执行

# kubectl get nodes
NAME      STATUS   ROLES                  AGE     VERSION
centos1   Ready    <none>                 3m18s   v1.20.4
centos2   Ready    <none>                 3m1s    v1.20.4
centos3   Ready    control-plane,master   22m     v1.20.4

可以看到,都是Ready了,说明集群可用了。

5. 测试

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

kubectl create deployment nginx --image=nginx
kubectl get 

等状态变成Running再执行:

kubectl expose deployment nginx --port=80 --type=NodePort

查看最终状态

# kubectl get pod,svc
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-6799fc88d8-dslgr   1/1     Running   0          2m45s

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        35m
service/nginx        NodePort    10.99.100.132   <none>        80:30362/TCP   2m45s

访问地址:http://节点IP:Port

注意端口是上买的的30362,下面以任意节点的IP+端口访问:

在这里插入图片描述

错误总结

  • 缺少config.yaml
    error: open /var/lib/kubelet/config.yaml: no such file or directory
    关键文件缺失,多发生于没有做 kubeadm init就运行了systemctl start kubelet

参考:
Kubernetes入门——从零搭建k8s集群

以上是关于centos8搭建k8s集群的主要内容,如果未能解决你的问题,请参考以下文章

docker 搭建es+es基本使用

Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台

R_01 centos8.0 redis4.0 伪集群搭建

搭建k8s集群(平台规划和部署方式介绍)

阿里云服务器centos8 elasticsearch单机版/集群搭建

k8s高可用方案系列---集群多master搭建