kubernetes在Ubuntu 18.04使用实践

kubernets 简介

Kubernetes (通常称为"k8s")是一个开源的容器编排平台,用于自动化应用程序的部署、扩展和管理。它最初由Google设计并开发,并于2014年向开源社区发布。现在,它由Cloud Native Computing Foundation (CNCF)托管,成为了云原生应用的事实标准。

Kubernetes提供了一个可扩展的、模块化的平台,可以在不同的环境中运行应用程序,包括公有云、私有云和混合云。它支持多种容器运行时,如Docker、rkt和CRI-O等,并提供了多种功能,如自动负载均衡、自动伸缩、自动容错、自动部署、自动扩展等。

  1. Kubernetes的核心组件包括:

    • Master节点: 用于管理整个集群,包括调度、监控、扩展和升级等任务。
    • Worker节点: 运行应用程序的主机。
    • Pod: 最小的可部署单元,由一个或多个容器组成,用于运行应用程序。
    • ReplicaSet: 用于在多个Worker节点上运行多个相同的Pod副本,并确保它们在任何时间都可用。
    • Deployment: 用于定义和管理ReplicaSet,提供了自动部署和更新的功能。
    • Service: 用于暴露Pod的网络端点,使其可以被其他应用程序访问。

    Kubernetes提供了一个强大的API,可以使用命令行工具(如kubectl)、Web界面或编程接口进行访问和操作。它还支持扩展机制,可以通过插件、自定义资源定义(CRD)和控制器等方式扩展其功能。

  2. Kubernetes的优点包括:

    • 自动化:自动化部署、扩展和管理应用程序。
    • 可移植性:支持多云环境和不同的容器运行时。
    • 可扩展性:支持扩展插件和自定义资源定义。
    • 稳定性:具有高可用性和容错性,可以确保应用程序始终可用。
    • 社区:Kubernetes具有强大的社区支持,可以获取大量的文档、示例和工具。

    Kubernetes是一个强大的容器编排平台,可以帮助企业实现自动化部署、可移植性和可扩展性,从而加速应用程序的交付和提高运维效率。

k8s文档

在Ubuntu 18.04 上安装 k8s

在 Ubuntu 18.04 上安装 Kubernetes 可以通过以下步骤进行:

  1. 安装docker
sudo apt-get remove docker docker-engine docker.io containerd runc

curl -sSL https://get.daocloud.io/docker | sh

#通过将用户添加到docker用户组可以将sudo去掉

sudo groupadd docker

sudo usermod -aG docker $USER

newgrp docker

#修改国内源

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://hub-mirror.c.163.com",
                       "https://mirror.baidubce.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker
 
docker info|grep Mirrors -A 2
  1. 安装k8s
# 可以打开 /etc/apt/sources.list  文件,添加一行
vim /etc/apt/sources.list

# 添加 deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main

# 为新源添加 key
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add 

# 安装 k8s
sudo apt-get update && apt-get install -y apt-transport-https curl

sudo apt-get install -y kubelet kubeadm kubectl --allow-unauthenticated

# 开启kubelet
systemctl enable kubelet

# 关闭swap
sudo swapoff -a

### kubernetes 1.24+版本之后,docker必须要加装cir-docker, 1.26.X cir-docker至少要v0.3.0

git clone https://github.com/Mirantis/cri-dockerd.git

cd cri-dockerd

mkdir bin

# go 安装 https://go.dev/doc/install 官网下载 按步骤执行即可
wget https://go.dev/dl/go1.20.2.linux-amd64.tar.gz

sudo rm -rf /usr/local/go 

sudo tar -C /usr/local -xzf go1.20.2.linux-amd64.tar.gz

export PATH=$PATH:/usr/local/go/bin

go version

# 继续编译 cri-dockerd

go build -o bin/cri-dockerd

mkdir -p /usr/local/bin

install -o root -g root -m 0755 bin/cri-dockerd /usr/local/bin/cri-dockerd

cp -a packaging/systemd/* /etc/systemd/system

sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service

## 需要追加–network-plugin=cni,通过该配置告诉容器,使用kubernetes的网络接口。
#vim /etc/systemd/system/cri-docker.service

# 启动
systemctl daemon-reload
systemctl enable cri-docker.service
systemctl enable --now cri-docker.socket
systemctl start docker
systemctl start cri-docker

# 验证
systemctl status cri-docker

kubeadm 初始化

# 提前拉取 初始化 需要的 docker镜像
#编写shell
vim pullk8s.sh

# 提前通过 kubeadm config images list 查看镜像版本,修改为对应的版本
#!/bin/bash
docker pull dyrnq/kube-apiserver:v1.26.2
docker pull dyrnq/kube-controller-manager:v1.26.2
docker pull dyrnq/kube-scheduler:v1.26.2
docker pull dyrnq/kube-proxy:v1.26.2
docker pull dyrnq/pause:3.9
docker pull dyrnq/pause:3.6
docker pull dyrnq/etcd:3.5.6-0
docker pull dyrnq/coredns:v1.9.3

docker tag dyrnq/kube-apiserver:v1.26.2 registry.k8s.io/kube-apiserver:v1.26.2
docker tag dyrnq/kube-controller-manager:v1.26.2 registry.k8s.io/kube-controller-manager:v1.26.2
docker tag dyrnq/kube-scheduler:v1.26.2 registry.k8s.io/kube-scheduler:v1.26.2
docker tag dyrnq/kube-proxy:v1.26.2 registry.k8s.io/kube-proxy:v1.26.2
docker tag dyrnq/pause:3.9 registry.k8s.io/pause:3.9
docker tag dyrnq/pause:3.6 registry.k8s.io/pause:3.6
docker tag dyrnq/etcd:3.5.6-0 registry.k8s.io/etcd:3.5.6-0
docker tag dyrnq/coredns:v1.9.3 registry.k8s.io/coredns/coredns:v1.9.3

docker rmi dyrnq/kube-apiserver:v1.26.2
docker rmi dyrnq/kube-controller-manager:v1.26.2
docker rmi dyrnq/kube-scheduler:v1.26.2
docker rmi dyrnq/kube-proxy:v1.26.2
docker rmi dyrnq/pause:3.9
docker rmi dyrnq/pause:3.6
docker rmi dyrnq/etcd:3.5.6-0
docker rmi dyrnq/coredns:v1.9.3

# 保存后执行
sudo chmod -x pullk8s.sh
sh pullk8s.sh

初始化

修改docker为cgroup driver

vim /etc/docker/daemon.json

#添加
"exec-opts": ["native.cgroupdriver=systemd"]

kubeadm 初始化

# apiserver-advertise-address 改为主机地址
kubeadm init --apiserver-advertise-address=192.168.131.139 --pod-network-cidr=10.244.0.0/16 --cri-socket=unix:///var/run/cri-dockerd.sock --ignore-preflight-errors=NumCPU

#集群应用客户端管理集群文件准备
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
ls /root/.kube/

#网络配置
export KUBECONFIG=/etc/kubernetes/admin.conf

# 使用flannel网络插件
kubectl apply -f https://raw.fastgit.org/coreos/flannel/master/Documentation/kube-flannel.yml

#等待node 准备完成
watch kubectl describe node master

# 准备完成后,可见 status 变为 Ready
kubectl get nodes

# 从机加入集群
kubeadm join 192.168.131.139:6443 --token e3d8tx.b7vplejpobjcuegh \
	--discovery-token-ca-cert-hash sha256:3aa8cd847b072edbb4af624d65023e7e6c9e8dabf8c9e4d891235512aefdf186 

安装 kubernetes-dashboard

https://gitcode.net/mirrors/kubernetes/dashboard?utm_source=csdn_github_accelerator

kubeadm 初始化重置

如果需要重新初始化(reset)一个已经存在的Kubernetes集群,可以使用以下命令:

sudo kubeadm reset

这个命令会将当前节点上的Kubernetes组件、Pod、配置文件等清除,恢复到初始化之前的状态。如果需要在重新初始化之前删除集群的配置文件,可以使用以下命令:

sudo rm -rf /etc/kubernetes/

这个命令会删除Kubernetes集群的配置文件,包括/etc/kubernetes目录下的所有文件和子目录。删除之后,你可以重新执行kubeadm init命令来初始化Kubernetes集群。

找出占用端口10250的进程,并停止这些进程,使用以下命令找出占用端口10250的进程:

sudo lsof -i :10250

然后根据输出结果找出占用端口10250的进程ID(PID),并使用kill命令停止些进程,例如:

sudo kill <PID>

kubelet 监控

journalctl -f -u kubelet

报错检查

journalctl -u kubelet | grep  E0309

参考

参考1 参考2 参考3 参考4 参考5 参考6 参考7

全部评论

相关推荐

点赞 收藏 评论
分享
正在热议
# 牛客帮帮团来啦!有问必答 #
1152069次浏览 17149人参与
# 通信和硬件还有转码的必要吗 #
11209次浏览 101人参与
# OPPO开奖 #
19225次浏览 267人参与
# 和牛牛一起刷题打卡 #
19030次浏览 1635人参与
# 实习与准备秋招该如何平衡 #
203436次浏览 3627人参与
# 大厂无回复,继续等待还是奔赴小厂 #
4979次浏览 30人参与
# 不去互联网可以去金融科技 #
20488次浏览 257人参与
# 通信硬件薪资爆料 #
265968次浏览 2484人参与
# 国企是理工四大天坑的最好选择吗 #
2229次浏览 34人参与
# 互联网公司评价 #
97718次浏览 1280人参与
# 简历无回复,你会继续海投还是优化再投? #
25039次浏览 354人参与
# 0offer是寒冬太冷还是我太菜 #
454917次浏览 5124人参与
# 国企和大厂硬件兄弟怎么选? #
53918次浏览 1012人参与
# 参加过提前批的机械人,你们还参加秋招么 #
14647次浏览 349人参与
# 硬件人的简历怎么写 #
82290次浏览 852人参与
# 面试被问第一学历差时该怎么回答 #
19404次浏览 213人参与
# 你见过最离谱的招聘要求是什么? #
28222次浏览 248人参与
# 学历对求职的影响 #
161255次浏览 1804人参与
# 你收到了团子的OC了吗 #
538781次浏览 6387人参与
# 你已经投递多少份简历了 #
344278次浏览 4963人参与
# 实习生应该准时下班吗 #
96988次浏览 722人参与
# 听劝,我这个简历该怎么改? #
63525次浏览 622人参与
牛客网
牛客企业服务