k8s专栏--k8s环境搭建(一)

前言:

参考k8s教程由浅入深

一.搭建k8s平台规划

  • 平台类型: 单master集群  多master集群
  • 单master集群:依赖于master结点,master结点挂了,集群不可用
  • 多master集群:高可用,master结点多了一个负载均衡器

二、搭建方式

1)kubeadm

流程:

  1. kubeadm init
  2. kubeadm join

优点:方便、快速

2)二进制包

流程:从github上下载二进制包,手动部署每个组件

优点:方便了解k8s工作原理,利于后期维护

三、使用kubeadm安装k8s

1)系统初始化

关闭防火墙、selinux、swap原因 https://www.zhihu.com/question/374752553

a.关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

b.关闭selinux

selinux的是linux系统中的一个内核模块,安全子系统。作用:减少服务进程中可访问的资源

sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久 
setenforce 0 # 临时

c.关闭swap

swapoff -a # 临时
vim /etc/fstab # 永久

d.设置主机名

在master/host主机中设置hostname

hostnamectl set-hostname <hostname>

e.在master结点中设置hosts

cat >> /etc/hosts << EOF 
<master ip> k8s-master 
<node1 ip> k8s-node1 
<node2 ip> k8s-node2 
EOF

f.将桥接的ipv4流量传递到iptables的链

iptables具有封包过滤、封包重定向和网络地址转换等功能

iptables详解见 https://www.cnblogs.com/metoy/p/4320813.html

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

g.同步时间

yum install ntpdate -y 
ntpdate time.windows.com

2)安装docker/kubeadm/kubelet

a.docker安装

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo 
yum -y install docker-ce-18.06.1.ce-3.el7 
systemctl enable docker && systemctl start docker  
docker --version

b.添加镜像源

cat > /etc/docker/daemon.json << EOF 
{ 
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"] 
}
EOF

c.设置k8s yum源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

d.安装kubeadm/kubelet/kubectl

yum install -y kubelet kubeadm kubectl
systemctl enable kubelet

3)部署Kubernetes

a.在master结点上运行

kubeadm init --apiserver-advertise-address=0.0.0.0 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16

此步骤中执行的事情:

  • Preflight Checks:检查内核、Cgroups 模块是否可用、hostname格式、端口是否被占用等等
  • 生成 Kubernetes 对外提供服务所需的各种证书和对应的目录 (证书文件在/etc/kubernetes/pki目录下,最主要的证书文件是 ca.crt 和对应的私钥 ca.key) 
  • 为其他组件生成访问 kube-apiserver 所需的配置文件(/etc/kubernetes/xxx.conf)
  • kubeadm 会为 Master 组件生成 Pod 配置文件,kube-apiserver、kube-controller-manager、kube-scheduler以pod的形式被部署起来
  • Static Pod:将需要部署的pod的yaml

init成功后,运行

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

b.在node结点运行

kubeadm join <ip:port> --token <token>     --discovery-token-ca-cert-hash <hash>

若在云服务器上运行,node结点join时可能需要访问master结点的内网ip,此时可用iptable net表转发发送至master结点内网的ip地址至公网ip地址

iptables -t nat -A OUTPUT -d <master结点内网ip> -j DNAT --to-destination <master结点公网ip>

4)部署CNI网络插件

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

此时,可以看到k8s集群状态有notready转变为ready

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值