# 第三模块 安装Kubernetes

# 安装选项

# 基础软件安装

  • 虚拟机 VMware Fusion 22H2 for Mac
  • CentOS Minimal 版
    • http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso
  • 修改CentOS⽹络配置、SSH登录
# 编辑配置
vi /etc/sysconfig/network-scripts/ifcfg-ens33
ONBOOT=no 改为yes

# 重启服务
systemctl restart network

# 查看ip地址
ip addr

# 设置iptables
iptables -P FORWARD ACCEPT

# ssh登录
ssh root@`ip`

⼩技巧:VMware Fusion安装CentOS时可以做好克隆和快照,⽤SSH登录时可以复制粘贴

# 节点规划

部署k8s集群分2类角色:

  • master,虚拟机可配置 4核 4096m
  • slave,虚拟机可配置 1核 1024m
主机名 节点IP 角色 部署组件
k8s-master 192.168.75.129 master etcd, kube-apiserver, kube-controller-manager, kubectl, kubeadm, kubelet, kube-proxy,calico
k8s-slave1 192.168.75.130 slave kubectl, kubelet, kube-proxy, calico
k8s-slave2 xx slave kubectl, kubelet, kube-proxy, calico

# 安装前准备

操作节点:所有节点(k8s-master,k8s-slave)均需执行

  • 修改hostname
# 在master节点
hostnamectl set-hostname k8s-master

# 在slave-1节点
hostnamectl set-hostname k8s-slave1

# 在slave-3节点
hostnamectl set-hostname k8s-slave3
  • 设置hosts解析
cat >>/etc/hosts<<EOF
192.168.75.129 k8s-master
192.168.75.130 k8s-slave1
EOF

# 调整系统配置

操作节点:所有节点(k8s-master,k8s-slave)均需执行

  • 设置iptables
iptables -P FORWARD ACCEPT
  • 关闭swap
swapoff -a 
# 防止开机自动挂载 swap 分区 
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
  • 关闭selinux和防火墙
sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config 
setenforce 0 
systemctl disable firewalld && systemctl stop firewalld
  • 修改内核参数
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
vm.max_map_count=262144
EOF
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf
  • 设置yum源(x86_64)
curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum clean all && yum makecache

# 安装Docker

操作节点:所有节点(k8s-master,k8s-slave)均需执行

# 安装最新版
yum install docker-ce-20.10.12 -y

# 配置docker加速、驱动
mkdir -p /etc/docker
cat <<EOF > /etc/docker/daemon.json
{
  "insecure-registries": [    
    "192.168.75.129:5000" 
  ],                          
  "registry-mirrors" : [
    "https://8xpk5wnt.mirror.aliyuncs.com"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

# 启动docker
systemctl enable docker && systemctl start docker

# 安装集群

# 安装 kubeadm, kubelet 和 kubectl

操作节点:所有节点(k8s-master,k8s-slave)均需执行

# 安装 kubeadm, kubelet 和 kubectl
yum install -y kubelet-1.21.5 kubeadm-1.21.5 kubectl-1.21.5 --disableexcludes=kubernetes

# 查看kubeadm 版本
kubeadm version

# 设置kubelet开机启动
systemctl enable kubelet 

# 初始化配置文件

操作节点: 只在master节点(k8s-master)执行

kubeadm config print init-defaults > kubeadm.yaml
vim kubeadm.yaml    # 可以按照以下图示需改对应配置

# 提前下载镜像

操作节点: 只在master节点(k8s-master)执行

# 查看需要使用的镜像列表,若无问题,将得到如下列表
kubeadm config images list --config kubeadm.yaml

# 提前下载镜像到本地
kubeadm config images pull --config kubeadm.yaml

# 初始化mater节点

操作节点: 只在master节点(k8s-master)执行

kubeadm init --config kubeadm.yaml

根据执行成功后消息提醒执行相应操作

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

此时使用 kubectl get nodes查看节点应该处于notReady状态,因为还未配置网络插件 若执行初始化过程中出错,根据错误信息调整后,执行kubeadm reset后再次执行init操作即可

添加slave节点到集群中

# master 节点
kubeadm token create --print-join-command

# 对应slave节点执行即可
kubeadm join 192.168.75.129:6443 --token abcdef.0123456789abcdef \
	--discovery-token-ca-cert-hash sha256:252f9c3efada253fcdefe22fa1289d31adaeba2a6f7f790f6c37e9d102e3fa28

# 设置kubectl自动补全

操作节点: 只在master节点(k8s-master)执行

yum install bash-completion -y
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

# 设置master节点是否可调度(可选)

操作节点: 只在master节点(k8s-master)执行 默认部署成功后,master节点无法调度业务pod,如需设置master节点也可以参与pod的调度,需执行:

kubectl taint node k8s-master node-role.kubernetes.io/master:NoSchedule-

# 网络插件

操作节点: 只在master节点(k8s-master)执行

# 下载
wget https://docs.projectcalico.org/v3.20/manifests/calico.yaml --no-check-certificate
# 执行
kubectl apply -f calico.yaml

# 验证集群

操作节点: 只在master节点(k8s-master)执行

 # 观察集群节点是否全部Ready
 kubectl get nodes  
 
 # 创建测试nginx服务
 kubectl run  test-nginx --image=nginx:alpine
 
 # 查看pod是否创建成功,并访问pod ip测试是否可用
 kubectl get po -o wide

# 集群清理

如果集群安装过程中遇到了其他问题,使用下面的命令来进行重置

kubeadm reset
ifconfig cni0 down && ip link delete cni0
ifconfig flannel.1 down && ip link delete flannel.1
rm -rf /run/flannel/subnet.env
rm -rf /var/lib/cni/
mv /etc/kubernetes/ /tmp
mv /var/lib/etcd /tmp
mv ~/.kube /tmp
iptables -F
iptables -t nat -F
ipvsadm -C
ip link del kube-ipvs0
ip link del dummy0

# 安装k8s遇到的问题

kubeadm初始化失败
- 内核和内存太少,更改为 4和4096

kubeadm jon 卡住
- https://blog.csdn.net/qq_46595591/article/details/107584320

docker cgroupfs systemd
- https://blog.csdn.net/hackermmm/article/details/110239684


K8S==policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
- https://blog.csdn.net/hebian1994/article/details/121936540

# Mac M芯片 汇总

  • 设置yum源(aarch64)
curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-aarch64
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
yum clean all && yum makecache
上次更新: 9/8/2022, 3:47:47 PM