国内主机安装kubenetes1.9.0

安装环境

Local Desktop: MacOS

Virtual Machine: vmware fusion

Virtual System: CentOS 7.2

Kubernetes: Kubernetes1.9

Docker: 1.13.1

服务器信息

主机名

IP

master

192.168.48.131

node1

192.168.48.129

node2

192.168.48.130

node3

192.168.48.128

一. 系统环境配置

(Master Node都需要配置)

1.下载离线安装包

链接:https://pan.baidu.com/s/1kjhCqh5DlcBHkqRyHOx8oQ 密码:9dma

下载到本地后, 上传到虚拟机root根目录

# bzip2   -d   k8s_images.tar.bz2
# tar  xvf  k8s_images.tar

2. 安装依赖

# yum install policycoreutils-python libtool-ltdl libseccomp device-mapper-libs kernel ntpdate
# reboot

3.修改本地hosts

# echo "192.168.48.131 matser" >> /etc/hosts
# echo "192.168.48.129 node1" >> /etc/hosts
# echo "192.168.48.130 node2" >> /etc/hosts
# echo "192.168.48.128 node3" >> /etc/hosts

注:这里可在配置秘钥之后 scp /etc/hosts 到各个node上,不需要挨个配置

4.添加master到node的秘钥认证(仅Master需要配置)

# ssh-keygen
# ssh-copy-id  node1
# ssh-copy-id  node2
# ssh-copy-id  node3

5.关闭SELINUX和firewall

# vi /etc/sysconfig/selinux
...
SELINUX=disabled 
...
# systemctl stop firewalld && systemctl disable firewalld
# reboot (修改完 selinux 需要重启生效)

6.路由配置

# modprobe br_netfilter
# echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
# echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
# sysctl -p

7.关闭Swap分区

大家在安装CentOS7时如果配置了swap分区, 这里由于k8s禁止系统开启此功能, 需要提前进行关闭, 没有配置swap请无视.

查看swap分区

free -m (已关闭状态)

# free -m
              total        used        free      shared  buff/cache   available
Mem:            974         488          70          14         415         294
Swap:             0           0           0
# swapoff  -a (关闭swap分区)

注释掉swap分区, 禁止开机启动swap

# vi /etc/fstab
...
#/dev/mapper/centos-swap swap swap defaults 0 0
...

8.开启系统时间同步

# systemctl enable ntpdate && systemctl start ntpdate

二. Docker配置

(Master Node都需要配置)

1.安装docker-1.13.1

# yum -y install docker

2.修改Docker使用腾讯云的镜像加速器

# vi /etc/docker/daemon.json
...
{
 "registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
...

3.重启docker并设置开机启动

# systemctl daemon-reload
# systemctl restart docker
# systemctl enable docker

4.本地载入我们的离线镜像

# cd /root
# vi image.sh
docker load < /root/k8s_images/docker_images/etcd-amd64_v3.1.10.tar
docker load </root/k8s_images/docker_images/flannel:v0.9.1-amd64.tar
docker load</root/k8s_images/docker_images/k8s-dns-dnsmasq-nanny-amd64_v1.14.7.tar
docker load </root/k8s_images/docker_images/k8s-dns-kube-dns-amd64_1.14.7.tar
docker load </root/k8s_images/docker_images/k8s-dns-sidecar-amd64_1.14.7.tar
docker load </root/k8s_images/docker_images/kube-apiserver-amd64_v1.9.0.tar
docker load </root/k8s_images/docker_images/kube-controller-manager-amd64_v1.9.0.tar
docker load </root/k8s_images/docker_images/kube-scheduler-amd64_v1.9.0.tar
docker load < /root/k8s_images/docker_images/kube-proxy-amd64_v1.9.0.tar
docker load </root/k8s_images/docker_images/pause-amd64_3.0.tar
docker load < /root/k8s_images/kubernetes-dashboard_v1.8.1.tar
#chmod  +x  image.sh
# sh image.sh

三.Kubernetes配置

1.安装kubelet kubeadm kubectl(Master Node都需要配置)

# cd k8s_images
# rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm kubernetes-cni-0.6.0-0.x86_64.rpm kubelet-1.9.9-9.x86_64.rpm kubectl-1.9.0-0.x86_64.rpm kubeadm-1.9.0-0.x86_64.rpm

2.重启kubelet并设置开机启动(Master Node都需要配置)

# systemctl enable kubelet && sudo systemctl start kubelet

3.修改docker配置文件中的Cgroup Driver参数与k8s一致(Master Node都需要配置)

# docker info |grep "Cgroup Driver"
如果"Cgroup Driver"value为 "cgroupfs", 将其值写入kubeadm配置文件
# vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
...
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver="cgroupfs"
...

我实验中Cgroup Driver参数默认是 systemd,跟配置文件中的保持一致,无需修改。

# systemctl daemon-reload && systemctl restart kubelet

4.Master初始化(Master 需要配置)

# kubeadm reset
# kubeadm init --kubernetes-version=v1.9.0 --pod-network-cidr=10.244.0.0/16

Tip: 这里的10.244.0.0/16与默认的配置文件网段一致, 如需调整请在后面的kube-flannel.yml文件做相应改变

如果一切没问题会output一个token返回命令

# kubeadm join --token 288f34.481c8faa5636966f 10.110.16.10:6443 --discovery-token-ca-cert-hash sha256:8036fac3b76e1a0dd189edaa8f7d36f2b51429dd0c0cf7ea0d78e7972d611002

如果初始化时卡在某一步不能继续下去的时候,可以通过 journalctl -xeu kubelet 查看初始化日志,找到错误原因。

注意:如果之前初始化过集群,但是没成功,后续尝试先kubeadm reset 然后再执行 kubeadm init 操作

24小时后这个token会失效, 需要重新生成, 使用如下命令进行生成.

# kubeadm token create
# kubeadm join --token "Your token code" "Your master ip address":6443

如果在24小时内忘记了,可以用如下命令获取.

# kubeadm token list

好了初始化 Master 完成后,我们使用命令 kubectl get node 查看集群节点信息,但是你会发现并没有出现 Node 信息,反而报错如下:

$ kubectl get node
The connection to the server localhost:8080 was refused - did you specify the right host or port?

What?上边不都显示安装完成了吗?其实是已经初始化完成了,只不过想使用集群的话,少了上边日志输出的那一步。

5.设置用户环境变量(Master 需要配置)

如果你使用的是root

# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
# source ~/.bash_profile

如果是非root用户

# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config

测试kubectl版本

# kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-15T21:07:38Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.0", GitCommit:"925c127ec6b946659ad0fd596fa959be43f0cc05", GitTreeState:"clean", BuildDate:"2017-12-15T20:55:30Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}

然后再次查看node ,发现已经可以正常显示master 和 三个node 的信息了

# kubectl get node
NAME      STATUS     ROLES     AGE       VERSION
master    Ready      master    1h        v1.9.0
node1     NotReady   <none>    1h        v1.9.0
node2     NotReady   <none>    1h        v1.9.0
node3     NotReady   <none>    1h        v1.9.0

我们再使用命令kubectl get pod --all-namespaces 查看当前节点所有的 pod。

$ kubectl get pod --all-namespaces
NAMESPACE     NAME                                         READY     STATUS         RESTARTS   AGE
kube-system   etcd-master.localdomain                      1/1       Running        0          23h
kube-system   kube-apiserver-master.localdomain            1/1       Running        0          1d
kube-system   kube-controller-manager-master.localdomain   1/1       Running        0          1d
kube-system   kube-dns-3913472980-37b6d                    0/3       Pending        0          14m
kube-system   kube-proxy-czzg9                             1/1       Running        0          1d
kube-system   kube-scheduler-master.localdomain            1/1       Running        0          1d

这里 kube-dns 显示状态为 Pending,没有关系,这是因为还没有安装 Pod Network 组件导致的,接下来我们安装 Flannel 网络组件后,它就会自动跑起来了。

6.使用flannel组件进行k8s网络配置(Master 需要配置)

#wget https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml

Tip: 这里的yml配置文件内的网段配置需与上面介绍的Master初始化的配置网段"--pod-network-cidr=10.244.0.0/16" 一致

# kubectl create -f kube-flannel.yml

稍等一下我们再来查看所有pod详细信息

# kubectl get pod --all-namespaces
NAMESPACE     NAME                             READY     STATUS    RESTARTS   AGE
kube-system   etcd-master                      1/1       Running   2          1h
kube-system   kube-apiserver-master            1/1       Running   2          1h
kube-system   kube-controller-manager-master   1/1       Running   2          1h
kube-system   kube-dns-6f4fd4bdf-7sgsd         3/3       Running   0          1h
kube-system   kube-flannel-ds-284vj            1/1       Running   0          1h
kube-system   kube-flannel-ds-5mzwr            1/1       Running   0          1h
kube-system   kube-flannel-ds-fmxvd            1/1       Running   3          1h
kube-system   kube-flannel-ds-wk5vv            1/1       Running   0          1h
kube-system   kube-proxy-7tv6s                 1/1       Running   0          1h
kube-system   kube-proxy-hd659                 1/1       Running   0          1h
kube-system   kube-proxy-qps9m                 1/1       Running   0          1h
kube-system   kube-proxy-wlqjl                 1/1       Running   2          1h
kube-system   kube-scheduler-master            1/1       Running   2          1h

现在是不是都是 Running 状态啦!

到此,安装kubenetes 1.9.0 完美结束,至于后面安装Kubernetes Dashboard操作,网上有很多教程文档,这里不再详述。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Laoqi's Linux运维专列

K8s集群部署篇–Kube-DNS(三)

5494
来自专栏bboysoul

记载一次删除mysql的默认数据库mysql的过程

今天终于尝到了什么叫删库跑路,妈的真的悲剧,早上想在树莓派里安装个wordpress,想放点街舞视频给大家分享一下,突然发现数据库里面还有一个以前的论坛数据库,...

873
来自专栏恰童鞋骚年

.NET Core微服务之基于IdentityServer建立授权与验证服务

  要学习IdentityServer,事先得了解一下基于Token的验证体系,这是一个庞大的主题,涉及到Token,OAuth&OpenID,JWT,协议规范...

2376
来自专栏刘天斯的专栏

基于 kubernetes 构建 Docker 集群管理详解

Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件,目前...

1.5K0
来自专栏Jerry的SAP技术分享

最简单的dockerfile使用教程 - 创建一个支持SSL的Nginx镜像

什么是dockerfile?简单的说就是一个文本格式的脚本文件,其内包含了一条条的指令(Instruction),每一条指令负责描述镜像的当前层(Layer)如...

1270
来自专栏转载gongluck的CSDN博客

FFmpeg菜鸡互啄#第2篇#配置VS开发环境

下载FFmpeg 首先是下载FFmpeg的win32库,我用的版本是2.5.2(和其他2.x.x版本应该不会有太大差别)。FFmpeg的官网上好像已经找不到旧版...

4486
来自专栏FreeBuf

利用Docker容器的不安全部署获取宿主机权限

滥用容器( container)及逃逸的方法有多种,本文将讨论最基本的一种,即滥用docker socket来逃逸容器并在宿主机上以root身份执行代码。

1552
来自专栏乐沙弥的世界

Vmware 下Oracle RAC搬家引起CRS-1006/CRS-0215/CRS-0233

   最近虚拟机下的Oracle 10g RAC搬家,搬家完毕之后,Oracle 集群resource之VIP无法正常启动,收到了CRS-0233: Resou...

1333
来自专栏Netkiller

《Netkiller Virtualization 手札》Docker 卷管理

本文节选择《Netkiller Virtualization 手札》Docker 卷管理 1.5. 卷管理 1.5.1. 列出卷 docker volume l...

3989
来自专栏互联网技术栈

使用Docker(Mac)搭建 Nginx/Openresty - Kafka - kafkaManager

地址:https://store.docker.com/editions/community/docker-ce-desktop-mac

2138

扫码关注云+社区

领取腾讯云代金券