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

wKiom1lnPLuRO1DZAAEgTBtdQKc784.png-wh_50

 

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状态

 wKiom1lnPk2Ad6tBAAFfcAEpbj8465.png-wh_50


2、Dashboard 插件安装

执行下面的命令安装插件

kubectl create -f dashboard-rbac.yaml

kubectl create -f kubernetes-dashboard.yaml

执行下面命令查看Dashboard端口

kubectl describe --namespace kube-system service kubernetes-dashboard

 wKiom1lnPrnC7oXZAAC5P0KLy2s124.png-wh_50

然后就可以载浏览器通过 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

 wKioL1lnPwPyLRNdAAGxK89ApGo597.png-wh_50

附件:

1、pull-images.sh(偷懒下载谷歌镜像)

2、dashboard-rbac.yaml

3、kubernetes-dashboard.yaml