Docker学习Docker容器Awesome Docker

使用Kubeadm部署kubernetes集群

2017-11-02  本文已影响105人  JellyC

简介:因工作要求所以学习了一下kubernetes相关知识,在这里和大家分享一下。文章中所有步骤都是在root权限下执行的,如果文中有错误的地方还望看官交流指正,此文档仅用作参考,谢谢。


准备:

准备3台Cent OS7 虚拟机:

1.sh-vm3:172.17.1.43  port 4322 ; sh-vm4: 172.17.1.44  port 4422 ; sh-vm5: 172.17.1.45 port 4522 

2.不需要ssh的同学忽略此步骤.

ssh -p 4322 root@218.255.12.218  ssh -p 4422 root@218.255.12.218  ssh -p 4522 root@218.255.12.218 开启终端 分别连接三台VM.

到这里我么的准备工作就完成了,下面让我们开始k8s的部署吧。


Master:

1.我们把sh-vm3:172.17.1.43  port 4322 作为集群的Master. sh-vm4和sh-vm5作为node.

2.在/etc/yum.repos.d/ 目录下新建docker.repo文件:vim /etc/yum.repos.d/docker.repo  (如果没有安装vim 执行 yum install vim). 在文件内填入内容

[dockerrepo]

name=Docker Repository

baseurl=https://yum.dockerproject.org/repo/main/centos/7/

enabled=1

gpgcheck=1

gpgkey=https://yum.dockerproject.org/gpg

3.安装docker:   yum install docker-engine-1.12.6  ,执行 :

a. systemctl enable docker.service

b. systemctl daemon-reload

c. systemctl start docker

4.安装最新的kubectl:

a. curl -LOhttps://storage.googleapis.com/kubernetes-release/release/$(curl -shttps://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl

b. chmod +x ./kubectl  (修改权限)

c. mv ./kubectl /usr/local/bin/kubectl (移动文件位置)

5.安装kubeadm和kubelet

a. 在 /etc/yum.repos.d/ 目录下新建 kubernetes.repo文件: vim /etc/yum.repos.d/docker.repo  写入内容:

[kubernetes]

name=Kubernetes

baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg

https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

b. 禁用selinux,执行:  setenforce 0

c. 安装kubeadm和kubelet , 执行:   yum install -y kubeadm kubelet   (注意:如果在这里出现错误,执行:vim /etc/yum.repos.d/docker.repo ; 将 gpgkey 的第一个链接https://packages.cloud.google.com/yum/doc/yum-key.gpg删除)

6.执行 vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf ; 将systemd更改为cgroupfs 并且在 "--allow-privileged=true"后添加 ''--fail-swap-on=false" ,结果如下图

7执行 systemctl daemon-reload ; systemctl enable kubelet && systemctl start kubelet

8.创建集群,执行:kubeadm init --pod-network-cidr=10.244.0.0/16 ; (如果有提示 you can skip pre-flight ...那么在命令后面添加 --skip-preflight-checks 参数即可)这时候你可以看到如下内容:

Your Kubernetes master has initialized successfully!

To start using your cluster, you need to run (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:

http://kubernetes.io/docs/admin/addons/

You can now join any number of machines by running the following on each node

as root:

kubeadm join --token b5866f.ce6a5b3c7dbf849a 172.17.1.43:6443 --discovery-token-ca-cert-hash sha256:2ee4d26c40d529ca3c5ea715cb8ef5e5fc81bd5f7430dfe8cdf187e050e277c1

按照提示一步步执行即可

9.通过执行以下命令设置pod网络:

a. kubectl apply - f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

b. kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml

c. 现在master准备接受连接,执行步骤#8返回的kubeadm join命令,检查节点是否加入了网络,执行kubectl get node

10.等待node安装#2执行完,将master证书通过scp拷贝到node(有多台则执行多次):

a. scp -P 4422 /etc/kubernetes/pki/ca.keyroot@172.17.1.44:/etc/kubernetes/pki/1.key

b. scp -P 4422 /etc/kubernetes/pki/ca.crtroot@172.17.1.44:/etc/kubernetes/pki/1.crt

node将使用master上的证书生成新的证书

11.拷贝bootstrap-kubelet.conf 和~/.kube/config到node:

a. scp -P 4422 /etc/kubernetes/bootstrap-kubelet.confroot@172.17.1.44:/etc/kubernetes/

b. scp -P 4422 ~/.kube/configroot@172.17.1.44:~/.kube/


node安装:

1.重复Master安装步骤的2-6,完成之后执行#2

2.在/etc/kubernetes/ 目录下面新建pki 文件夹,用来存储秘钥,新建~/.kube/ 存放config文件:

 mkdir /etc/kubernetes/pki/  ;   mkdir ~/.kube/   等待Master #10 #11执行完毕进行下一步

3.安装证书生成工具:

a. yum install httpd

b. systemctl enable httpd.service

c. yum install mod_ssl

4.生成证书(进入/pki文件目录):

a. openssl genrsa -out ca.key 2048

b. openssl req -new -key ca.key -subj "/CN=172.17.1.44" -out ca.csr  ("/CN=ip"填入node的IP地址)

c. openssl x509 -req -in ca.csr -CA 1.crt -CAkey 1.key -CAcreateserial -out ca.crt -days 3650

5.启动kubectl服务:

a. systemctl enable kubelet && systemctl start kubelet

b. 执行Master#8 kubeadm join --token b5866f.ce6a5b3c7dbf849a 172.17.1.43:6443 --discovery-token-ca-cert-hash sha256:2ee4d26c40d529ca3c5ea715cb8ef5e5fc81bd5f7430dfe8cdf187e050e277c1  (如果有提示 you can skip pre-flight ...那么在命令后面添加 --skip-preflight-checks 参数即可)

7.到这里我们的node节点就部署好了,执行 kubectl get nodes 就可以看到集群的状态啦。


题外话:初次使用简书,排版不好还请谅解。如果有疑问的话可以留言,我会及时回复。

上一篇下一篇

猜你喜欢

热点阅读