国内部署Kubernetes集群1.14.3

由于众所周知的原因,国内是无法访问k8s所需的gcr镜像的,也就无法直接部署集群。

我们可以通过国内镜像预下载gcr、重命名的方法,完成部署。

环境:Ubuntu 18.04,3台

1 安装Docker

sudo apt-get update && sudo apt-get install -y apt-transport-https
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker

2 配置Docker镜像

换用国内官方镜像就行,比较稳定

sudo vim /etc/docker/daemon.json

{
    "registry-mirrors": [
        "https://dockerhub.azk8s.cn",
        "https://gcr.azk8s.cn",
        "https://quay.azk8s.cn"
    ]
}

记得重启docker

systemctl restart docker

3 安装k8s二进制程序

直接使用Google的apt仓库是不行的,我们直接用aliyun的

sudo /etc/apt/source/xxx
deb http://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
sudo apt-get update

提示错误

W: GPG error: http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6A030B21BA07F4FB

我们先取ERROR后8位

 gpg --keyserver keyserver.ubuntu.com --recv-keys BA07F4FB

然后是全部的

gpg -a --export 6A030B21BA07F4FB | sudo apt-key add -

在update就没问题了

安装

sudo apt-get install -y kubelet kubeadm kubectl kubernetes-cni

看一下版本,是1.14.3,后面要用到

kubelet --version Kubernetes v1.14.3

4 安装k8s初始化所需镜像

先看一眼需要哪些,这里就要用到版本啦

kubeadm config images list --kubernetes-version v1.14.3
k8s.gcr.io/kube-apiserver:v1.14.3
k8s.gcr.io/kube-controller-manager:v1.14.3
k8s.gcr.io/kube-scheduler:v1.14.3
k8s.gcr.io/kube-proxy:v1.14.3
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1

我们用AZure提供的国内镜像,反三步走,我这里直接提供awk脚本了

a 下载镜像

kubeadm config images list --kubernetes-version v1.14.3 | awk -F "/" '{print "docker pull gcr.azk8s.cn/google_containers/"$2""}'

docker pull gcr.azk8s.cn/google_containers/kube-apiserver:v1.14.3
docker pull gcr.azk8s.cn/google_containers/kube-controller-manager:v1.14.3
docker pull gcr.azk8s.cn/google_containers/kube-scheduler:v1.14.3
docker pull gcr.azk8s.cn/google_containers/kube-proxy:v1.14.3
docker pull gcr.azk8s.cn/google_containers/pause:3.1
docker pull gcr.azk8s.cn/google_containers/etcd:3.3.10
docker pull gcr.azk8s.cn/google_containers/coredns:1.3.1

b 重命名

kubeadm config images list --kubernetes-version v1.14.3 | awk -F "/" '{print "docker tag gcr.azk8s.cn/google_containers/"$2" k8s.gcr.io/"$2""}'

docker tag gcr.azk8s.cn/google_containers/kube-apiserver:v1.14.3 k8s.gcr.io/kube-apiserver:v1.14.3
docker tag gcr.azk8s.cn/google_containers/kube-controller-manager:v1.14.3 k8s.gcr.io/kube-controller-manager:v1.14.3
docker tag gcr.azk8s.cn/google_containers/kube-scheduler:v1.14.3 k8s.gcr.io/kube-scheduler:v1.14.3
docker tag gcr.azk8s.cn/google_containers/kube-proxy:v1.14.3 k8s.gcr.io/kube-proxy:v1.14.3
docker tag gcr.azk8s.cn/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag gcr.azk8s.cn/google_containers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag gcr.azk8s.cn/google_containers/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

c 删除临时镜像的tag

kubeadm config images list --kubernetes-version v1.14.3 | awk -F "/" '{print "docker rmi gcr.azk8s.cn/google_containers/"$2""}'

上面输出这些命令都要执行一下。

5 初始化集群

关闭镜像 fstab最好也改一下

swapoff -a

初始化,俩IP一个是本地内网IP,一个是你希望POD用哪些IP段

kubeadm init --kubernetes-version v1.14.3 --apiserver-advertise-address=192.168.6.91 --pod-network-cidr=10.6.0.0/24

执行完毕后,会有一个提示,记下来备用

kubeadm join 10.3.96.3:6443 --token w1zh7w.l6chof87e113m8u7 --discovery-token-ca-cert-hash sha256:5c010cce4123abcf6c48fd98f8559b33c1efc80742270d7493035a92adf53602

初始化本地配置

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

安装Weave

sysctl net.bridge.bridge-nf-call-iptables=1 -w
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

至此Master就配置完毕了

6 其他节点加入

另外搞至少2台机器

配置Docker、先安装gcr的POD

然后执行上面记下来的join命令

检查下

kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s1 Ready master 2m v1.14.3
k8s2 Ready <none> 40s v1.14.3
k8s3 Ready <none> 28s v1.14.3

配置完毕!

Leave a Reply

Your email address will not be published.