实验环境:VMware Fusion 11.0.2

操作系统:CentOS 7.6

主机名 IP地址 CPU 内存
k8s2m 172.16.183.151 2核 4G
k8s2n 172.16.183.161 1核 1G

装系统的时候就已经设置为静态IP了,语言为英语,时区是上海。另外因为kubernetes默认不支持swap分区,所以在硬盘分区的时候直接把swap分区拿掉了。这里可以先忽略这些。

如果装系统时分配了 swap 分区,临时关闭 swap 分区可以用: swapoff -a ,永久关闭可以在  /etc/fstab  里面注释掉,这段开始忘了写了,用红色写出来吧。

未声明的话,下列命令在 k8s2m 和 k8s2n 上都能执行。

1、配置 SSH 免密登陆

在本机的hosts 文件中加入如下内容:

72.16.183.151 k8s2m
172.16.183.161 k8s2n

然后查看本机是否有 id_rsa.pub 文件,如果没有则通过 ssh-keygen 生成

if [ -f "$HOME/.ssh/id_rsa.pub" ];then echo "File exists"; else ssh-keygen; fi

将本地公钥安装到虚拟机的root账户下

ssh-copy-id root@k8s2m
ssh-copy-id root@k8s2n

至此免密登陆配置完成。

2、解决 setLocale 问题

接下来开两个终端通过ssh进入系统,在终端得到如下输出:

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

在终端直接执行如下命令,然后退出ssh,再次进入,或者直接重启虚拟机

cat <<EOF >  /etc/environment
LANG=en_US.UTF-
LC_ALL=C
EOF

3、设置 SELinux 为 permissive 模式

setenforce
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

4、停止并且禁用动态防火墙

systemctl disable firewalld && systemctl stop firewalld

5、添加 kubernetes.repo 和 docker-ce.repo

原本是都用 cat EOF 方式来做的,结果发现在我MAC上SSH连接进去执行后文件内容一致,但即便 yum clean all 后仍然无法生效,这里还是使用 vi,vim等编辑器往里面粘贴算了。

vi /etc/yum.repos.d/kubernetes.repo

[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=
gpgcheck=
repo_gpgcheck=
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

vi /etc/yum.repos.d/docker-ce.repo

[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
enabled=
gpgcheck=
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg [docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/stable
enabled=
gpgcheck=
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg [docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/stable
enabled=
gpgcheck=
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg [docker-ce-edge]
name=Docker CE Edge - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/edge
enabled=
gpgcheck=
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg [docker-ce-edge-debuginfo]
name=Docker CE Edge - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/edge
enabled=
gpgcheck=
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg [docker-ce-edge-source]
name=Docker CE Edge - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/edge
enabled=
gpgcheck=
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg [docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/test
enabled=
gpgcheck=
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg [docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/test
enabled=
gpgcheck=
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg [docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/test
enabled=
gpgcheck=
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg [docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/nightly
enabled=
gpgcheck=
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg [docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/debug-$basearch/nightly
enabled=
gpgcheck=
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg [docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/source/nightly
enabled=
gpgcheck=
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg

6、安装 docker-ce

这里kubeadm的版本是1.13.1,支持的 docker 版本最高应该是 18.06.x,通过执行  yum list docker-ce --showduplicates | sort -r 得到 docker 各版本的列表:

这里选 18.06.1.ce-3.el7

docker-ce.x86_64            3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.12.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.09.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.06.0.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.3.ce-1.el7 docker-ce-stable
docker-ce.x86_64 17.03.2.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable

安装 docker-ce:

yum install -y docker-ce-18.06..ce-.el7

启动 docker 服务,并将 docker 服务设置为开机启动

systemctl enable docker && systemctl start docker

7、安装 kubelet、kubeadm 和 kubectl

以下是安装 kubernetes 所需的工具

yum install -y kubelet kubeadm kubectl

启动 docker、kubelet 服务,并将 docker、kubelet 服务设置为开机启动

systemctl enable kubelet && systemctl start kubelet

8、安装镜像

列出 kubeadm 需要安装的镜像列表,然后使用 sed 修改后执行:

kubeadm config images list |sed -e 's#k8s.gcr.io\/coredns#coredns\/coredns#g'|sed -e 's/^/docker pull /g' -e 's#k8s.gcr.io#mirrorgooglecontainers#g'|sh -x

装好的镜像 tag 跟 kubeadm 直接装的是不一样的,这里给予修正:

docker images |grep -E 'mirrorgooglecontainers|coredns/coredns'|awk '{print "docker tag ",$1":"$2,$1":"$2}'|sed -e 's#mirrorgooglecontainers#k8s.gcr.io#2'|sed -e 's#coredns#k8s.gcr.io#3'|sh -x

最后移除掉多余的 tag

docker images |grep -E 'mirrorgooglecontainers|coredns/coredns'|awk '{print "docker rmi ",$1":"$2}'|sh -x

9、配置 net.bridge.bridge-nf-call-iptables

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables =
net.bridge.bridge-nf-call-iptables =
EOF
sysctl --system

然后重启 kubelet

systemctl daemon-reload
systemctl restart kubelet

10、创建kubernetes master,只需要在 master 节点(k8s2m)上执行

在 master 上执行下面命令创建 kubernetes master,为何加 --pod-network-cidr=10.244.0.0/16 看这里

kubeadm init --pod-network-cidr=10.244.0.0/

命令执行结束后,根据提示执行如下操作,如果本身是 root 用户,第三条其实不用执行的:

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

下面还有一条如下形式的提示,拷贝出来,在 worker 节点(k8s2n)上需要执行

kubeadm join 172.16.183.151: --token ############## --discovery-token-ca-cert-hash #############################

最后安装 pod network add-on,这里装 flannel,在安装之前这里有如下说明,也是为何

链接地址: https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#tabs-pod-install-4

For flannel to work correctly, you must pass --pod-network-cidr=10.244.0.0/16 to kubeadm init.

安装flannel

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

如果想要查看 pods 或 nodes,分别执行如下命令(另外 pods 就是跑在 docker 上的,也可以通过 docker ps 来查看):

 kubectl get pods --all-namespaces
kubectl get nodes --all-namespaces

想要查看实时状态还可以执行如下命令,-n2也就是2秒刷新一次结果:

watch -n2 kubectl get pods --all-namespaces
watch -n2 kubectl get nodes --all-namespaces

11、将 worker 节点(k8s2n) 加入 master 节点(k8s2m)

最后只需要在 worker 节点(k8s2n)上执行如下命令(在 master 节点 init 结束让存下的命令):

kubeadm join 172.16.183.151: --token ############## --discovery-token-ca-cert-hash #############################

当在master 节点 (k8s2m) 执行  kubectl get nodes ,能看到两个节点,并且状态都是  Ready 的时候,这里的任务也就暂时完成了。

CentOS 7.6 使用kubeadm安装Kubernetes 13的更多相关文章

  1. 在CentOS 7.6 以 kubeadm 安装 Kubernetes 1.15 最佳实践

    前言 Kubernetes作为容器编排工具,简化容器管理,提升工作效率而颇受青睐.很多新手部署Kubernetes由于"scientifically上网"问题举步维艰,本文以实战经 ...

  2. Centos7 使用 kubeadm 安装Kubernetes 1.13.3

    目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4 ...

  3. kubeadm安装kubernetes-v1.13.1

    kubeadm安装kubernetes-v1.13.1 centos虚拟机使用kubeadm安装k8s-v1.13.1. 机器信息如下: 主机名 ip master 192.168.239.200 n ...

  4. 使用kubeadm 安装 kubernetes 1.15.1

    简介: Kubernetes作为Google开源的容器运行平台,受到了大家的热捧.搭建一套完整的kubernetes平台,也成为试用这套平台必须迈过的坎儿.kubernetes1.5版本以及之前,安装 ...

  5. 使用 kubeadm 安装 kubernetes v1.16.0

    近日通过kubeadm 安装 kubernetes v1.16.0,踩过不少坑,现记录下安装过程. 安装环境: 系           统:CentOS Linux release 7.6 Docke ...

  6. Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)

    背景: 由于工作发生了一些变动,很长时间没有写博客了. 概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别).使用了Centos 7系统. 一.Centos7 ...

  7. kubeadm 安装Kubernetes 1.16.3 (CentOS7+IPVS+Calico)

    目录 ·  . 一.更新系统内核(全部节点) ·  . 二.基础环境设置(全部节点) ·  . 1.修改 Host ·  . 2.修改 Hostname ·  . 3.主机时间同步 ·  . 4.关闭 ...

  8. kubeadm安装kubernetes V1.11.1 集群

    之前测试了离线环境下使用二进制方法安装配置Kubernetes集群的方法,安装的过程中听说 kubeadm 安装配置集群更加方便,因此试着折腾了一下.安装过程中,也有一些坑,相对来说操作上要比二进制方 ...

  9. 使用kubeadm安装kubernetes v1.14.1

    使用kubeadm安装kubernetes v1.14.1 一.环境准备 操作系统:Centos 7.5 ​ ⼀ 一台或多台运⾏行行着下列列系统的机器器: ​ Ubuntu 16.04+ ​ Debi ...

随机推荐

  1. C# 获取文件下载的各种方法

    public class RemoteDownload { public static void DownLoad(string addressUrl,string localName) { //下载 ...

  2. windows下注册表的操作

    原博:https://blog.csdn.net/denghubu/article/details/5765921 1.       注册表简介 注册表是为Windows NT和Windows95中所 ...

  3. 震惊!外部类可以访问内部类private变量

    在讲Singleton时我举例时用过这样一段代码: public class SingletonDemo { private static class SingletonHolder{ private ...

  4. Jupyter-notebook 导出时不显示Input[]代码

    参考: https://stackoverflow.com/questions/34818723/export-notebook-to-pdf-without-code    1. 第一个方式是直接在 ...

  5. PAT1106:Lowest Price in Supply Chain

    1106. Lowest Price in Supply Chain (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CH ...

  6. [Mysql]——通过例子理解事务的4种隔离级别(转)

    SQL标准定义了4种隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的. 低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销. 一.事务隔离级别分类 第1级别:R ...

  7. Hibernate入门----配置文件

    一.Hibernate简介 hibernate是一个开源的,轻量级的,持久成ORM框架. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数 ...

  8. PAT1094:The Largest Generation

    1094. The Largest Generation (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...

  9. SSM-Spring-07:Spring基于注解的di注入

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 注解: 说起注解,哇哦,每个人都或多或少的用到过 像什么@Overried,@Test,@Param等等之前就 ...

  10. 使用Spring Boot Actuator、Jolokia和Grafana实现准实时监控

    由于最近在做监控方面的工作,因此也读了不少相关的经验分享.其中有这样一篇文章总结了一些基于Spring Boot的监控方案,因此翻译了一下,希望可以对大家有所帮助. 原文:Near real-time ...