kubeadm安装k8s v1.21.5
没网的话,把镜像都提前拷过来。
1、Rocky linux8 安装3主节点k8s
1) haproxy
haproxy如果起不来,可能是setenforce的原因
在 Rocky Linux 8 中,您可以通过以下步骤关闭或启用 SELinux:
关闭 SELinux:
-
编辑
/etc/selinux/config
文件,可以使用文本编辑器如 Vim 或 Nano 进行编辑:sudo vim /etc/selinux/config
-
在打开的文件中找到
SELINUX
行,并将其值修改为disabled
,例如:SELINUX=disabled
-
保存并退出编辑器。
-
重新启动系统,以使更改生效。
启用 SELinux:
如果您决定启用 SELinux,请遵循以下步骤:
-
编辑
/etc/selinux/config
文件:sudo vim /etc/selinux/config
-
将
SELINUX
的值更改为enforcing
:SELINUX=enforcing
或者,如果您希望 SELinux 在启动时以警告模式启动,可以将其值设置为
permissive
:SELINUX=permissive
-
保存并退出编辑器。
-
重新启动系统,以使更改生效。
在进行任何更改之前,请确保您了解 SELinux 的基本概念,并且在启用 SELinux 时,您可能需要对文件和进程的访问权限进行更严格的控制。
在操作过程中,您也可以使用 setenforce
命令来临时更改 SELinux 的执行模式。例如,要将 SELinux 设置为警告模式,您可以执行:
sudo setenforce 0
要将 SELinux 设置为强制模式,您可以执行:
sudo setenforce 1
这些更改仅在当前会话中有效,并不会影响永久配置。
dnf install keepalived haproxy -y
vi /etc/haproxy/haproxy.cfg
global
log /dev/log local0 warning
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
log global
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
frontend kube-apiserver
bind *:16443
mode tcp
option tcplog
default_backend kube-apiserver
backend kube-apiserver
mode tcp
option tcplog
option tcp-check
balance roundrobin
default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
server kube-apiserver-1 172.16.0.4:6443 check # Replace the IP address with your own.
server kube-apiserver-2 172.16.0.5:6443 check # Replace the IP address with your own.
server kube-apiserver-3 172.16.0.6:6443 check # Replace the IP address with your own.
systemctl restart haproxy
systemctl enable haproxy
2)keepalived
vi /etc/keepalived/keepalived.conf
global_defs {
notification_email {
}
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 2
weight 2
}
vrrp_instance haproxy-vip {
state BACKUP
priority 100
interface eth0 # Network card
virtual_router_id 60
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
unicast_src_ip 172.16.0.2 # The IP address of this machine
unicast_peer {
172.16.0.3 # The IP address of peer machines
}
virtual_ipaddress {
172.16.0.10/24 # The VIP address
}
track_script {
chk_haproxy
}
}
systemctl restart keepalived
systemctl enable keepalived
3)每个节点的操作
hostnamectl set-hostname masterX
vi /etc/hosts
#添加
192.168.0.1 master1
192.168.0.2 master2
192.168.0.3 master3
sudo swapoff -a
vi /etc/fstab # 这里面的注释掉
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce
sudo systemctl enable docker
sudo systemctl start docker
sudo cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
EOF
sudo yum install -y kubelet-1.21.5 kubeadm-1.21.5 kubectl-1.21.5
sudo systemctl enable kubelet
sudo systemctl start kubelet
没网的话,把镜像都提前拷过来
# 查看有哪些镜像
kubeadm config images list
# 两台机器都把镜像导上
4)主节点的操作
cat <<EOF > kubeadm-config.yaml
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.21.5
imageRepository: registry.aliyuncs.com/google_containers # image的仓库源
controlPlaneEndpoint: "ip:port"
networking:
podSubnet: "10.244.0.0/16"
EOF
sudo kubeadm init --config=kubeadm-config.yaml --upload-certs --v=5
其他主节点加入集群后,执行这句,开始使用kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of “crypto/rsa: verification error” while trying to verify candidate authority certificate “kubernetes”)
root 用户输入这条命令解决:export KUBECONFIG=/etc/kubernetes/admin.conf
kubectl apply -f calico.yaml
calico.yaml
或者阿里云盘
5)其他主节点的操作
# 主节点这样加入
kubeadm join ip:port --token i9fvba.hjy6aur3g0up9o7a \
--discovery-token-ca-cert-hash sha256:18b62cf225a4d4ff22ec00ce21a006af0f9309fe7fb6fc684814d2f9077b9e3b \
--control-plane --certificate-key 8636f2a0ccbd249b02957170e54b7921c5f28cff0b93ad86736af046719677b9
#工作节点这样加入
kubeadm join ip:port --token i9fvba.hjy6aur3g0up9o7a \
--discovery-token-ca-cert-hash sha256:18b62cf225a4d4ff22ec00ce21a006af0f9309fe7fb6fc684814d2f9077b9e3b
6)如何卸载
# worker 节点
kubectl drain NODE_NAME --delete-local-data --force --ignore-daemonsets
kubectl delete node NODE_NAME
dnf remove -y kubeadm kubectl kubelet kubernetes-cni kube*
rm -rf ~/.kube/
rm -rf /etc/cni/
rm -rf /etc/kubernetes/
rm -rf /var/lib/etcd/
rm -rf /var/lib/kubelet/
主节点上
kubeadm reset
2 Ubuntu22.04
要在 Ubuntu 22.04 上安装特定版本的 Kubernetes(例如 v1.21.5),您需要按照以下步骤操作:
1. 更新系统并安装依赖项
首先,更新您的系统并安装一些必要的依赖项:
sudo apt update
sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl
2. 安装 Docker
Kubernetes 需要一个容器运行时环境,Docker 是一个常用的选择:
sudo apt install -y docker.io
sudo systemctl enable docker
sudo systemctl start docker
3. 添加 Kubernetes 源
添加 Kubernetes 的 apt 仓库:
sudo tee /etc/apt/sources.list.d/kubernetes.list <<EOF
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
4. 安装指定版本的 kubeadm, kubelet 和 kubectl
查看可用版本:
sudo apt update
apt-cache madison kubeadm
在列表中找到 v1.21.5,然后安装 kubeadm, kubelet 和 kubectl 的指定版本:
sudo apt install -y kubelet=1.21.5-00 kubeadm=1.21.5-00 kubectl=1.21.5-00
sudo apt-mark hold kubelet kubeadm kubectl
apt-mark hold
命令在 Ubuntu 和其他基于 Debian 的系统中用于将特定的软件包标记为 “hold” 状态。当一个包被标记为 “hold” 时,它不会在系统执行常规升级(如通过 apt upgrade
命令)时被升级。这意味着该软件包将保持在当前安装的版本,直到您手动改变它的状态。
在 Kubernetes 的上下文中,执行 apt-mark hold kubelet kubeadm kubectl
的目的是:
-
防止自动更新:这确保了这些关键组件(
kubelet
、kubeadm
和kubectl
)在系统进行常规软件更新时不会被自动更新。这是非常重要的,因为 Kubernetes 的不同组件需要保持版本一致性,任意升级单个组件可能会导致兼容性问题。 -
维护集群稳定性:通过固定这些组件的版本,可以维护集群的稳定性和一致性,特别是在生产环境中,任意的更新可能会引入不稳定因素。
-
手动控制升级:当您准备好升级 Kubernetes 时,可以手动解除这些包的 “hold” 状态,并更新到所需的特定版本,这样可以更精确地控制更新过程。
要恢复这些包的正常更新状态,您可以使用 apt-mark unhold <包名>
命令。例如:
sudo apt-mark unhold kubelet kubeadm kubectl
这将允许这些包在下次执行 apt upgrade
时正常更新。
5. 初始化 Kubernetes 集群
使用 kubeadm
初始化您的 Kubernetes 集群:
sudo kubeadm init --kubernetes-version=v1.21.5
6. 配置 kubectl
作为普通用户,配置 kubectl 访问:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
7. 安装 Pod 网络
您需要安装一个 Pod 网络插件。例如,使用 Calico:
kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
注意事项
- 请确保在安装之前检查您的硬件和网络配置是否满足 Kubernetes 的要求。
- 如果您的服务器使用了防火墙,请确保开放必要的端口。
- 安装特定版本的 Kubernetes 意味着您需要遵循该版本的特定指南和考虑与最新版本的兼容性差异。
更多推荐
所有评论(0)