kubespray-2.26.0安装kubernetes-1.30.4

Kubespray是开源的kubernetes部署工具,整合了ansible,可以方便的部署高可用集群环境。

官网地址:https://github.com/kubernetes-sigs/kubespray

注意:要求两台机器都可以访问github,不然后面安装的时候,下载文件会非常非常慢。

机器信息:

主机名称IP地址作用操作系统版本号
master/node1192.168.10.14ansible部署集群Ubuntu 22.04.5 LTS
ansible192.168.10.12k8s服务器CentOS Linux release 8.5.2111

1、centos预先配置

echo "node1" > /etc/hostname
sudo reboot # 重启生效
echo "192.168.10.12 node1" >> /etc/hosts
ping node1  # 可ping通

关闭防火墙:systemctl stop firewalld && systemctl disable firewalld

# ipv4网络配置:
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
sysctl -w net.ipv4.ip_forward=1
cat /proc/sys/net/ipv4/ip_forward    # 返回值为1,则表示IPv4转发已开启
/etc/sysctl.conf  # 永久生效
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
sudo sysctl -p  # 应用这些设置

# 关闭交换分区,防止干扰Cgroups的内存管理
sudo swapoff -a  # 临时关闭
/etc/fstab
#/dev/mapper/cl-swap none swap defaults 0 0   # 前面注释掉,永久关闭

# 配置ssh
sudo vi /etc/ssh/sshd_config
PubkeyAuthentication yes
PasswordAuthentication yes
PermitRootLogin yes  # 或者设置为 no,取决于您是否允许 root 登录
sudo systemctl restart sshd

# date,查看一下时间对不对。
另外:setenforce 0

2、ansible主机配置

2.1、免密登录
# 生成公钥:
ssh-keygen -t rsa
# 查看公钥:
ls /home/liang/.ssh/
# 生成的密钥发送给客户端:
ssh-copy-id -i /home/liang/.ssh/id_rsa.pub root@192.168.10.12
2.2、安装其他
sudo apt-get install python3-pip  # 安装pip
pip3 install --upgrade pip  # 升级pip3
pip3 install jinja2 --upgrade   # 安装jinja2模块
sudo apt install python3 # 默认已安装
# 若遇到不能解析域名的问题,
添加/etc/resolv.conf
nameserver 8.8.8.8
2.3、安装kubespray
sudo mkdir /usr/local/kubespray && cd /usr/local/kubespray/
sudo wget https://github.com/kubernetes-sigs/kubespray/archive/v2.26.0.tar.gz
sudo tar -xvf v2.26.0.tar.gz
cd kubespray-2.26.0/

# 安装kubespray所需的应用(是pip3)
pip3 install -r requirements.txt --upgrade  # 可能提示找不到,可以使用下面的命令安装
# 安装提醒:提示安装的脚本位于/home/liang/.local/bin目录,而这个目录不在您的系统 PATH 环境变量中
export PATH="$PATH:/home/liang/.local/bin"
source ~/.bashrc
# 安装ansible
tar -xvf ansible-9.8.0.tar.gz
cd ansible-9.8.0
python3 -m pip install --upgrade pip setuptools wheel
sudo python3 -m pip install ansible-core==2.16.9
sudo python3 -m pip install .


# 复制一份demo配置信息
sudo cp -rfp inventory/sample inventory/mycluster
cd /usr/local/kubespray/kubespray-2.26.0
declare -a IPS=(192.168.10.12)    # 设置集群信息

# 配置ansible
sudo pip3 install ruamel.yaml    # 下面的配置需要依赖ruamel.yaml模块
sudo CONFIG_FILE=inventory/mycluster/hosts.yml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
--会自动生成inventory/mycluster/hosts.yml这个文件。当然也可以修改。


# 开始安装k8s
ansible-playbook -i inventory/mycluster/hosts.yml --become --become-user=root cluster.yml
# 报错1:fatal: [node1]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: …………
# 解决1:
sudo vim inventory/mycluster/hosts.yml
access_ip: 192.168.10.12  # 添加一下用户配置信息
ansible_user: root
ansible_password: "1"
ansible_become: yes

ansible all -m ping -i inventory/mycluster/hosts.yml --become  # 测试连通性
# 若提示 connection type with passwords or pkcs11_provider, you must install the sshpass program",则进行安装: sudo apt-get install sshpass


# 报错2:FAILED - RETRYING: [node1]: Download_file | Download item (4 retries left)
# 解决2:网络不咋好,能访问外网,多次试一试。

# 报错3:/usr/local/kubespray/kubespray-2.26.0/inventory/mycluster/credentials): [Errno 13] 权限不够: 
# 解决3:在ansible主机上,
sudo mkdir -p /usr/local/kubespray/kubespray-2.26.0/inventory/mycluster/credentials
sudo chown -R $(whoami) /usr/local/kubespray/kubespray-2.26.0/inventory/mycluster/credentials

在这里插入图片描述

3、访问dashboard

dashboard可以查看kubernetes系统的整体情况

# 查看版本:
kubectl version
# 查看节点、service、pod
kubectl get node -o wide
kubectl get services 
kubectl get services --all-namespaces
kubectl get pods --all-namespaces   # 都是运行的

**登录k8s机器:**增加RBAC,为了访问dashboard页面

tee admin-user.yaml <<-'EOF'
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
EOF


tee admin-user-role.yaml <<-'EOF'
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system
EOF

创建ServiceAccount和ClusterRoleBinding:

kubectl create -f admin-user.yaml && kubectl create -f admin-user-role.yaml
3.1、创建dashboard

下载链接:https://github.com/kubernetes/dashboard/tree/v2.7.0

# 创建命名空间
kubectl create namespace kubernetes-dashboard
# 部署 Kubernetes Dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml -n kubernetes-dashboard

# 检查部署状态
kubectl get pods -n kubernetes-dashboard   # 也变成了Running
3.2、配置服务
# 将kubernetes-dashboard这个服务的类型从ClusterIP改为NodePort
kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard \
-p '{"spec":{"type":"NodePort","ports":[{"port":443,"targetPort":8443,"nodePort":30443,"protocol":"TCP"}]}}'


# 查看是否改成了NodePort
kubectl get service --all-namespaces

# 获取登录页面的token:
kubectl -n kube-system create token admin-user   # 输出就是token

浏览器输入:https://192.168.10.12:30443/
token方式登录

其他登录页面

参考链接:https://blog.youkuaiyun.com/boling_cavalry/article/details/109897735

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值