Welcome to the K-free blog;|

k-free

园龄:5年8个月粉丝:5关注:7

Kubernetes ---- kubeadm安装kubernetes

 

  之前就已经装过k8s了,有些东西不常用真的就是容易忘掉,今天我又搞了一遍,并记录下来以此加深印象;

一、环境描述:

  kubernetes的版本选择的是v1.15.0版本(之前第一次装还是1.11);

操作系统 IP地址 集群中角色 k8s需用的docker镜像
Centos 7 192.168.222.100 Master

quay.io/coreos/flannel:v0.12.0-amd64

k8s.gcr.io/kube-proxy:v1.15.0

k8s.gcr.io/kube-apiserver:v1.15.0

k8s.gcr.io/kube-scheduler:v1.15.0

k8s.gcr.io/kube-controller-manager:v1.15.0

k8s.gcr.io/coredns:1.3.1

k8s.gcr.io/etcd:3.3.10

k8s.gcr.io/pause:3.1

Centos 7 192.168.222.101 Node

quay.io/coreos/flannel:v0.12.0-amd64

k8s.gcr.io/kube-proxy:v1.15.0

k8s.gcr.io/pause:3.1

Centos 7 192.168.222.102 Node

quay.io/coreos/flannel:v0.12.0-amd64

k8s.gcr.io/kube-proxy:v1.15.0

k8s.gcr.io/pause:3.1

 



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、环境准备:

1.修改本地hosts文件,添加GitHub及集群内部主机的解析(添加了GitHub相关的地址后会省去很多麻烦= =)node节点也要加哦.

复制代码
~]# vim /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.222.100 node1
192.168.222.101 node2
192.168.222.192 node3
# GitHub Start
52.74.223.119 github.com
192.30.253.119 gist.github.com
54.169.195.247 api.github.com
185.199.111.153 assets-cdn.github.com
151.101.76.133 raw.githubusercontent.com
151.101.108.133 user-images.githubusercontent.com
151.101.76.133 gist.githubusercontent.com
151.101.76.133 cloud.githubusercontent.com
151.101.76.133 camo.githubusercontent.com
151.101.76.133 avatars0.githubusercontent.com
151.101.76.133 avatars1.githubusercontent.com
151.101.76.133 avatars2.githubusercontent.com
151.101.76.133 avatars3.githubusercontent.com
151.101.76.133 avatars4.githubusercontent.com
151.101.76.133 avatars5.githubusercontent.com
151.101.76.133 avatars6.githubusercontent.com
151.101.76.133 avatars7.githubusercontent.com
151.101.76.133 avatars8.githubusercontent.com
# GitHub End

复制代码

2.关闭防火墙以及停用Selinux.

~]# systemctl stop firewalld
~]# setenfoce 0

3. 配置Kubernetes的yum源(以下内容是阿里云的内容).

复制代码
源地址:https://developer.aliyun.com/mirror/kubernetes
~]# cat
<<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
复制代码

4. 配置docker源

~]# yum install -y yum-utils device-mapper-persistent-data lvm2
~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 

三、安装、配置Master

1. 首先要在各服务器上执行以下命令安装软件包.(手动指定软件包版本是很不错的选择,刚开始没指定,默认会安装最新版的,最后你在国内找不到最新版的镜像才是最衰的,血淋淋的例子!.)

~]# yum -y install docker-ce
~]# yum -y install kubeadm-1.15.0 kubectl-1.15.0 kubelet-1.15.0

2. 启动docker

~]# systemctl start docker

3. 撰写(下载->改名->删除镜像)脚本(由于初始化需要下载镜像,但镜像都在外网,所以采用以下方法,脚本比较无脑,不过倒是能用,还是Python大法好,我本地没装Python3,没办法= =)

复制代码
    #!/bin/bash
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.0
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.0
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.0
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.0
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1

    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.0 k8s.gcr.io/kube-apiserver:v1.15.0
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.0 k8s.gcr.io/kube-controller-manager:v1.15.0
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.0 k8s.gcr.io/kube-scheduler:v1.15.0
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.0 k8s.gcr.io/kube-proxy:v1.15.0
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.0
    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.0
    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.0
    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.0
    docker rmi registry.cn-hangzhou.aliyuncs.com/google
复制代码

4. 编辑kubelet配置文件,增加忽略swap相关配置

注意:如果执行过kubeadm reset("恢复出厂设置")命令,则需要重新编辑此文件(因为我第一次初始化的时候出了问题,所以最后才发现默认此文件也恢复了.)

~]# vim /etc/sysconfig/kubelet
    KUBELET_EXTRA_ARGS="--fail-swap-on=false"

5. 开始初始化Master,初始化如果成功了的话呢,就会看到"successfully"字样,如果有问题则去看"/var/log/message"的日志;(记得保留初始化成功后的信息;)

# 建议添加"--apiserver-advertise-address"参数,指定Master的地址,我这里就傻了,没有指定,结果莫名其妙的给了我一个地址,我也不知道是什么鬼东西
~]# kubeadm init --pod-network-cidr 10.244.0.0/16 --service-cidr 10.96.0.0/12 --ignore-preflight-errors=swap

可能出现的问题:

The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error:

这个问题,网上众说纷纷,有说没有在hosts文件里定义的,也有说要在cat /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf加东西的,其实就是因为swap内存的原因,当出现这个问题的时候回到第4步检查一下配置文件里是否还有添加的那条指令.

6. 配置网络(flannel),下面的命令是flannel官方提供的,只要是k8s1.7+版本以上的就可直接使用

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

7. 镜像打包传输至node节点

[Master节点操作]
~]# mkdir imgs
~]# docker save quay.io/coreos/flannel:v0.12.0-amd64 -o flannel.tar
~]# docker save k8s.gcr.io/kube-proxy:v1.15.0 -o kube-proxy.tar
~]# docker save k8s.gcr.io/pause:3.1 -o pause.tar
~]# mv *.tar imgs/
~]# scp -r imgs/ root@192.168.222.100:/root

8. Master上检查(为什么我下面突然变了用户,是当你初始化结束后要创建一个普通用户,并拷贝到home目录下,初始化成功后控制台有操作步骤)

复制代码
# 检查一下集群状态,现在node节点还没有添加进来,所以只有这一条,而且你看的时候不一定是Ready状态(因为基于系统命名空间的一些Pod不一定都启动完成了)
[kubeadm@node1 ~]$ kubectl get nodes NAME STATUS ROLES AGE VERSION node1 Ready master 3h25m v1.15.0
# 检查一下系统级命名空间的pod是否已经启动成功,我有些pod分布在node2,node3上是因为我已经将他们加入集群了.
[kubeadm@node1 ~]$ kubectl get pods - n kube-system -o wide

# 查看控制器的状态,目前都是ok正常的,那么可以继续啦

 [kubeadm@node1 ~]$ kubectl get cs

复制代码

四、安装、配置各Node

各Node节点上的前三步与Master上的1、2、4步骤相同,此处不再过多演示

4. 将Node加入至cluster(这条命令在初始化了maser后会自动产生,直接copy过来即可,除了"--ignore-preflight-error=swap"需手动添加)

~]# kubeadm join 192.168.133.128:6443 --token u2pjqq.dxkbgfjtawmc7933     --discovery-token-ca-cert-hash \ 
sha256:520516b0ea9516f638ffdb5fdef8a50de5d0e14f1afc1b98e6c61d20f77fc8ac --ignore-preflight-errors=swap

5. 加载Master传过来的镜像,成功加入至集群后控制台也会打印一定信息,我记不住打啥了,然后加载镜像就ok.

~]# docker load -i /root/img/flannel.tar
~]# docker load -i /root/img/kube-proxy.tar
~]# docker load -i /root/img/pause.tar
~]# systemctl restart kubelet

 

五、回到Master检查集群状态及各Pod状态

~]$ kubectl get pods -n kube-system -o wide 

~]$ kubectl get nodes

 

 

至此,Kubernetes集群搭建完成,谢谢大家观看!

 

本文作者:k-free

本文链接:https://www.cnblogs.com/k-free-bolg/p/12981968.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   k-free  阅读(575)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 新時代 (ウタ from ONE PIECE FILM RED) Ado
新時代 (ウタ from ONE PIECE FILM RED) - Ado
00:00 / 00:00
An audio error has occurred.

作词 : 中田ヤスタカ

作曲 : 中田ヤスタカ

新時代はこの未来だ

世界中全部 変えてしまえば

変えてしまえば

ジャマモノ やなもの なんて消して

ジャマモノ やなもの なんて消して

この世とメタモルフォーゼしようぜ

ミュージック

キミが起こす マジック

目を閉じれば未来が開いて

目を閉じれば未来が開いて

いつまでも終わりが来ないようにって

この歌を歌うよ

Do you wanna play? リアルゲーム ギリギリ

Do you wanna play? リアルゲーム ギリギリ

綱渡りみたいな旋律

認めない戻れない忘れたい

夢の中に居させて I wanna be free

見えるよ新時代が 世界の向こうへ

さあ行くよ NewWorld

新時代はこの未来だ

新時代はこの未来だ

世界中全部 変えてしまえば

変えてしまえば

果てしない音楽がもっと届くように

夢は見ないわ キミが話した

「ボクを信じて」

あれこれいらないものは消して

あれこれいらないものは消して

リアルをカラフルに越えようぜ

ミュージック

今始まる ライジング

目をつぶりみんなで逃げようよ

目をつぶりみんなで逃げようよ

今よりイイモノを見せてあげるよ

この歌を歌えば

Do you wanna play? リアルゲーム ギリギリ

Do you wanna play? リアルゲーム ギリギリ

綱渡りみたいな運命

認めない戻れない忘れたい

夢の中に居させて I wanna be free

見えるよ新時代が 世界の向こうへ

さあ行くよ NewWorld

新時代わ この未来を

新時代わ この未来を

世界中全部 変えてしまえば 変えてしまえば

果てしない音楽がもっと届くように

夢を見せるよ 夢を見せるよ

新時代だ

新時代だ

新時代だ