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
相關文章
相關標籤/搜索