首页 > Web开发 > 详细

virtulabox虚拟机使用kubeadm1.17.0部署kubernetes

时间:2020-01-19 18:43:07      阅读:253      评论:0      收藏:0      [点我收藏+]

环境: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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!