kubernetes 1.5.1 搭建过程

最近折腾了下 kubernetes 1.5.1,记录下安装过程。

  • 安装相关依赖(master node 都需要操作)
sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/experimental/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

yum install -y golang
yum install docker-engine -y
yum -y install ntp
yum install net-tools  bridge-utils bind-utils -y
yum install socat -y
yum install -y ebtables

systemctl enable ntpd
systemctl start ntpd
systemctl enable docker
systemctl start docker
systemctl status docker

setenforce 0
systemctl disable iptables-services firewalld
systemctl stop iptables-services firewalld


  • 编译安装 rpm 包(master node 都需要操作)

源代码 release,进入 /data/release/rpm,修改 kubelet.spec 里的 %global KUBE_VERSION 1.4.6,修改为对应的版本,运行 ./docker-build.sh,执行成功后 rpm 包在 output 目录下。 运行 rpm -ivh *.rpm 安装所有编译成功的 rpm 包。可以在一台机器上编译成功后拷贝到其他机器。

  • 准备镜像

由于墙的原因,从 Google 拉不了相关镜像,可以使用国内的灵雀云国际节点转一下,然后打 tag 。官方镜像地址,google-containers。如果不确定版本,在初始化 master 节点时,去查看 /etc/kubernetes/manifests 目录下相关文件。如果有私有仓库,可以打完标签后存储到私有仓库里。

images=(dnsmasq-metrics-amd64:1.0 kubedns-amd64:1.9 kube-scheduler-amd64:v1.5.1 kube-controller-manager-amd64:v1.5.1 kube-apiserver-amd64:v1.5.1 etcd-amd64:3.0.14-kubeadm kube-dnsmasq-amd64:1.4 exechealthz-amd64:1.2 pause-amd64:3.0 kubernetes-dashboard-amd64:v1.5.0 kube-discovery-amd64:1.0 kube-proxy-amd64:v1.5.1)
for imageName in ${images[@]} ; do
  docker pull registry.alauda.cn/pigletfly/$imageName
  docker tag registry.alauda.cn/pigletfly/$imageName gcr.io/google_containers/$imageName
  docker rmi registry.alauda.cn/pigletfly/$imageName
done

  • 初始化 master

首先进行重置,防止有环境残留。


systemctl stop kubelet;
# 注意: 下面这条命令会干掉所有正在运行的 docker 容器,# 如果要进行重置操作,最好先确定当前运行的所有容器都能干掉(干掉不影响业务),# 否则的话最好手动删除 kubeadm 创建的相关容器(gcr.io 相关的)
docker rm -f -v $(docker ps -q);
find /var/lib/kubelet | xargs -n 1 findmnt -n -t tmpfs -o TARGET -T | uniq | xargs -r umount -v;
rm -rf /etc/kubernetes /var/lib/kubelet /var/lib/etcd;

然后启动 kubelet

systemctl enable kubelet
systemctl start kubelet

最后开始初始化

kubeadm init --api-advertise-addresses 172.30.215.19 --use-kubernetes-version v1.5.1 --pod-network-cidr=172.31.0.0/16

初始化成功后会打印 token

kubeadm join --token=6e57ff.1e0ee161fa4a3c4a 172.30.198.62

在 node 节点上运行上面的即可

  • 验证

加入节点后,可以验证下相关信息。

netstat -atnp  |grep 443
kubectl get cs
kubectl cluster-info
kubectl get pod --namespace=kube-system
kubectl get po --namespace=kube-system -o wide
kubectl describe svc kubernetes-dashboard --namespace=kube-system
kubectl get svc --namespace=kube-system

除特殊注明部分,本站内容采用 CC BY-NC-SA 4.0 进行许可。