环境:centos7.6
内核版本:3.10.0-957.el7.x86_64 (可自行升级内核)
1、virtualbox新建虚拟机
centos7-kub01虚拟机:
网卡1使用host-only网络,用于kubernete节点之间的连接。还有用于笔记本电脑连接虚拟机。
网卡2使用网络地址转换(NAT),用于连接互联网,下载镜像
其他的虚拟机的网卡配置也类似
2、安装centos7,自行安装
待补充
3、升级内核(可选)
待补充
4、安装docker,网上有教程
待补充
5、安装kubeadm
待补充
kubeadm安装可以参考:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
6、使用kubeadm安装kubernetes
首先确认已经安装的kubeadm的版本
[root@kub01 ~]# yum list installed|grep kube
Failed to set locale, defaulting to C
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
cri-tools.x86_64 1.13.0-0 @kubernetes
kubeadm.x86_64 1.17.0-0 @kubernetes
kubectl.x86_64 1.17.0-0 @kubernetes
kubelet.x86_64 1.17.0-0 @kubernetes
kubernetes-cni.x86_64 0.7.5-0 @kubernetes
提前下载需要使用到镜像,这个非常重要,如果你在国内的话,k8s.gcr.io会提示连接超时,除非自己解决,v1.17版本需要用到的镜像如下:
k8s.gcr.io/kube-apiserver:v1.17.0
k8s.gcr.io/kube-controller-manager:v1.17.0
k8s.gcr.io/kube-scheduler:v1.17.0
k8s.gcr.io/kube-proxy:v1.17.0
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.5
针对这种情况,可以首先通过docker pull命令先在国内源将镜像下载完毕,然后通过docker tag命令重新设置tag(master节点)
docker pull gcr.azk8s.cn/google_containers/kube-proxy:v1.17.0
docker pull gcr.azk8s.cn/google_containers/kube-apiserver:v1.17.0
docker pull gcr.azk8s.cn/google_containers/kube-controller-manager:v1.17.0
docker pull gcr.azk8s.cn/google_containers/kube-scheduler:v1.17.0
docker pull gcr.azk8s.cn/google_containers/etcd:3.4.3-0
docker pull gcr.azk8s.cn/google_containers/coredns:1.6.5
docker pull gcr.azk8s.cn/google_containers/pause:3.1
docker tag gcr.azk8s.cn/google_containers/kube-proxy:v1.17.0 k8s.gcr.io/kube-proxy:v1.17.0 docker tag gcr.azk8s.cn/google_containers/kube-apiserver:v1.17.0 k8s.gcr.io/kube-apiserver:v1.17.0 docker tag gcr.azk8s.cn/google_containers/kube-controller-manager:v1.17.0 k8s.gcr.io/kube-controller-manager:v1.17.0 docker tag gcr.azk8s.cn/google_containers/kube-scheduler:v1.17.0 k8s.gcr.io/kube-scheduler:v1.17.0 docker tag gcr.azk8s.cn/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0 docker tag gcr.azk8s.cn/google_containers/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5 docker tag gcr.azk8s.cn/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
子节点只需要下载其中两个镜像即可
docker pull gcr.azk8s.cn/google_containers/kube-proxy:v1.17.0
docker pull gcr.azk8s.cn/google_containers/pause:3.1
docker tag gcr.azk8s.cn/google_containers/kube-proxy:v1.17.0 k8s.gcr.io/kube-proxy:v1.17.0 docker tag gcr.azk8s.cn/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
如果没有对应版本的镜像,就只能自己去搜寻了
镜像搞定后,接下来安装kubernetes,通过kubeadm init安装
[root@kub01 ~]# kubeadm init --apiserver-advertise-address 192.168.56.107 --pod-network-cidr=10.244.0.0/16
安装日志信息(部分信息省略):
[root@kub01 ~]# kubeadm init --apiserver-advertise-address 192.168.56.107 --pod-network-cidr=10.244. 0.0/16 W0119 01:08:20.120396 20293 version.go:101] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get https://dl.k8s.io/release/stable-1.txt: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) W0119 01:08:20.120526 20293 version.go:102] falling back to the local client version: v1.17.0 W0119 01:08:20.121144 20293 validation.go:28] Cannot validate kubelet config - no validator is available W0119 01:08:20.121169 20293 validation.go:28] Cannot validate kube-proxy config - no validator is available [init] Using Kubernetes version: v1.17.0 Your Kubernetes control-plane has initialized successfully! To start using your cluster, you need to run the following as a regular user: ... mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ Then you can join any number of worker nodes by running the following on each as root: kubeadm join 192.168.56.107:6443 --token 40yu1v.jb0rfmijbjwwp1mk --discovery-token-ca-cert-hash sha256:be3edcdd89b0a742a216a2a041633e57cbd4223e100edacc504785249499530c
master节点配置kubectl
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
如果是root用户,可以运行一下命令配置kubectl
export KUBECONFIG=/etc/kubernetes/admin.conf
子节点可以通过以下命令加入到kubernetes集群(安装日志信息最后会打印):
kubeadm join 192.168.56.107:6443 --token 40yu1v.jb0rfmijbjwwp1mk --discovery-token-ca-cert-hash sha256:be3edcdd89b0a742a216a2a041633e57cbd4223e100edacc504785249499530c
查看所有的pods,可以发现coredns这个pod一直处于pending
[root@kub01 ~]# kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-6955765f44-k467p 0/1 Pending 0 6m55s kube-system coredns-6955765f44-qrpv4 0/1 Pending 0 6m55s kube-system etcd-kub01 1/1 Running 0 7m9s kube-system kube-apiserver-kub01 1/1 Running 0 7m9s kube-system kube-controller-manager-kub01 1/1 Running 0 7m9s kube-system kube-proxy-mmv9x 1/1 Running 0 6m54s kube-system kube-scheduler-kub01 1/1 Running 0 7m9s
查看所有的节点,都处于notreayd状态,这是因为没有安装网络插件,可选calico、flannel或者其他插件,
[root@kub01 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION kub01 NotReady master 12m v1.17.0 kub02 NotReady <none> 41s v1.17.0
之前kubeadm init使用了参数--pod-network-cidr=10.244.0.0/16,所以我们在这里使用flannel网络
首先还是需要先从国内下载镜像,然后通过docker tag命令重新打tag,主节点和子节点都需要运行
docker pull quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 docker tag quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
在master节点通过kubctl安装flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml
运行完毕后查看所有的pods和nodes状态
[root@kub01 ~]# kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-6955765f44-k467p 1/1 Running 2 57m kube-system coredns-6955765f44-qrpv4 1/1 Running 2 57m kube-system etcd-kub01 1/1 Running 2 57m kube-system kube-apiserver-kub01 1/1 Running 3 57m kube-system kube-controller-manager-kub01 1/1 Running 2 57m kube-system kube-flannel-ds-amd64-chb5z 1/1 Running 3 44m kube-system kube-flannel-ds-amd64-dzwpr 1/1 Running 0 44m kube-system kube-proxy-46jzs 1/1 Running 0 45m kube-system kube-proxy-mmv9x 1/1 Running 3 57m kube-system kube-scheduler-kub01 1/1 Running 2 57m
[root@kub01 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION kub01 Ready master 3h2m v1.17.0 kub02 Ready <none> 170m v1.17.0
至此配置完毕
使用kubeadm安装kubernetes可以参考:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/troubleshooting-kubeadm/
virtulabox虚拟机使用kubeadm1.17.0部署kubernetes
原文:https://www.cnblogs.com/zmichael/p/12215120.html