一、系统规划

 主机名 IP   组件
 k8s-master01 10.10.0.18 etcd、kube-apiserver、kube-controller-manager、kube-scheduler
 k8s-master02 10.10.0.19 etcd、kube-apiserver、kube-controller-manager、kube-scheduler
 k8s-master03 10.10.0.20  etcd、kube-apiserver、kube-controller-manager、kube-scheduler
 k8s-node01 10.10.0.21  kubelet、kube-proxy、docker、dns、calico
 k8s-node02 10.10.0.22  kubelet、kube-proxy、docker、dns、calico

二、初始化系统基础环境

系统初始化时由于5台机器大部分操作都相同,我这里在配置过程中,在一台主机上进行配置文件创建,然后使用ansible进行分发,当然你也可以直接在对应主机上进行操作。

 1)设置主机名

在五台机器分别执行对应设置主机名的命令

[root@localhost ~]# hostnamectl set-hostname k8s-master01
[root@localhost ~]# hostnamectl set-hostname k8s-master02
[root@localhost ~]# hostnamectl set-hostname k8s-master03
[root@localhost ~]# hostnamectl set-hostname k8s-node01
[root@localhost ~]# hostnamectl set-hostname k8s-node02

 2)配置免密钥登陆

以k8s-master01为主机,对另外4台机器进行免密钥登陆 

[root@k8s-master01 ~]# ssh-keygen ##一路回车进行公钥私钥创建
[root@k8s-master01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.10.0.18
[root@k8s-master01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.10.0.19
[root@k8s-master01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.10.0.20
[root@k8s-master01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.10.0.21
[root@k8s-master01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.10.0.22

3、安装ansible(可以不安装,把生成文件或者命令在各节点执行即可)

这里只需在master01节点安装即可,后续一些操作均在此机器上执行,然后把生成的文件分发至对应节点

[root@k8s-master01 ~]# yum install -y epel-release
[root@k8s-master01 ~]# yum install ansible -y
[root@k8s-master01 ~]# ansible --version
ansible 2.7.10
......
......

定义主机组

[root@k8s-master01 ~]# vim /etc/ansible/hosts
[k8s-master] #master节点服务器组
10.10.0.18
10.10.0.19
10.10.0.20 [k8s-node] #node节点服务器组
10.10.0.21
10.10.0.22 [k8s-all] #k8s集群服务器组
10.10.0.18
10.10.0.19
10.10.0.20
10.10.0.21
10.10.0.22
[root@k8s-master01 ~]# ansible k8s-all -m ping #测试ansible是否正常
10.10.0.20 | SUCCESS => {
"changed": false,
"ping": "pong"
}
10.10.0.19 | SUCCESS => {
"changed": false,
"ping": "pong"
}
10.10.0.22 | SUCCESS => {
"changed": false,
"ping": "pong"
}
10.10.0.21 | SUCCESS => {
"changed": false,
"ping": "pong"
}
10.10.0.18 | SUCCESS => {
"changed": false,
"ping": "pong"
}
4、关闭防火墙、selinux(5台机器都执行,我这里使用ansible)
##如果你不使用ansible,在各个机器执行一下命令
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
[root@k8s-master01 ~]# ansible k8s-all -m shell -a 'systemctl stop firewalld'
[root@k8s-master01 ~]# ansible k8s-all -m shell -a 'systemctl disable firewalld'
[root@k8s-master01 ~]# ansible k8s-all -m shell -a 'setenforce 0'
[root@k8s-master01 ~]# ansible k8s-all -m replace -a 'path=/etc/sysconfig/selinux regexp="SELINUX=enforcing" replace=SELINUX=disabled'
[root@k8s-master01 ~]# ansible k8s-all -m replace -a 'path=/etc/selinux/config regexp="SELINUX=enforcing" replace=SELINUX=disabled'
5、配置host主机域名解析

[root@k8s-master01 ~]# vim /etc/hosts
10.10.0.18 k8s-master01
10.10.0.19 k8s-master02
10.10.0.20 k8s-master03
10.10.0.21 k8s-node01
10.10.0.22 k8s-node02
[root@k8s-master01 ~]# ansible k8s-all -m copy -a "src=/etc/hosts dest=/etc/hosts" ##文件分发
6、设置内核

[root@k8s-master01 ~]# vim /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward =
net.bridge.bridge-nf-call-ip6tables =
net.bridge.bridge-nf-call-iptables =
[root@k8s-master01 ~]# ansible k8s-all -m copy -a "src=/etc/sysctl.d/k8s.conf dest=/etc/sysctl.d/k8s.conf"
[root@k8s-master01 ~]# ansible k8s-all -m shell -a 'modprobe br_netfilter'
[root@k8s-master01 ~]# ansible k8s-all -m shell -a 'sysctl -p /etc/sysctl.d/k8s.conf'
7、时间同步

[root@k8s-master01 ~]# ansible k8s-all -m yum -a "name=ntpdate state=latest"
[root@k8s-master01 ~]# ansible k8s-all -m cron -a "name='k8s cluster crontab' minute=*/30 hour=* day=* month=* weekday=* job='ntpdate time7.aliyun.com >/dev/null 2>&1'"
[root@k8s-master01 ~]# ansible k8s-all -m shell -a "ntpdate time7.aliyun.com"

8、创建集群目录

在集群组件部署之前,先进行对应的目录创建

## 所有节点所需目录
[root@k8s-master01 ~]# ansible k8s-all -m file -a 'path=/etc/kubernetes/ssl state=directory'
[root@k8s-master01 ~]# ansible k8s-all -m file -a 'path=/etc/kubernetes/config state=directory'
## k8s-master01节点所需目录
[root@k8s-master01 ~]# mkdir /opt/k8s/{certs,cfg,unit} -p

K8S从入门到放弃系列-(1)环境初始化的更多相关文章

  1. K8S 从入门到放弃系列文章目录(Kubernetes 1.14)

    1)软件环境 软件 版本 系统 Centos7.5 Kubernetes 1.14.1 Docker 18.09 Calico 3.6 Etcd 3.3.12 2)部署过程简单概要 三台master节 ...

  2. K8S从入门到放弃系列-(16)Kubernetes集群Prometheus-operator监控部署

    Prometheus Operator不同于Prometheus,Prometheus Operator是 CoreOS 开源的一套用于管理在 Kubernetes 集群上的 Prometheus 控 ...

  3. K8S从入门到放弃系列-(15)Kubernetes集群Ingress部署

    Ingress是kubernetes集群对外提供服务的一种方式.ingress部署相对比较简单,官方把相关资源配置文件,都已经集合到一个yml文件中(mandatory.yaml),镜像地址也修改为q ...

  4. K8S从入门到放弃系列-(9)kubernetes集群之kubelet部署

    摘要: Kubelet组件运行在Node节点上,维持运行中的Pods以及提供kuberntes运行时环境,主要完成以下使命: 1.监视分配给该Node节点的pods 2.挂载pod所需要的volume ...

  5. K8S从入门到放弃系列-(5)kubernetes集群之kube-apiserver部署

    摘要: 1.kube-apiserver为是整个k8s集群中的数据总线和数据中心,提供了对集群的增删改查及watch等HTTP Rest接口 2.kube-apiserver是无状态的,虽然客户端如k ...

  6. K8S从入门到放弃系列-(3)部署etcd集群

    摘要:etcd 是k8s集群最重要的组件,用来存储k8s的所有服务信息, etcd 挂了,集群就挂了,我们这里把etcd部署在master三台节点上做高可用,etcd集群采用raft算法选举Leade ...

  7. K8S从入门到放弃系列-(13)Kubernetes集群mertics-server部署

    集群部署好后,如果我们想知道集群中每个节点及节点上的pod资源使用情况,命令行下可以直接使用kubectl top node/pod来查看资源使用情况,默认此命令不能正常使用,需要我们部署对应api资 ...

  8. K8S从入门到放弃系列-(14)Kubernetes集群Dashboard部署

    Dashboard是k8s的web界面,用户可以用 Kubernetes Dashboard 部署容器化的应用.监控应用.并对集群本身进行管理,在 Kubernetes Dashboard 中可以查看 ...

  9. K8S从入门到放弃系列-(12)Kubernetes集群Coredns部署

    摘要: 集群其他组件全部完成后我们应当部署集群 DNS 使 service 等能够正常解析,1.11版本coredns已经取代kube-dns成为集群默认dns. 1)下载yaml配置清单 [root ...

随机推荐

  1. ubuntu ukylin wineqq 登录时提示:您的号码暂时不能使用低版本的qq

    ubuntu ukylin wineqq 登录时提示:您的号码暂时不能使用低版本的qq,而有的qq号登录没有问题. 优麒麟官网上下载的qqwine安装包,解压后安装三个deb包. 郁闷了一下午,都想装 ...

  2. P2320 [HNOI2006]鬼谷子的钱袋——进制(没事就别看这个了)

    就是n可以被1到n/2的所有数表示出来: 我一开始写了个把二进制数里的1拿出来,但是WA了两个点: 分治? 好多人说数据有问题,我也不知道,也不想知道: %:include<cstdio> ...

  3. 微信H5的video标签解决方案

    https://github.com/cczw2010/weixin-video 偶尔发现了可以h5化的一种更适合的方式,一个有趣的属性 h5-page 已经更新

  4. WebSocket浅谈

    WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议. 在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速 ...

  5. Linux下基于Xampp的TestLink的安装部署

    由于项目需要,故需要搭建Testlink,且出于稳定,考虑在linux环境部署,当然windows系统也是可以的. 系统:64位操作系统 linux:centos6.8 testlink:1.9.14 ...

  6. 搭建docusaurus博客

    搭建docusaurus博客: docusaurus是facebook的开源的用于简化构建,部署,和维护的博客网站. 特点: 快速启动 支持本地化 页面可自定义 安装要求: Node >= 8. ...

  7. Linux fdisk命令创建扩展分区过程

    [root@localhost ~]# fdisk /dev/sdb …省略部分输出… Command (m for help): n #新建立分区 Command action e extended ...

  8. 【Oracle/Maven】Maven导入oracle11g 自携带jdbc驱动包ojdbc6.jar到本地库

    Maven需要下载解压并添加到classpath,如果不明可以参考https://www.cnblogs.com/xiandedanteng/p/11403480.html 然后在命令行窗口执行: m ...

  9. spring (反射+代理+DI+AOP)

    spring  https://baijiahao.baidu.com/s?id=1620606848227713760&wfr=spider&for=pc 反射 https://bl ...

  10. phpstorm设置最多标签数

    在settings=>Editor=>General=>Editor Tabs的Tab limit下可以设置当前窗口能够打开的最多标签数目,默认是10,超过设定值时,会自动关闭前面的 ...