K8S从入门到放弃系列-(1)环境初始化
一、系统规划
| 主机名 | 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"
}
##如果你不使用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'
[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" ##文件分发
[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'
[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)环境初始化的更多相关文章
- K8S 从入门到放弃系列文章目录(Kubernetes 1.14)
1)软件环境 软件 版本 系统 Centos7.5 Kubernetes 1.14.1 Docker 18.09 Calico 3.6 Etcd 3.3.12 2)部署过程简单概要 三台master节 ...
- K8S从入门到放弃系列-(16)Kubernetes集群Prometheus-operator监控部署
Prometheus Operator不同于Prometheus,Prometheus Operator是 CoreOS 开源的一套用于管理在 Kubernetes 集群上的 Prometheus 控 ...
- K8S从入门到放弃系列-(15)Kubernetes集群Ingress部署
Ingress是kubernetes集群对外提供服务的一种方式.ingress部署相对比较简单,官方把相关资源配置文件,都已经集合到一个yml文件中(mandatory.yaml),镜像地址也修改为q ...
- K8S从入门到放弃系列-(9)kubernetes集群之kubelet部署
摘要: Kubelet组件运行在Node节点上,维持运行中的Pods以及提供kuberntes运行时环境,主要完成以下使命: 1.监视分配给该Node节点的pods 2.挂载pod所需要的volume ...
- K8S从入门到放弃系列-(5)kubernetes集群之kube-apiserver部署
摘要: 1.kube-apiserver为是整个k8s集群中的数据总线和数据中心,提供了对集群的增删改查及watch等HTTP Rest接口 2.kube-apiserver是无状态的,虽然客户端如k ...
- K8S从入门到放弃系列-(3)部署etcd集群
摘要:etcd 是k8s集群最重要的组件,用来存储k8s的所有服务信息, etcd 挂了,集群就挂了,我们这里把etcd部署在master三台节点上做高可用,etcd集群采用raft算法选举Leade ...
- K8S从入门到放弃系列-(13)Kubernetes集群mertics-server部署
集群部署好后,如果我们想知道集群中每个节点及节点上的pod资源使用情况,命令行下可以直接使用kubectl top node/pod来查看资源使用情况,默认此命令不能正常使用,需要我们部署对应api资 ...
- K8S从入门到放弃系列-(14)Kubernetes集群Dashboard部署
Dashboard是k8s的web界面,用户可以用 Kubernetes Dashboard 部署容器化的应用.监控应用.并对集群本身进行管理,在 Kubernetes Dashboard 中可以查看 ...
- K8S从入门到放弃系列-(12)Kubernetes集群Coredns部署
摘要: 集群其他组件全部完成后我们应当部署集群 DNS 使 service 等能够正常解析,1.11版本coredns已经取代kube-dns成为集群默认dns. 1)下载yaml配置清单 [root ...
随机推荐
- NetworkX系列教程(10)-算法之三:关键路径问题
小书匠Graph图论 重头戏部分来了,写到这里我感觉得仔细认真点了,可能在NetworkX中,实现某些算法就一句话的事,但是这个算法是做什么的,用在什么地方,原理是怎么样的,不清除,所以,我决定先把图 ...
- 【概率论】5-6:正态分布(The Normal Distributions Part II)
title: [概率论]5-6:正态分布(The Normal Distributions Part II) categories: - Mathematic - Probability keywor ...
- SpatialHadoop的编译与运行
本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/spatialhadoop_compile_and_run Spa ...
- codeforces37C
CF37C Old Berland Language sol:直接暴力模拟下去,长度加了就补0,凑个数就+1,凑不好就puts(“no”) #include <bits/stdc++.h&g ...
- Yarn状态机
1 概述 为了增大并发性,Yarn采用事件驱动的并发模型,将各种处理逻辑抽象成事件和调度器,将事件的处理过程用状态机表示.什么是状态机? 如果一个对象,其构成为若干个状态,以及触发这些状态发生相互转移 ...
- GO语言反射
反射可以作为了解,不必深入! 反射介绍 Go语音提供了一种机制在运行时更新变量和检查它们的值.调用它们的方法和它们支持的内在操作,但是在编译时并不知道这些变量的具体类型.这种机制被称为反射.反射也可以 ...
- Flutter移动电商实战 --(51)购物车_Provide中添加商品
新加provide的cart.dart页面 引入三个文件.开始写provide类.provide需要用with 进行混入 从prefs里面获取到数据,判断有没有数据,如果有数据就返转正List< ...
- Pattern 和 Matcher
作用:应用这个 Pattern 和 Matcher 可以完成字符串获取功能 使用: // 获取模式器对象 Pattern p = Pattern.compile("a*b") ; ...
- C# 可扩展编程MEF学习
http://www.cnblogs.com/yunfeifei/p/3991330.html
- Qt编写自定义控件42-开关按钮
一.前言 从2010年进入互联网+智能手机时代以来,各种各样的APP大行其道,手机上面的APP有很多流行的元素,开关按钮个人非常喜欢,手机QQ.360卫士.金山毒霸等,都有很多开关控制一些操作,在Qt ...