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
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
以上是关于centos8搭建k8s集群的主要内容,如果未能解决你的问题,请参考以下文章
Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台