kubeadm基于OKDC脚本,一键安装kubernetes 1.6.2 (离线安装)

本文所用脚本由阿里出品,详情参考:One-liner Kubernetes Deployment in China aka OKDCnode

该脚本执行过程当中, 须要从Internet下载些docker image, flannel yaml. 对于处在内网的企业环境, 虽然可设定代理解决,但对于须要反复安装的测试环境,就头疼了。
本文主要目的,是基于该脚本,修改为可本地离线安装。linux


1. 安装过程当中说须要的docker镜像清单, 可先行下载, 并放到本地registry :git

registry.aliyuncs.com/archon/hyperkube-amd64               v1.6.2              47c16ab7f7d0        3 months ago        583 MB
registry.aliyuncs.com/archon/flannel                       v0.8.0-amd64        9db3bab8c19e        3 weeks ago         50.73 MB
registry.aliyuncs.com/archon/k8s-dns-sidecar-amd64         1.14.1              fc5e302d8309        5 months ago        44.52 MB
registry.aliyuncs.com/archon/k8s-dns-kube-dns-amd64        1.14.1              f8363dbf447b        5 months ago        52.36 MB
registry.aliyuncs.com/archon/k8s-dns-dnsmasq-nanny-amd64   1.14.1              1091847716ec        5 months ago        44.84 MB
registry.aliyuncs.com/archon/etcd                          3.0.17              243830dae7dd        5 months ago        168.9 MB
registry.aliyuncs.com/archon/pause-amd64                   3.0                 99e59f495ffa        15 months ago       746.9 kB

本例所建的registry Server,域名是ispcdocker.com.  
测试环境内处理好DNS解析; 简单方法是修改测试涉及到的机器/etc/hosts文件。github

# docker images
REPOSITORY                                   TAG                 IMAGE ID            CREATED             SIZE
ispcdocker.com/hyperkube-amd64               v1.6.2              47c16ab7f7d0        2 weeks ago         583 MB
ispcdocker.com/etcd                          3.0.17              243830dae7dd        10 weeks ago        168.9 MB
ispcdocker.com/flannel                       v0.8.0-amd64        9db3bab8c19e        3 weeks ago         77.76 MB
ispcdocker.com/k8s-dns-sidecar-amd64         1.14.1              fc5e302d8309        10 weeks ago        44.52 MB
ispcdocker.com/k8s-dns-kube-dns-amd64        1.14.1              f8363dbf447b        10 weeks ago        52.36 MB
ispcdocker.com/k8s-dns-dnsmasq-nanny-amd64   1.14.1              1091847716ec        10 weeks ago        44.84 MB
ispcdocker.com/pause-amd64                   3.0                 99e59f495ffa        12 months ago       746.9 kB

2. 安装过程,涉及到从Internet下载flannel pod 配置文件,可先行下载,并放到本地webweb

https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml

3. 本文主角,okdc-centos.sh也该先下载,并放本地webdocker

https://raw.githubusercontent.com/kubeup/okdc/master/okdc-centos.sh

 

4.  在待安装服务器上,可选择执行此步骤, 先行安装kube 及docker软件包,简化后续的步骤。过程当中用到的rpm软件包, 可参考我 另外一篇文章,经由在线安装模式后,放在本地rpm repos .centos

# yum install -y docker kubelet kubeadm kubectl kubernetes-cni redhat-lsb-core
# systemctl enable docker && systemctl start dockerapi

5.  在待安装服务器上,下载并修改kube-okdc.shbash

wget http://10.245.254.93/linux/soft/docker/kubernetes/kube-okdc.sh

# 修改k8s repos到本地
sed -i "s#https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el\$OS_VERSION-\$ARCH#http://10.245.254.93/linux/soft/epel/7#g" kube-okdc.sh

# 修改kube-flannel.yml文件从本地下载
sed -i "s#https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml#http://10.245.254.93/linux/soft/docker/kubernetes/kube-flannel.yml#g" kube-okdc.sh
sed -i "s#https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml#http://10.245.254.93/linux/soft/docker/kubernetes/kube-flannel-rbac.yml#g" kube-okdc.sh

# 修改docker registry到本地
sed -i "s|registry.aliyuncs.com/archon|ispcdocker.com|g" kube-okdc.sh
sed -i '90a\sed -i "s#image: /flannel#image: ispcdocker.com/flannel#g" /tmp/flannel.yaml' kube-okdc.sh

# 取消kubeadm不成熟的--config 配置参数,使用标准参数模式
# 这句话,经由趟坑无数,泪水所得... 
# 文件/tmp/kubeadm.conf 内容以下,非默认选项的只有后3项,因此直接在命令行中指定
#  apiVersion: kubeadm.k8s.io/v1alpha1
#  kind: MasterConfiguration
#  networking:
#  podSubnet: 10.244.0.0/16
#  kubernetesVesion: v1.6.2
#  token: wsrmjj.lw2fsz5pchjrprpe
sed -i "s|skip-preflight-checks --config /tmp/kubeadm.conf|kubernetes-version=v1.6.2 --pod-network-cidr=10.244.0.0/16 --token \$TOKEN|g" kube-okdc.sh

 

6.  开始安装服务器

sh ./kube-okdc.sh

 

7. 进阶:
// Package hyperkube is a framework for kubernetes server components. It
// allows us to combine all of the kubernetes server components into a single
// binary where the user selects which components to run in any individual process.


hyperkube-amd64_v1.6.2,这个镜像,在功能上,包括下述4个部分:
    kube-apiserver-amd64_v1.6.2
    kube-controller-manager-amd64_v1.6.2
    kube-proxy-amd64_v1.6.2
    kube-scheduler-amd64_v1.6.2
因此,在安装阶段,若是取消脚本内的KUBE_HYPERKUBE_IMAGE变量申明,那么默认会自动安装上述4个子镜像; 在k8s功能上,区别不大.

官方说明以下:If set, use a single hyperkube image with this name. If not set, individual images per server component will be used.

sed -i "s|KUBE_HYPERKUBE_IMAGE=\$HYPERKUBE_IMG KUBE|KUBE|g" kube-okdc.sh

 

8. 完整脚本

wget -P /etc/docker/certs.d/ispcdocker.com http://10.245.254.93/linux/soft/docker/ispcdocker.com.crt
echo '10.247.15.70 ispcdocker.com' >> /etc/hosts
yum install redhat-lsb-core -y


curl http://10.245.254.93/linux/soft/docker/kubernetes/kube-centos-1.1-v1.6.2.sh > kube-okdc.sh
sed -i "s#https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el\$OS_VERSION-\$ARCH#http://10.245.254.93/linux/soft/docker/repo.packages#g" kube-okdc.sh
sed -i "s#https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml#http://10.245.254.93/linux/soft/docker/kubernetes/kube-flannel-v0.8.0.yml#g" kube-okdc.sh
sed -i "s#https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml#http://10.245.254.93/linux/soft/docker/kubernetes/kube-flannel-v0.8.0-rbac.yml#g" kube-okdc.sh
sed -i "s|registry.aliyuncs.com/archon|ispcdocker.com|g" kube-okdc.sh
sed -i '90a\sed -i "s#image: /flannel#image: ispcdocker.com/flannel#g" /tmp/flannel.yaml' kube-okdc.sh
sed -i "s|skip-preflight-checks --config /tmp/kubeadm.conf|kubernetes-version=v1.6.2 --pod-network-cidr=10.244.0.0/16 --token \$TOKEN|g" kube-okdc.sh
sed -i "s|gpgcheck=1|gpgcheck=0|g" kube-okdc.sh

sed -i '262c\    if [ "$OS" = "CentOS" ]; then' kube-okdc.sh

sh ./kube-okdc.sh


----for dashboard, install at master site
wget http://10.245.254.93/linux/soft/docker/kubernetes/heapster/influxdb.yaml
wget http://10.245.254.93/linux/soft/docker/kubernetes/heapster/grafana.yaml
wget http://10.245.254.93/linux/soft/docker/kubernetes/heapster/heapster.yaml
wget http://10.245.254.93/linux/soft/docker/kubernetes/kubernetes-dashboard-v1.6.3.yaml

sed -i "s|gcr.io/google_containers|ispcdocker.com|g" *.yaml
mkdir -p dashboard && mv *yaml dashboard
kubectl create -f dashboard/
kubectl proxy --address='0.0.0.0' --port=8001 --accept-hosts='^*$' &

----for minion site
kubeadm token list
cat kube-okdc.sh |TOKEN=lzp7qv.equa9e0oolowtxlc MASTER=10.247.15.75:6443 sh

----check status
export KUBECONFIG=/etc/kubernetes/admin.conf
kubectl get nodes
kubectl get pods --all-namespaces -o wide
相关文章
相关标签/搜索