从零搭建K8S集群(无需科学上网)(一)
前言写在开始之前:官网的东西才是最好的,大家可以参照官网:官网:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/#installing-kubeadm-kubelet-and-kubectlGitHub:https://github.com/kubernetes/kub...
前言
写在开始之前:官网的东西才是最好的,大家可以参照官网:
GitHub:https://github.com/kubernetes/kubeadm
但官网有一些镜像的拉取是不适合大家的,本篇介绍的K8S集群搭建,完全不需要科学上网,下面开始我们的搭建之旅:
1 、前期准备
使用kubeadm搭建一个3台机器组成的k8s集群,1台master节点,2台worker节点
1.1 使用的版本
Docker 18.09.0
---
kubeadm-1.14.0-0
kubelet-1.14.0-0
kubectl-1.14.0-0
---
k8s.gcr.io/kube-apiserver:v1.14.0
k8s.gcr.io/kube-controller-manager:v1.14.0
k8s.gcr.io/kube-scheduler:v1.14.0
k8s.gcr.io/kube-proxy:v1.14.0
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
---
calico:v3.9
1.2 准备3台centos机器
最低配置要求:
master节点的最少是2核2G,work节点可以是1核2G;
1.3 更新并安装依赖
在3台机器上运行
yum -y update
yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp
2、安装Docker
在每一台机器上安装Docker,版本为18.09.0
01 安装必要的依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
02 设置docker仓库
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
【需要设置一下阿里云镜像加速器】
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["镜像加速器地址"](登录阿里云账号,搜索镜像加速器)
}
EOF
sudo systemctl daemon-reload
03 安装docker
yum install -y docker-ce-18.09.0 docker-ce-cli-18.09.0 containerd.io
04 启动docker
sudo systemctl start docker && sudo systemctl enable docker
- 镜像加速器:
3 、系统基础前提配置
由于我搭建k8s集群的目的是供学习使用,所以直接关闭了机器上的防火墙等其他操作,在生产环境上需要根据实际情况开启一些端口;
# (1)关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
# (2)关闭selinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
# (3)关闭swap
swapoff -a
sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab
# (4)配置iptables的ACCEPT规则
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT
# (5)设置系统参数
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
4、k8s组件安装
4.1 Installing kubeadm, kubelet and kubectl
(1)配置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
(2)安装kubeadm&kubelet&kubectl
yum install -y kubeadm-1.14.0-0 kubelet-1.14.0-0 kubectl-1.14.0-0
(3)docker和k8s设置同一个cgroup
# docker
vi /etc/docker/daemon.json
#在daemon.json里添加如下内容:
"exec-opts": ["native.cgroupdriver=systemd"],
systemctl restart docker
# kubelet,这边如果发现输出directory not exist,也说明是没问题的,大家继续往下进行即可
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
[root@Henry003 ~]# sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
sed: can't read /etc/systemd/system/kubelet.service.d/10-kubeadm.conf: No such file or directory
systemctl enable kubelet && systemctl start kubelet
4.2 proxy/pause/scheduler等国内镜像
(1)查看kubeadm使用的镜像
kubeadm config images list
可以发现这里都是国外的镜像
k8s.gcr.io/kube-apiserver:v1.14.0
k8s.gcr.io/kube-controller-manager:v1.14.0
k8s.gcr.io/kube-scheduler:v1.14.0
k8s.gcr.io/kube-proxy:v1.14.0
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
(2)解决国外镜像不能访问的问题
- 创建kubeadm.sh脚本,用于拉取镜像/打tag/删除原有镜像
vim kubeadm.sh
#!/bin/bash
set -e
KUBE_VERSION=v1.14.0
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.3.10
CORE_DNS_VERSION=1.3.1
GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers
images=(kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${CORE_DNS_VERSION})
for imageName in ${images[@]} ; do
docker pull $ALIYUN_URL/$imageName #拉取镜像
docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName #打tag
docker rmi $ALIYUN_URL/$imageName #删除镜像,使用打tag的镜像即可
done
-
运行脚本和查看镜像
运行脚本
sh ./kubeadm.sh
查看镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE k8s.gcr.io/kube-proxy v1.14.0 5cd54e388aba 9 months ago 82.1MB k8s.gcr.io/kube-apiserver v1.14.0 ecf910f40d6e 9 months ago 210MB k8s.gcr.io/kube-scheduler v1.14.0 00638a24688b 9 months ago 81.6MB k8s.gcr.io/kube-controller-manager v1.14.0 b95b1efa0436 9 months ago 158MB k8s.gcr.io/coredns 1.3.1 eb516548c180 11 months ago 40.3MB k8s.gcr.io/etcd 3.3.10 2c4adeb21b4f 12 months ago 258MB k8s.gcr.io/pause 3.1 da86e6ba6ca1 2 years ago 742kB
4.3 push镜像
可以将这些镜像推送到自己的阿里云仓库【可选,根据自己实际的情况】
# 登录自己的阿里云仓库
docker login --username=xxx(自己的用户名) registry.cn-hangzhou.aliyuncs.com
# 创建kubeadm-push-aliyun.sh文件
vi kubeadm-push-aliyun.sh
#!/bin/bash
set -e
KUBE_VERSION=v1.14.0
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.3.10
CORE_DNS_VERSION=1.3.1
GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/123456(这里填写自己的用户名)
images=(kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${CORE_DNS_VERSION})
for imageName in ${images[@]} ; do
docker tag $GCR_URL/$imageName $ALIYUN_URL/$imageName
docker push $ALIYUN_URL/$imageName
docker rmi $ALIYUN_URL/$imageName
done
运行脚本 sh ./kubeadm-push-aliyun.sh
继续安装请查看:
https://blog.csdn.net/qq_33996921/article/details/103649020
更多推荐
所有评论(0)