美文网首页
kubernetes + docker

kubernetes + docker

作者: leblanc_i | 来源:发表于2023-09-08 17:14 被阅读0次

一、部署 docker + kubernetes

在每个节点(masternode节点)上安装Docker、kubelet、kubeadm和kubectl

1、docker

# 安装 yum-utils 软件包,从而使系统能够使用一系列增强的 YUM 包管理工具来更好地管理软件包、清理缓存
yum install -y yum-utils

# 向系统中添加 Docker 社区版的官方软件仓库配置,以便使用 YUM 包管理工具从 Docker 官方源下载和安装 Docker 软件
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 通过 YUM 包管理工具自动安装 Docker 社区版及其相关组件
yum install docker-ce docker-ce-cli containerd.io -y

# 设置 Docker 开机自启
systemctl enable docker

# 配置/etc/containerd/config.toml,配置 Containerd 容器运行时的各种参数
--------------------------------------------------------------------
#disabled_plugins = ["cri"]

[grpc]
  address = "/run/containerd/containerd.sock"
  uid = 0
  gid = 0

[debug]
  address = "/run/containerd/debug.sock"
  uid = 0
  gid = 0
  level = "info"
--------------------------------------------------------------------

# 启动 Docker 服务
systemctl start docker
辅助命令
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

# 查看防火墙状态
sudo firewall-cmd --state

2、kubernetes

# 创建一个 Kubernetes YUM 仓库配置文件,将阿里云的 Kubernetes 软件仓库添加到系统中。这样,你就可以使用 YUM 包管理工具从该仓库中下载和安装 Kubernetes 相关的软件包。通过运行这个命令,你可以为系统启用 Kubernetes 的 YUM 仓库,方便安装、升级和管理 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=1
repo_gpgcheck=1
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

# 使用 YUM 包管理工具自动安装 Kubernetes 相关组件的指定版本(1.19.3)在系统中,以便准备好在你的系统上部署和管理 Kubernetes 集群
# kubeadm:用于初始化和管理 Kubernetes 集群的命令行工具。
# kubectl:用于与 Kubernetes 集群进行交互的命令行工具。
# kubelet:Kubernetes 集群中每个节点上运行的系统进程,负责管理容器的生命周期。
yum install -y kubeadm-1.19.3-0 kubectl-1.19.3-0  kubelet-1.19.3-0

# 设置 kubelet 开机自启
# kubelet 是 Kubernetes 集群中每个节点上运行的系统进程,负责管理容器的生命周期,因此需要在开机时自动启动,以确保 Kubernetes 集群的正常运行。
# kubeadm 和 kubectl 不需要在开机时自动启动。它们是命令行工具,用于在初始化 Kubernetes 集群、管理集群配置和与集群进行交互。这些工具通常由管理员手动运行,不需要在每次开机时自动启动。
systemctl enable kubelet

# 禁用swap(编辑 /etc/fstab 文件,找到包含 swap 的行(如果有的话),并在行首添加 # 来注释掉该行)
# swap 是指计算机系统中用于虚拟内存管理的一种技术,通常在物理内存(RAM)不足时,将一部分数据暂时交换到硬盘上的一块称为 swap 分区或 swap 文件的存储空间中,以释放物理内存供其他程序使用。
# 在容器化环境中,特别是使用 Kubernetes 管理容器的集群中,禁用 swap 是推荐的做法。Kubernetes 和容器通常需要严格的内存管理,而 swap 的使用可能会导致不可预测的行为。因此,禁用 swap 可以确保容器在物理内存不足时更可靠地受限而不会频繁地使用 swap。
swapoff -a

# 在 Kubernetes 集群中初始化(只在 Master 节点执行)一个新的 Kubernetes 控制平面
# --apiserver-advertise-address=10.0.0.4:这个参数用于指定 Kubernetes API 服务器(API Server)公开的 IP 地址。这里指定为 10.0.0.4,表示 API Server 将会使用这个 IP 地址进行公开。
kubeadm init --apiserver-advertise-address=10.0.0.4 --kubernetes-version v1.19.3 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16

# 初始化集群后,按照输出信息中的指示,运行以下命令来设置Kubernetes配置文件:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 将每个节点(在 Node 节点执行)加入到 Kubernetes 集群中(kubeadm init 执行之后会输入,直接复制即可)
kubeadm join 192.168.3.30:6443 --token i8q481.asaukyof1abw5j8n     --discovery-token-ca-cert-hash sha256:b4af288c70e6c7cb9054271696c9ee41123d4da48cce5b2feaabba43ba0f481f
# 在 Node 节点执行
iptables-restore < /root/iptablesnode.v4

# 在 Mster 节点执行
iptables-restore < /root/iptablesmaster.v4

# Master节点执行,在 Kubernetes 集群中安装 Tigera 和 Calico 组件,用于网络和安全策略的管理。
kubectl create -f tigera-operator.yaml
kubectl apply -f calico-typha.yaml

# 在 Master 节点中查看 Node 节点是否已经加入集群
kubectl get nodes

# 在 Kubernetes 集群中部署 Kubernetes Dashboard,这是一个用于管理和监控集群的图形用户界面
kubectl create -f recommended.yaml

# 给 kubernetes-dashboard 赋值权限
kubectl create clusterrolebinding serviceaccount-cluster-admin --clusterrole=cluster-admin --user=system:serviceaccount:default:default

# 获取 kubernetes-dashboard 登录token,有过期时间,每次登录都需要重新获取
kubectl describe secret $(kubectl get secret -n kubernetes-dashboard | grep dashboard-admin | awk '{print $1}')
修改node节点主机名
# 获取集群所有节点信息
[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE    VERSION
master   Ready    master   3d1h   v1.19.3
node1    Ready    <none>   3d     v1.19.3
node222    Ready    <none>   3d     v1.19.3

# 在 master 节点删除想要修改主机名的子节点(比如node222)
kubectl delete node node222

# 将当前节点还原到未初始化的状态,从而清除节点上与 Kubernetes 相关的配置和数据
kubeadm reset
# 在当前终端会话中切换到 root 用户的身份
su root

# 修改子节点的主机名为 node2
hostnamectl set-hostname node2

# 在 maste 节点执行,获取子节点加入集群令牌,将输出命令直接在 node 节点执行
kubeadm token create --print-join-command

# 在被删除的子节点,执行加入集群的命令
kubeadm join 192.168.3.30:6443 --token 0agh2z.2run9cjqd5q2m95j     --discovery-token-ca-cert-hash sha256:b4af288c70e6c7cb9054271696c9ee41123d4da48cce5b2feaabba43ba0f481f

# 在 mster 节点进行验证
kubectl get nodes
辅助命令
# 在 kubernetes-dashboard 命名空间中获取 Pod 和 Service 资源的信息
kubectl get pod,svc -o wide -n kubernetes-dashboard

# 用于在 Kubernetes 集群中创建一个令牌(Token),该令牌可用于让其他节点加入集群。
kubeadm token create --print-join-command

# 关机重启
shutdown -r now

# 重启 kubelet
systemctl restart kubelet

相关文章

网友评论

      本文标题:kubernetes + docker

      本文链接:https://www.haomeiwen.com/subject/jufymdtx.html