广州网站推广多少钱,国内免费云服务器推荐,wordpress多功能代码,专业装修图片1. kubeadm简介
kubeadm 是 Kubernetes 官方提供的一个 CLI 工具#xff0c;可以很方便的搭建一套符合官方最佳实践的最小化可用集群。当我们使用 kubeadm 搭建集群时#xff0c;集群可以通过 K8S 的一致性测试#xff0c;并且 kubeadm 还支持其他的集群生命周期功能#…1. kubeadm简介
kubeadm 是 Kubernetes 官方提供的一个 CLI 工具可以很方便的搭建一套符合官方最佳实践的最小化可用集群。当我们使用 kubeadm 搭建集群时集群可以通过 K8S 的一致性测试并且 kubeadm 还支持其他的集群生命周期功能比如升级/降级等。
2. 安装kebeadm
2.1 安装前准备
禁用 swap
我们知道每个节点上都有个必须的组件名为 kubelet自 K8S 1.8 开始启动 kubelet 时需要禁用 swap 。或者需要更改 kubelet 的启动参数 --fail-swap-onfalse。 cat /proc/swaps swapoff -a 将 /etc/fstab 中和上一条命令中输出的和 swap 相关的挂载点都删掉 确保要搭建集群的所有节点的 product_uuid和Mac 地址 均不相同 /sys/class/dmi/id/product_uuid ip a确保需要的端口没被占用
netstat -ntlp |grep -E 6443|23[79,80]|1025[0,1,2]部署docker
[rootslave ~]# yum install -y wget wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
[rootslave ~]# yum -y install docker-ce-18.06.1.ce-3.el7
[rootslave ~]# systemctl enable docker systemctl start docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
2.2 正式安装
安装kubeadm
[rootslave ~]# curl -sSL https://dl.k8s.io/release/v1.11.3/bin/linux/amd64/kubeadm /usr/bin/kubeadm
[rootslave ~]# chmod arx /usr/bin/kubeadm
[rootslave ~]# kubeadm version
kubeadm version: version.Info{Major:1, Minor:11, GitVersion:v1.11.3, GitCommit:a4529464e4629c21224b3d52edfe0ea91b072862, GitTreeState:clean, BuildDate:2018-09-09T17:59:42Z, GoVersion:go1.10.3, Compiler:gc, Platform:linux/amd64}
安装kubelet
[rootslave ~]# cat /etc/yum.repos.d/kubernetes.repo EOF[kubernetes]nameKubernetesbaseurlhttps://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled1gpgcheck0repo_gpgcheck0gpgkeyhttps://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
[rootslave ~]# yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
[rootslave ~]# systemctl enable kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.开启集群
[rootslave ~]# kubeadm init --apiserver-advertise-address192.168.211.130 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.15.0 --service-cidr10.1.0.0/16 --pod-network-cidr10.244.0.0/16
2.3 安装踩坑总结
[ERROR FileContent–proc-sys-net-bridge-bridge-nf-call-iptables]:/proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
[rootslave ~]# kubeadm init
W0427 21:22:15.098333 7591 version.go:98] could not fetch a Kubernetes version from the internet: unable to get URL https://dl.k8s.io/release/stable-1.txt: Get https://storage.googleapis.com/kubernetes-release/release/stable-1.txt: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
W0427 21:22:15.098507 7591 version.go:99] falling back to the local client version: v1.15.0
[init] Using Kubernetes version: v1.15.0
[preflight] Running pre-flight checks[WARNING IsDockerSystemdCheck]: detected cgroupfs as the Docker cgroup driver. The recommended driver is systemd. Please follow the guide at https://kubernetes.io/docs/setup/cri/
error execution phase preflight: [preflight] Some fatal errors occurred:[ERROR FileContent--proc-sys-net-bridge-bridge-nf-call-iptables]: /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors...解决方案
echo 1 /proc/sys/net/bridge/bridge-nf-call-iptables[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager:v1.15.0
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver:v1.15.0: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager:v1.15.0: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-scheduler:v1.15.0: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-proxy:v1.15.0: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1[ERROR ImagePull]: failed to pull image k8s.gcr.io/pause:3.1: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1[ERROR ImagePull]: failed to pull image k8s.gcr.io/etcd:3.3.10: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1[ERROR ImagePull]: failed to pull image k8s.gcr.io/coredns:1.3.1: output: Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
, error: exit status 1
[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors...解决方案
kubeadm init --apiserver-advertise-address192.168.211.130 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.15.0 --service-cidr10.1.0.0/16 --pod-network-cidr10.244.0.0/16
[ERROR ImagePull]: failed to pull image registry.aliyuncs.com/google_containers/kube-apiserver:v1.15.0: output: v1.15.0: Pulling from google_containers/kube-apiserver
解决方案
docker pull registry.aliyuncs.com/google_containers/kube-apiserver:v1.15.0The connection to the server localhost:8080 was refused - did you specify the right host or port?
[rootslave ~]# kubectl cluster-infoTo further debug and diagnose cluster problems, use kubectl cluster-info dump.
The connection to the server localhost:8080 was refused - did you specify the right host or port?
解决方案
[rootslave ~]# echo export KUBECONFIG/etc/kubernetes/admin.conf /etc/profile
[rootslave ~]# source /etc/profile
[rootslave ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
slave NotReady master 8m39s v1.15.0