K8s V1.6 V1.7 部署
一、基礎環境
1、主機名 IP hosts 配置
主機名 IP 系統
k8s.master 192.168.1.44 CentOS 7 64
k8s.node1 192.168.1.45 CentOS 7 64
k8s.node2 192.168.1.46 CentOS 7 64
K8s.node3 192.168.1.47 CentOS 7 64
二、基礎軟件環境
1、關閉防火牆
systemctl stop firewalld.service && systemctl disable firewalld.service
2、禁用SELinux
setenforce 0
sed -i.bak 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
三、安裝K8s
1、設置yum 代理 過GFW(根據自己網絡條件判斷是否需要***)
vim /etc/yum.conf添加下面內容
proxy=http://192.168.1.8:2345/pac (這是我局域網的代理地址,根據自己的修改)
2、配置yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
3、在所有節點上安裝以下軟件包:
yum install -y docker kubelet kubeadm kubectl kubernetes-cni 默認會安裝v1.7版本
我本次安裝v1.6.2版本
執行下面命令可以查看所有可用版本
yum list kubeadm --showduplicates |sort -r
yum install -y docker kubelet-1.6.2 kubeadm-1.6.2 kubectl-1.6.2 kubernetes-cni
systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet
4、內核參數修改
sysctl net.bridge.bridge-nf-call-iptables=1
sysctl net.bridge.bridge-nf-call-ip6tables=1
sysctl -p
5、初始化master
kubeadm init --kubernetes-version=v1.6.2 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.1.44
因爲在該集羣中將使用flannel搭建pod網絡,因此必須添加–pod-network-cidr參數
可能是GFW的原因 kubeadm init 一直卡在下載鏡像
解決卡頓問題
千辛萬苦找到的谷歌鏡像免費代理
用法:
docker pull gcr.mritd.me/google_containers/k8s-dns-dnsmasq:1.10.1
下面是1.6.2版本需要使用到的一些鏡像,各個版本有所不同,V1.7 的可以查看安裝後的配置文件
gcr.io/google_containers/kube-proxy-amd64:v1.6.2
gcr.io/google_containers/kube-apiserver-amd64:v1.6.2
gcr.io/google_containers/kube-controller-manager-amd64:v1.6.2
gcr.io/google_containers/kube-scheduler-amd64:v1.6.2
quay.io/coreos/flannel:v0.7.1-amd64
gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.0
gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.1
gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1
gcr.io/google_containers/etcd-amd64:3.0.17
gcr.io/google_containers/pause-amd64 :3.0
鏡像pull完成後 執行 kubeadm reset 後重新初始化
初始化完成 記錄重要的token,新機器加入集羣是需要
kubeadm join --token c7c5d9.cf80372282..... 192.168.1.44:6443
溫馨提示!下面是偷懶下載鏡像的腳本
#!/usr/bin/env bash images=( heapster-s390x:v1.3.0 heapster-ppc64le:v1.3.0 heapster-arm64:v1.3.0 heapster-arm:v1.3.0 heapster-amd64:v1.3.0 ) for imageName in ${images[@]} ; do docker pull gcr.mritd.me/google_containers/$imageName docker tag gcr.mritd.me/google_containers/$imageName gcr.io/google_containers/$imageName docker rmi gcr.mritd.me/google_containers/$imageName done
6、根據提示執行下面的命令
sudo cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
export KUBECONFIG=$HOME/admin.conf
至此,基本的安裝就完成了
三、配置和插件安裝
1、安裝Pod Network
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
使用kubectl get pod --all-namespaces -o wide確保所有的Pod都處於Running狀態
2、Dashboard 插件安裝
執行下面的命令安裝插件
kubectl create -f dashboard-rbac.yaml
kubectl create -f kubernetes-dashboard.yaml
執行下面命令查看Dashboard端口
kubectl describe --namespace kube-system service kubernetes-dashboard
然後就可以載瀏覽器通過 http://IP:NodePort的方式訪問了
下面爲頁面安裝可視化儀表插件
3、Heapster 監控儀表盤安裝
源碼下載地址
https://github.com/kubernetes/heapster/releases
wget https://github.com/kubernetes/heapster/archive/v1.3.0.tar.gz
安裝插件
tar -zxvf v1.3.0.tar.gz
cd heapster-1.3.0/deploy/kube-config/influxdb
kubectl create -f ./
上面同樣的方式獲取谷歌鏡像,版本和插件得一一對應
gcr.io/google_containers/heapster-s390x:v1.3.0
gcr.io/google_containers/heapster-ppc64le:v1.3.0
gcr.io/google_containers/heapster-arm64:v1.3.0
gcr.io/google_containers/heapster-arm:v1.3.0
gcr.io/google_containers/heapster-amd64:v1.3.0
查看狀態
kubectl get pod --all-namespaces -o wide
附件:
1、pull-images.sh(偷懶下載谷歌鏡像)
2、dashboard-rbac.yaml
3、kubernetes-dashboard.yaml