Service 服务发现(Cluster IP & NodePort)-使用kubeadm部署k8s - 准备环境

Cluster IP

1.创建Service

root@k8s-master:~# kubectl expose deployment maydep --port=8080 --target-port=80
service/maydep exposed

2.查看Service

root@k8s-master:~# kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 41h
maydep ClusterIP 10.102.112.40 <none> 8080/TCP 49s

3.测试服务的可用性

root@k8s-master:~# curl 10.102.112.40:8080
<html><body><h1>It works!</h1></body></html>
root@k8s-master:~#

4.删除服务

root@k8s-master:~# kubectl delete service maydep
service "maydep" deleted
root@k8s-master:~# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 42h

NodePort

1.创建NodePort Service

root@k8s-master:~# kubectl expose deployment maydep --port=8080 --target-port=80 --type=NodePort
service/maydep exposed

2.查看Service

root@k8s-master:~# kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 42h
maydep NodePort 10.110.234.148 <none> 8080:32591/TCP 2m49s

3.浏览器访问对应信息,IP为node/master的IP + 端口为32591

 
image.png
 
 

准备环境

k8s-master 1.1.0.10
k8s-node1 1.1.0.11
k8s-node2 1.1.1.11

操作系统环境准备

  • 修改hostname
    hostnamectl set-hostname <k8s-master/k8s-node1/k8s-node2>
  • 添加主机映射
    cat <<EOF >> /etc/hosts
    1.1.0.10 k8s-master
    1.1.0.11 k8s-node1
    1.1.1.11 k8s-node2
    EOF
  • 停用防火墙
    ufw disable
  • 关闭交换分区
    swapoff -a
    sed -i 's/.swap./#&/' /etc/fstab
  • 允许 iptables 检查桥接流量
    modprobe br_netfilter
    cat <<EOF > /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    sudo sysctl --system

准备安装runtime -Docker

  • 更新apt包索引并安装包以允许apt通过HTTPS使用存储库
    apt update -y
    sudo apt-get -y install ca-certificates curl gnupg-agent lsb-release
  • 添加Docker的官方GPG密钥
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  • 添加Docker的存储库
    echo "deb [arch=(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • 安装Docker engine
    sudo apt-get -y update
    apt-get install docker-ce docker-ce-cli containerd.io -y
  • 配置 Docker 守护程序,尤其是使用 systemd 来管理容器的 cgroup
    sudo mkdir /etc/docker
    cat <<EOF | sudo tee /etc/docker/daemon.json
    {
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-driver": "json-file",
    "log-opts": {
    "max-size": "100m"
    },
    "storage-driver": "overlay2"
    }
    EOF
    systemctl daemon-reload
    systemctl restart docker
    systemctl enable docker
  • docker0 网桥的容器添加了ACCEPT规则
    sed -i '18c ExecStartPost=/sbin/iptables -P FORWARD ACCEPT' /lib/systemd/system/docker.service
    systemctl daemon-reload && systemctl restart docker.service
  • 安装前注意事项
    每台机器至少2CPU或更多
    每台机器至少2G内存或更多
    为了保障kubelet的正常工作,必须禁用交换分区

  • 确认runtime
    1.默认情况下,k8s使用的容器运行时接口(CRI)来与你所选择的容器运行时交互。
    2.如果你不指定运行时,则 kubeadm 会自动尝试检测到系统上已经安装的运行时, 方法是扫描一组众所周知的 Unix 域套接字。 下面的表格列举了一些 kubeadm 查找的容器运行时及其对应的套接字路径:
    3.运行时 域套接字
    Docker Engine /var/run/dockershim.sock
    containerd /run/containerd/containerd.sock
    CRI-O /var/run/crio/crio.sock
    4.如果同时检测到 Docker Engine 和 containerd,kubeadm 将优先考虑 Docker Engine。 这是必然的,因为 Docker 18.09 附带了 containerd 并且两者都是可以检测到的, 即使你仅安装了 Docker。 如果检测到其他两个或多个运行时,kubeadm 输出错误信息并退出。
    5.kubelet 可以使用已弃用的 dockershim 适配器与 Docker Engine 集成(dockershim 是 kubelet 本身的一部分)。

  • 安装kubeadm、kubelet、kubectl
    需要在每台机器上安装以下的软件包:
    kubeadm:用来初始化集群的指令。
    kubelet:在集群中的每个节点上用来启动 Pod 和容器等。
    kubectl:用来与集群通信的命令行工具。

安装步骤
1.更新 apt 包索引,并安装使用kubernetes apt仓库所需要的包

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl

2.下载Google Cloud公开签名密钥

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

3.添加Kubernetes apt仓库

echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

4.更新apt 包索引,安装kubelet、kubectl、kubeadm
指定安装版本,软件名称后添加“=1.23.0-00”

sudo apt-get update
sudo apt-get install -y kubelet=1.23.0-00 kubeadm=1.23.0-00 kubectl=1.23.0-00
sudo apt-mark hold kubelet kubeadm kubectl

posted @ 2024-06-20 09:22  CharyGao  阅读(4)  评论(0编辑  收藏  举报