kubeadm安装k8s集群(一)

 

1.查看系统版本要求

  • Ubuntu 16.04+
  • Debian 9+
  • CentOS 7
  • Red Hat Enterprise Linux (RHEL) 7
  • Fedora 25+
  • HypriotOS v1.0.1+
  • Container Linux (测试 1800.6.0 版本)

要求:cpu>2核,内存>2G

生产上禁用交换分区(测试环境内存不够,可以选择不关闭交换分区)

如果iptables使用了nftables,应切回旧版

 

2.检查端口

控制平面

协议

方向

端口范围

作用

使用者

TCP

入站

6443*

Kubernetes API 服务器

所有组件

TCP

入站

2379-2380

etcd server client API

kube-apiserver, etcd

TCP

入站

10250

Kubelet API

kubelet 自身、控制平面组件

TCP

入站

10251

kube-scheduler

kube-scheduler 自身

TCP

入站

10252

kube-controller-manager

kube-controller-manager 自身

 

工作节点

协议

方向

端口范围

作用

使用者

TCP

入站

10250

Kubelet API

kubelet 自身、控制平面组件

TCP

入站

30000-32767

(可修改)

NodePort 服务**

所有组件

端口过多(可选择直接关闭防火墙)

 

3.pod 网络插件

开启特定端口

常用CNI(container network 插件)

  • flannel   ---不支持网络策略
  • calico    ---支持地址分配和网络策略
  • canel     --- flannel+calico
  • kube-router...

(选择上述的一个即可)

 

4.重置iptables规则

iptables -P INPUT ACCEPT

iptables -F

iptables -L 查看

 

5.安装runtime(容器)

检查域套接字

检查路径

运行时

域套接字

Docker

/var/run/docker.sock

containerd

/run/containerd/containerd.sock

CRI-O

/var/run/crio/crio.sock

如同时检查到docker和containerd,则优先使用docker

docker 18.09 附带了 containerd 并且两者都是可以检测到的

 

6.安装docker(如安装请忽略)

a.配置docker的yum仓库(这里使用阿里云仓库)

yum -y install yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 

b.安装docker

yum -y install docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io

 

c.修改docker cgroup driver为systemd(驱动程序)

vim /etc/docker/daemon.json #如果不存在则创建 {

"exec-opts":["native.cgroupdriver=systemd"]

}

 

d.启动docker

systemctl daemon-reload

systemctl restart docker #启动docker systemctl enable docker (开机启动)

 

e.docker info |grep Cgroup

Cgroup Driver: systemd

 

7.设置主机名

hostnamectl set-hostname kube-master

vim /etc/hosts

192.168.9.104 k8s-master1 
192.168.9.105 k8s-node1 
192.168.9.100 k8s-node2

8.配置免密

ssh-keygen -t rsa (生成公钥)

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.9.104 (拷贝公钥)

 

9.同步时间

ntpdate 0.rhel.pool.ntp.org

 

10.将 SELinux 设置为 permissive 模式(禁用)

SELinux作用:限制进程访问资源

getenforce:获取当前状态

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

目的:允许容器访问主机文件系统所必须的

 

11.设置内核参数net.bridge.bridge-nf-call-iptables

将桥接的IPv4流量传递到iptables的链

net.bridge.bridge-nf-call-iptables=0(iptables不对bridge的数据进行处理)

vim /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

sysctl --system

lsmod | grep br_netfilter

 

12.配置kubenetes的yum仓库(阿里yum源)

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

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

yum makecache (yum源生效)

 

13.安装kubelat、kubectl、kubeadm

yum -y install kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 (kubectl可选)

rpm -aq kubelet kubectl kubeadm (查看安装软件)

systemctl enable kubelet (kubelet开机启动)

 

14:初始化master1

kubeadm init --kubernetes-version=v1.18.0 --control-plane-endpoint "192.168.9.104:6443" --upload-certs --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap

输出信息:

kubeadm join 192.168.9.104:6443 --token zihse9.ctxfyuujhf1vbcp3 \

--discovery-token-ca-cert-hash sha256:1c997860554870c7d91ec2defcddfd634d41d35b9035544528da4b955f5d6ddd

(保存下来)

 

15.加入node节点

在node节点上运行

kubeadm join 192.168.9.104:6443 --token zihse9.ctxfyuujhf1vbcp3 \

--discovery-token-ca-cert-hash sha256:1c997860554870c7d91ec2defcddfd634d41d35b9035544528da4b955f5d6ddd

 --ignore-preflight-errors=Swap

 

16.使用kubectl工具

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf  $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

17.部署pod网络插件

此时master处于notredy,需要部署网络插件

此处使用cni的flannel

方法一 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml kubectl get pods -n kube-system |grep flannel #验证flannel网络插件是否部署成功(Running即为成功)

方法二

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml sed -i 's#quay.io#quay-mirror.qiniu.com#g' kube-flannel.yml #替换仓库地址 kubectl apply -f kube-flannel.yml

20.查看集群客户端和服务端程序版本信息

kubectl version --short=true

 

21.查看集群信息

kubectl cluster-info

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值