Kubernetes部署

主机环境预设

安装要求

3台以上机器,操作系统 CentOS7.7 以上64 位系统
硬件:内存2GB+,CPU2c+,硬盘30GB+
集群中机器之间网络互通
可以访问外网,拉去镜像

环境说明

设定时钟同步-各节点时间同步
systemctl status chronyd
systemctl restart chronyd

关闭节点firewalld和iptables;
systemctl stop firewalld
systemctl disable firewalld
systemctl stop iptables
systemctl disable iptables


各节点关闭SELinux;
setenforce 0
vim /etc/selinux/config
SELINUX=disabled


各节点关闭所有swap
free -m 
swapoff  -a  #临时,重启后失效 
vim /etc/fstab #禁用swap挂载


修改hostname添加hosts主机名
vim /etc/hsots
IP k8s-master
IP k8s-node01
IP k8s-node02

将桥接的IPv4流量传递到iptables的链
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

升级系统内核到最新版本

安装perl
yum -y install perl

查看当前内核版本
uname -a

安装epel源
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum -y install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

查看内核版本并安装最新版本
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
yum --disablerepo='*' --enablerepo=elrepo-kernel install kernel-lt -y

查看系统grub内核启动列表
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

指定以新安装的编号0的内核版本为默认启动内核
grub2-set-default 0

重启
reboot
uname -a

安装docker/kubeadm/kubelet

安装docker

安装docker依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

阿里源安装
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker-ce
yum -y install docker-ce #docker的版本确保版本在18版本以上

启动docker
systemctl start docker
systemctl enable docker

修改docker配置
vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://jsqr0rph.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  }
}
systemctl reload docker

添加k8s阿里云yum源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[k8s]
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

安装 kubeadm/kubectl/kubelet

# 查看包版本列表
yum list kubeadm --showduplicate

# 安装
yum -y install kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0

# 启动
systemctl start kubelet
systemctl enable kubelet

部署master

kubeadm init --apiserver-advertise-address=192.168.2.40 --image-repository registry.aliyuncs.com/google_containers   --kubernetes-version v1.20.0   --service-cidr=10.140.0.0/16 --pod-network-cidr=10.240.0.0/16

// --apiserver-advertise-address 本机IP
// pod-network-cidr是pod网络
// service-cidr是svc网络

mkdir -p $HOME/.kube

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

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

部署node节点

# 部署nodo节点(master初始化后将下面在node上执行)
kubeadm join 192.168.2.40:6443 --token tik6j3.0ez5igg8opgu1kpd \
    --discovery-token-ca-cert-hash sha256:a2232fd083692bbe7df88f71e97b089a7edf62429e33c9a2220bdec58f5591eb 
kubectl get nodes  //查看集群

安装网络插件

安装flannel插件(轻量级用于快速搭建使用,初学推荐)

# 下载yaml文件
wget http://download.stisd.cn/k8s/kube-flannel.yml

# 修改yml文件中pod网络地址
sed -i 's/10.244.0.0/10.240.0.0/' kube-flannel.yml

# 安装插件
kubectl apply -f kube-flannel.yml

kubectl get pods -n kube-system

安装calico插件(用于复杂网络环境)

# 下载yaml文件
wget http://download.stisd.cn/k8s/calico-3.9.2.yaml

# 修改配置文件的网段为上面init pod-network-cidr的网段地址(必须正确否则会导致集群网络问题)
sed -i 's/192.168.0.0/10.240.0.0/g' calico-3.9.2.yaml

# 修改完安装插件,执行
kubectl apply -f calico.yaml

kubectl get pod --all-namespaces -o wide

3、检查状态
kubectl get nodes
kubectl get pod -n kube-system

增加tab功能键

yum -y install bash-completion
echo "source /usr/share/bash-completion/bash_completion" >>  ~/.bashrc
echo 'source <(kubectl completion bash)' >>~/.bashrc
source ~/.bashrc
type _init_completion      #再次检查是否有正常内容输出