创建docker私有库及离线部署k8s 1.14.1版本

安装包下载

k8s 1.14.1所需下载 验证码:nnpa

安装环境

主机地址 角色 版本
192.168.6.136 docker repos CentOS Linux release 7.5.1804 (Core)
192.168.6.134 k8s master CentOS Linux release 7.5.1804 (Core)
192.168.6.132 k8s worker1 CentOS Linux release 7.5.1804 (Core)
192.168.6.135 k8s worker2 CentOS Linux release 7.5.1804 (Core)

建立test.io:5000 docker私有仓库(192.168.6.136主机)

  1. 安装docker
cd docker_install/
tar -zxvf docker-ce-18.09.tar.gz
cd docker/
yum localinstall -y *.rpm
  1. 编辑docker配置文件daemon.json
{
"insecure-registries":["test.io:5000"]
}
  1. 将配置文件放入/ect/docker/下面,并启动docker
systemctl start docker && systemctl enable docker
  1. 导入docker-registry.tar
cd ../
docker load < docker-registry.tar
  1. 启动registry docker容器
docker run -d -p 5000:5000 --restart=always   --name test-registry -v /data/registry:/var/lib/registry  registry:2
  1. test.io域名解析至192.168.6.136。这里可以通过在四台主机修改/etc/host文件加入192.168.6.136 test.io来实现

导入k8s 1.14.1所需要的全部镜像

  1. 先将镜像导入至本地
docker load -i k8s-114-images.tar.gz
docker load -i flannel-dashboard.tar.gz 
  1. 再将本地镜像导入到registry中,执行import-registry.sh
docker tag k8s.gcr.io/kube-scheduler:v1.14.1 test.io:5000/k8s.gcr.io/kube-scheduler:v1.14.1
docker push test.io:5000/k8s.gcr.io/kube-scheduler:v1.14.1  
docker tag k8s.gcr.io/kube-proxy:v1.14.1 test.io:5000/k8s.gcr.io/kube-proxy:v1.14.1
docker push test.io:5000/k8s.gcr.io/kube-proxy:v1.14.1
docker tag k8s.gcr.io/pause:3.1 test.io:5000/k8s.gcr.io/pause:3.1
docker push test.io:5000/k8s.gcr.io/pause:3.1
docker tag k8s.gcr.io/etcd:3.3.10 test.io:5000/k8s.gcr.io/etcd:3.3.10
docker push test.io:5000/k8s.gcr.io/etcd:3.3.10
docker tag k8s.gcr.io/coredns:1.3.1 test.io:5000/k8s.gcr.io/coredns:1.3.1
docker push  test.io:5000/k8s.gcr.io/coredns:1.3.1
docker tag k8s.gcr.io/kube-apiserver:v1.14.1 test.io:5000/k8s.gcr.io/kube-apiserver:v1.14.1
docker push test.io:5000/k8s.gcr.io/kube-apiserver:v1.14.1
docker tag k8s.gcr.io/kube-controller-manager:v1.14.1 test.io:5000/k8s.gcr.io/kube-controller-manager:v1.14.1
docker push  test.io:5000/k8s.gcr.io/kube-controller-manager:v1.14.1

docker tag quay.io/coreos/flannel:v0.11.0-amd64 test.io:5000/quay.io/coreos/flannel:v0.11.0-amd64
docker push  test.io:5000/quay.io/coreos/flannel:v0.11.0-amd64
docker tag k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 test.io:5000/k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
docker push test.io:5000/k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1

初始化k8s三台主机环境

  1. 安装docker,注意配置文件/etc/docker/daemon.json192.168.6.136保持一致,即必须包含"insecure-registries":["test.io:5000"]的配置

  2. 在3台主机上使用docker info | grep cgroupfs查看Cgroup Driver是否为cgroupfs,如果不是,请在daemon.json配置文件中加入"exec-opts": ["native.cgroupdriver=cgroupfs"],并重启dockersystemctl daemon-reload && systemctl restart docker

  3. 初始化主机k8s环境,执行k8s-init.sh

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl disable firewalld
systemctl stop firewalld

swapoff -a

cat <  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
  1. 三台主机注释掉/etc/fstab含有swap的一行

  2. 三台主机安装kubeadmkubectlkubelet

tar -zxvf kube114-rpm.tar.gz 
cd kube114-rpm
yum localinstall -y *.rpm 

利用kubeadm安装主节点

  1. 执行主节点初始化安装命令
kubeadm init --image-repository=test.io:5000/k8s.gcr.io --kubernetes-version=v1.14.1 --pod-network-cidr=10.244.0.0/16
  1. 在主节点创建常规用户权限
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  1. 记录kubeadm join命令并前往各个worker节点执行,此命令非常重要,不能丢失
kubeadm join 192.168.6.134:6443 --token q2bf9l.0fqh0dxw788zs9q7 \
    --discovery-token-ca-cert-hash sha256:6e8eeb7b9f505bedbf6f1b09f0d8e289132ac6f975be35aa24515974e0185e0f
  1. 在主节点执行kubectl get nodes -o wide,确认节点是否连接正常,这里会发现状态为NotReady,这是因为节点直接未安装网络,属于正常情况

部署flannel网络

  1. 在主节点配置KUBECONFIG变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile
echo $KUBECONFIG 
  1. 在主节点执行kubectl create -f kube-flannel.yml,然后执行kubectl get pods -n kube-system,等待pod全部处于Running状态,最后执行kubectl get nodes -o wide,如果状态变成Ready则大功告成。

你可能感兴趣的:(创建docker私有库及离线部署k8s 1.14.1版本)