概述
kubernetes是一个全新的基于容器技术的分布式架构领先方案。它是谷歌的秘密武器,一经开源就一鸣惊人,快速地得到社区技术方面的拥抱,现逐步有一统天下容器技术领域的趋势。
kubernetes集群方面的搭建,可以利用kubeadm工具快速安装,但是此技术还处于beta阶段,不适合生产环境使用,为此,生产环境还需利用二进制文件方式安装kubernetes集群。
环境准备
CentOS Linux7 (可以采用VirtualBox在本机上虚拟一个64位的CentOS7)
kubernetes1.9.3
etcd3.2.12以上
docker 和flanneld0.10.0等
单集群环境
- 可以采用minikube在Mac上安装单机群环境,但是本文重点不在这里,下次介绍
采用kubernetes在centOS中搭建单集群。
关闭CentOS自带的防火墙服务
systemctl disable firewalld
systemctl stop firewalld安装etcd和kubernetes软件
yum install -y etcd kubernetes
按顺序启动所有服务
systemctl start etcd
systemctl start docker
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start kubelet
systemctl start kube-proxy
至此,一个单机版的kubernetes集群环境就安装并启动成功了.
3. 搭建多机版集群环境
初始化环境和系统设置
yum install -y etables ethtool
修改主机名和配置IP和域名的绑定工作
echo “master.k8s” > /etc/hostname
echo “192.168.56.101 master.k8s”>> /etc/hosts
echo “192.168.56.102 node1.k8s”>> /etc/hosts
echo “192.168.56.103 node2.k8s”>> /etc/hosts
所有节点都要处理设置ip6tables 和 iptables
cat < /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
EOF
sysctl –system配置yum源
cat << EOF > /etc/yum.repos.d/docker.repo
[dockerrepo]
name=Docker Repository
baseurl=https://mirrors.aliyun.com/docker-engine/yum/repo/main/centos/7/
enabled=1
gpgcheck=0
gpgkey=https://yum.dockerproject.org/gpg
EOFcat > /etc/yum.repo.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOFyum -y install docker kubectl kubeadm kubelet kubernetes-cni
systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubeletmkdir -p /etc/docker # cat > /etc/docker/daemon.json << EOF
{
“registry-mirrors”: [“http://docker.mirrors.ustc.edu.cn”],
“exec-opts”: [“native.cgroupdriver=systemd”]
} EOF
systemctl enable docker && systemctl start dockermaster和node节点安装
- 下载相关镜像
#! /bin/bash
images=(
flannel:v0.9.0
kube-scheduler-amd64:v1.9.3
kube-proxy-amd64:v1.9.3
kube-controller-manager-amd64:v1.9.3
etcd-amd64:3.1.11
kubernetes-dashboard-amd64:v1.7.1
k8s-dns-dnsmasq-nanny-amd64:1.14.7
k8s-dns-kube-dns-amd64:1.14.7
k8s-dns-sidecar-amd64:1.14.7
pause-amd64:3.0
kube-apiserver-amd64:v1.9.3
dnsmasq-metrics-amd64:1.0
kube-discovery-amd64:1.0
exechealthz-amd64:v1.2.0
heapster-grafana-amd64:v4.2.0
heapster-influxdb-amd64:v1.1.1
heapster-amd64:v1.5.1
)
for imageName in ${images[@]}; do
docker pull registry.cn-hangzhou.aliyuncs.com/google-containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google-containers/$imageName gcr.io/google_containers/$imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google-containers/$imageName
done - 运行kubeadm init 安装master
kubeadm init –kubernetes-version=1.9.3
运行后直到控制台输出:
kubeadm join –token 7ff4e1.0cdc17f2554bea9d 192.168.56.101:6443 –discovery-token-ca-cert-hash sha256:960214c0f8dd1ecdb224411352cd5504f829343299e6d58dde7ad6c2635842f7 - 执行此命令后会进行kubernetes安装,如果卡在一个步骤不动的话,可通过journalctl -xue | kubelet查看具体的错误。
- 执行相关命令
mkdir -p $HOME/.kube#
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown \$(id -u):\$(id -g) \$HOME/.kube/config 安装node,加入集群
yum install -y docker kubelet kubeadm kubectl kubernetes-cni
systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet执行kubeadm join 命令,加入集群
kubeadm join –token 7ff4e1.0cdc17f2554bea9d 192.168.56.101:6443 –discovery-token-ca-cert-hash sha256:960214c0f8dd1ecdb224411352cd5504f829343299e6d58dde7ad6c2635842f7 –skip-preflight-checks
安装网络插件
kubectl get nodes 可以看到状态为NotReady 是因为还没有安装CNI网络插件
kubectl apply -f https://git.io/weave-kube-1.6
- 下载相关镜像
- 验证kubernetes集群安装完成
kubectl get pods –all-namespaces
如果发现有状态错误的pod,则可以执行kubectl –namespace=kube-system describe pod < pod_name >来查看错误原因,一个常见的原因就是镜像没有下载下来。
至此,通过kubeadm工具就实现了kubernetes集群的快速搭建。如果安装失败,可以执行kubeadm reset 命令重新安装。
后续,还会介绍利用二进制方式安装生产环境kubernetes集群。