IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 利用国内源安装K8S练习集群 -> 正文阅读

[系统运维]利用国内源安装K8S练习集群

本实验记录安装Kubernetes集群的经过,目的是在个人电脑上安装Kubernetes集群,以一个Master和两个Worker节点为例。

实验环境

项目内容备注
虚拟平台Workstation 16 Pro17966106
OSCentOS 72009
Docker20.10.8docker-ce-stable
kubeadm1.21.3
kubelet1.21.3
kubectl1.21.3
coredns1.8.0k8s.gcr.io/coredns/coredns
pause3.4.1
etcd3.4.13

安装步骤

安装虚拟机

在Workstation环境使用虚拟机,采用NAT模式,
在这里插入图片描述
查看或修改虚拟机网络情况,编辑–>虚拟网络编辑器
在这里插入图片描述
我们配置使用192.168.21.0/24子网,打开NAT设置可以看到网关为192.168.21.2
在这里插入图片描述
以上信息在安装虚拟机是用于手动配置地址

主机名角色IP地址
mater-01Master Node192.168.21.168
worker-01Worker Node192.168.21.11
worker-02Worker Node192.168.21.12

安装docker

依然选用dockers作为kubernetes的runtime,本步骤三台虚拟都需要

  1. Update Docker Package Database

yum check-update

  1. Update yum

yum update

  1. 如果没有执行第二步,需要安装依赖

yum install -y yum-utils device-mapper-persistent-data lvm2

  1. Add the Docker Repository to CentOS(国内)
    这里使用阿里云地址:
yum-config-manager  --add-repo  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 更新yum软件包索引

yum makecache fast

  1. Install the selected Docker version with the command:
yum install docker-ce-<VERSION STRING>
systemctl enable docker
systemctl start docker
  1. 修改daemon.json
    kubernetes文件驱动默认由systemd, 而我们安装的docker使用的文件驱动是cgroupfs, 造成不一致, 会导致在初始化Kubernetes时镜像无法启动。

可以通过docker info查看。

修改或创建/etc/docker/daemon.json,加入下面的内容:

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

重启docker:

systemctl restart docker
systemctl status docker

要是已经做了kubeadm init不成功,修改好cgroupdriver后,需要

[root@master01 ~]# rm -rf /etc/kubernetes /var/lib/kubelet

再次初始化(先kubeadm reset)

安装Kubeadm/kubelet和Kubectl

本步骤适合所有Node

环境准备

  1. 配置Kubernetes 国内仓库
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 list kubelet kubeadm kubectl --showduplicates|sort -r

[root@master01 ~]# yum list kubelet kubeadm kubectl  --showduplicates|sort -r
……
 From       : https://packages.cloud.google.com/yum/doc/yum-key.gpg
 * updates: centos-distro.cavecreek.net
Retrieving key from https://packages.cloud.google.com/yum/doc/yum-key.gpg
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror, langpacks
……
kubelet.x86_64                       1.8.3-0                          kubernetes
kubelet.x86_64                       1.8.2-1                          kubernetes
kubelet.x86_64                       1.8.2-0                          kubernetes
kubelet.x86_64                       1.8.15-0                         kubernetes
kubelet.x86_64                       1.8.14-0                         kubernetes
kubelet.x86_64                       1.8.13-0                         kubernetes
kubelet.x86_64                       1.8.12-0                         kubernetes
kubelet.x86_64                       1.8.1-1                          kubernetes
kubelet.x86_64                       1.8.11-0                         kubernetes
kubelet.x86_64                       1.8.1-0                          kubernetes
kubelet.x86_64                       1.8.10-0                         kubernetes
kubelet.x86_64                       1.8.0-1                          kubernetes
kubelet.x86_64                       1.8.0-0                          kubernetes
……
  1. Configure Firewall

On the Master Node enter:

sudo firewall-cmd --permanent --add-port=6443/tcp
sudo firewall-cmd --permanent --add-port=2379-2380/tcp
sudo firewall-cmd --permanent --add-port=10250/tcp
sudo firewall-cmd --permanent --add-port=10251/tcp
sudo firewall-cmd --permanent --add-port=10252/tcp
sudo firewall-cmd --permanent --add-port=10255/tcp
sudo firewall-cmd --reload

On the Worker Node enter:

sudo firewall-cmd --permanent --add-port=10251/tcp
sudo firewall-cmd --permanent --add-port=10255/tcp
sudo firewall-cmd --reload
  1. Update Iptables Settings
    Set the net.bridge.bridge-nf-call-iptables to ‘1’ in your sysctl config file.
    This ensures that packets are properly processed by IP tables during filtering and port forwarding.
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 查看结果
  1. Disable SELinux
    The containers need to access the host filesystem. SELinux needs to be set to permissive or disabled mode, which effectively disables its security functions.
    Use following commands to disable SELinux:
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
  1. Disable SWAP
    Lastly, we need to disable SWAP to enable the kubelet to work properly:
sudo sed -i '/swap/d' /etc/fstab
sudo swapoff -a

下载安装所需images

本步骤适合所有Node

  1. 查看所需images
[root@master-01 ~]# kubeadm config images list
I0810 11:52:33.618380   16253 version.go:254] remote version is much newer: v1.22.0; falling back to: stable-1.21
k8s.gcr.io/kube-apiserver:v1.21.3
k8s.gcr.io/kube-controller-manager:v1.21.3
k8s.gcr.io/kube-scheduler:v1.21.3
k8s.gcr.io/kube-proxy:v1.21.3
k8s.gcr.io/pause:3.4.1
k8s.gcr.io/etcd:3.4.13-0
k8s.gcr.io/coredns/coredns:v1.8.0
  1. 使用脚本下载
#!/bin/bash
images=(
    kube-apiserver:v1.21.3
    kube-controller-manager:v1.21.3
    kube-scheduler:v1.21.3
    kube-proxy:v1.21.3
    pause:3.4.1
    etcd:3.4.13-0
    coredns:1.8.0
)

for imageName in ${images[@]} ; do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done

需要注意的是k8s.gcr.io/coredns/coredns:v1.8.0的名字和下载后tag不一致:k8s.gcr.io/coredns:v1.8.0,需要重新tag

初始化Kubernets

  1. kubeadm init
kubeadm init --pod-network-cidr=10.211.0.0/16 --service-cidr=10.96.0.0/16 --kubernetes-version=1.21.3
  1. Manage Cluster as Regular User
    To start using the cluster you need to run it as a regular user by typing:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
  1. Join Worker Node to Cluster
    As indicated in Step 1, use the kubeadm join command on each worker node to connect it to the cluster.
kubeadm join --discovery-token cfgrty.1234567890jyrfgd --discovery-token-ca-cert-hash sha256:1234..cdef 1.2.3.4:6443

Replace the codes with the ones from master server. Repeat this action for each worker node on cluster.

CNI

Use Antrea CNI

kubectl apply -f https://raw.githubusercontent.com/antrea-io/antrea/main/build/yamls/antrea.yml

安装好antrea后,可以看到:

[root@master-01 ~]# kubectl get node
NAME        STATUS   ROLES                  AGE    VERSION
master-01   Ready    control-plane,master   3d9h   v1.21.3
worker-01   Ready    <none>                 3d8h   v1.21.3
worker-02   Ready    <none>                 3d8h   v1.21.3

Node —>Ready

以上

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 01:32:03  更:2021-08-17 01:32:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 20:02:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计