初次接触kubernetes,以此来记录集群部署的过程!!!
一、配置环境
节点清单
主机名 | IP | 安装组件 | 说明 |
---|---|---|---|
k8s-master | 192.168.1.5 | kubelet ,kubectl,kubeadm | master节点 |
k8s-node1 | 192.168.1.6 | node节点 |
版本信息
$ cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)
$ docker versionClient:Version: 1.12.6API version: 1.24Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64 Go version: go1.7.4Git commit: 88a4867/1.12.6Built: Mon Jul 3 16:02:02 2017OS/Arch: linux/amd64Server:Version: 1.12.6API version: 1.24Package version: docker-1.12.6-32.git88a4867.el7.centos.x86_64 Go version: go1.7.4Git commit: 88a4867/1.12.6Built: Mon Jul 3 16:02:02 2017OS/Arch: linux/amd64
$ kubeadm version kubeadm version: &version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.3", GitCommit:"2c2fe6e8278a5db2d15a013987b53968c743f2a1", GitTreeState:"clean", BuildDate:"2017-08-03T06:43:48Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
$ kubelet --version Kubernetes v1.7.3
gcr.io/google_containers/kube-apiserver-amd64 v1.7.3 gcr.io/google_containers/kube-controller-manager-amd64 v1.7.3 gcr.io/google_containers/kube-scheduler-amd64 v1.7.3 gcr.io/google_containers/kube-proxy-amd64 v1.7.3 quay.io/coreos/flannel v0.8.0-amd64 gcr.io/google_containers/etcd-amd64 3.0.17 gcr.io/google_containers/pause-amd64 3.0 gcr.io/google_containers/k8s-dns-kube-dns-amd64 1.14.4 gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64 1.14.4 gcr.io/google_containers/k8s-dns-sidecar-amd64 1.14.4
gcr.io镜像
kubelet版本:v1.7.3
kubeadm版本:v1.7.3
docker 版本:1.12.6
Linux 版本 : CentOS Linux release 7.3.1611 (Core)
系统设置
systemctl stop firewalld systemctl disable firewalld
$ /usr/sbin/sestatus -v $ vi /etc/selinux/config SELINUX=disabled
$ vi /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1net.bridge.bridge-nf-call-ip6tables = 1$ sysctl -p /etc/sysctl.d/k8s.conf
$ vi /etc/hosts 127.0.0.1 localhost k8s-master localhost4 localhost4.localdomain4::1 localhost k8s-master localhost6 localhost6.localdomain6 $ vi /etc/hostname k8s-master
$ reboot
重启主机
修改hostname
所有节点上设置iptables参数
关闭所有节点SELinux
关闭所有节点防火墙
常见问题处理
修改 Linux 内核文件 sysctl -P 报错
$ sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables:没有那个文件或目录 modprobe bridge lsmod|grep bridge
二、安装组件
安装docker
$ yum intsall -y docker
$ systemctl enable docker.service $ systemctl start docker
启动服务
yum 安装
安装kubernetes
$ cat >> /etc/yum.repos.d/kubernetes.repo <<EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 EOF
$ yum install -y kubelet kubeadm kubectl
配置kubectl
yum 安装
配置yum源
$ kubectl cluster-info
启动kubelet
$ systemctl enable kubelet.service
拉取镜像
由于从国外拉取镜像比较坑,从阿里云获取kubernetes 所需的镜像
#!/bin/bashset -o errexitset -o nounsetset -o pipefail KUBE_VERSION=v1.7.3 KUBE_PAUSE_VERSION=3.0 ETCD_VERSION=3.0.17 DNS_VERSION=1.14.4 FINANNEL_VERSION=v0.8.0-amd64 GCR_URL=gcr.io/google_containers ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/kubernetes_kubeadm images=(kube-proxy-amd64:${KUBE_VERSION}kube-scheduler-amd64:${KUBE_VERSION}kube-controller-manager-amd64:${KUBE_VERSION}kube-apiserver-amd64:${KUBE_VERSION}pause-amd64:${KUBE_PAUSE_VERSION}etcd-amd64:${ETCD_VERSION}k8s-dns-sidecar-amd64:${DNS_VERSION}k8s-dns-kube-dns-amd64:${DNS_VERSION}k8s-dns-dnsmasq-nanny-amd64:${DNS_VERSION}kube-flannel:${FINANNEL_VERSION})for imageName in ${images[@]} ; do docker pull $ALIYUN_URL/$imageName docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName do
三、kubernetes集群部署
初始化kubeadm
$ kubeadm init \ --kubernetes-version=v1.7.3 \ --pod-network-cidr=10.244.0.0/16 \ --apiserver-advertise-address=192.168.61.91
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ kubectl get cs NAME STATUS MESSAGE ERROR scheduler Healthy ok controller-manager Healthy ok etcd-0 Healthy {"health": "true"}
查看集群状态
配置kubectl访问集群
在初始化时要加上 kubernetes-version
安装Pod Network
mkdir -p ~/k8s/$ wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel-rbac.yml $ wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml $ kubectl create -f kube-flannel-rbac.yml clusterrole "flannel" created clusterrolebinding "flannel" created $ kubectl apply -f kube-flannel.yml serviceaccount "flannel" created configmap "kube-flannel-cfg" created daemonset "kube-flannel-ds" created
kubectl get pod --all-namespaces -o wide
使用kubectl get pod --all-namespaces -o wide确保所有的Pod都处于Running状态。
flannel network add-on
到这一步,运用kubeadm 安装k8s 1.7 就算成功了,下来就是运用kubectl 来操作部署运行实际的容器!!!
作者:一个全栈的小白
链接:https://www.jianshu.com/p/0d85626e7498