首页 > 其他分享 >kubernetes 1.25.0 安装部署

kubernetes 1.25.0 安装部署

时间:2023-04-15 20:56:56浏览次数:48  
标签:kubernetes etc 部署 -- yum master k8s 1.25

1. 环境说明

主机

IP地址

备注

k8s-master

192.168.0.200

控制节点

k8s-node1

192.168.0.200

工作节点

k8s-node2

192.168.0.200

工作节点

2. 准备工作(所有节点)

分别设置主机名

hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2

设置本地解析

cat >> /etc/hosts << 'EOF'
192.168.0.200 k8s-master
192.168.0.201 k8s-node1
192.168.0.202 k8s-node2
EOF

设置时间同步

yum install chrony -y
systemctl enable --now chronyd

关闭防火墙

systemctl disable firewalld && systemctl stop firewalld

关闭SElinux

setenforce 0
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config

设置内核网络参数

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
#加载设置参数
sysctl --system

关闭swap

swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab

3. 安装docker

添加国内安装源

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

查看可用版本

yum list docker-ce --showduplicates

安装20.10.17版本

yum install docker-ce-20.10.17 -y

配置国内镜像加速,并更改cgroupdriver由systemd方式控制

mkdir /etc/docker
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://reg-mirror.qiniu.com",
"https://registry.docker-cn.com"
  ],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF

启动

systemctl enable --now docker

4. 安装容器运行时接口cri-docerd

下载

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1-3.el7.x86_64.rpm

安装

rpm -ivh cri-dockerd-0.3.1-3.el7.x86_64.rpm

配置cri-dockerd使用国内镜像地址

sed -i 's#^ExecStart.*#& --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7#' /usr/lib/systemd/system/cri-docker.service

 启动

systemctl enable --now cri-docker

5. 安装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
gpgchech=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装kubernetes1.25.0版本组件

yum install kubectl-1.25.0 kubelet-1.25.0 kubeadm-1.25.0 -y

如报错以下错误:

Retrieving key from http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
Importing GPG key 0x13EDEF05:
 Userid     : "Rapture Automatic Signing Key (cloud-rapture-signing-key-2022-03-07-08_01_01.pub)"
 Fingerprint: a362 b822 f6de dc65 2817 ea46 b53d c80d 13ed ef05
 From       : http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

Public key for 6ef583567f0b35dc39ef9f09efb02dbb75054f9fbf7189969a118b5051fa5a71-kubelet-1.25.0-0.x86_64.rpm is not installed

 Failing package is: kubelet-1.25.0-0.x86_64
 GPG Keys are configured as: http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

解决办法:手动下载并导入以下文件

wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
rpm --import yum-key.gpg
rpm --import rpm-package-key.gpg

6. 初始化kubernetes集群

在k8s-master控制节点执行初始化操作,在初始化完成后,会成生两条将节点加入群集的命令,第一条为添加控制节点的命令,第二条则为添加工作节点的命令

kubeadm init --control-plane-endpoint=k8s-master --kubernetes-version v1.25.0 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.1.0.0/16 --image-repository registry.aliyuncs.com/google_containers --cri-socket unix:///run/cri-dockerd.sock --upload-certs --token-ttl=0 --v=5
Your Kubernetes control-plane has initialized successfully!
……(省略部分)
To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of the control-plane node running the following command on each as root:

  kubeadm join k8s-master:6443 --token x4p7jc.cf9dua744ixrnzrp \
    --discovery-token-ca-cert-hash sha256:747b9c200e3fa77c70e93ccc4e148542281989e2838202c792cd7364cf353947 \
    --control-plane --certificate-key 59d66a6fb61c4359e3fe40d6b3c9744e59c09ae064b5aeebebb74069ec1a2250

Please note that the certificate-key gives access to cluster sensitive data, keep it secret!
As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use
"kubeadm init phase upload-certs --upload-certs" to reload certs afterward.

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join k8s-master:6443 --token x4p7jc.cf9dua744ixrnzrp \
    --discovery-token-ca-cert-hash sha256:747b9c200e3fa77c70e93ccc4e148542281989e2838202c792cd7364cf353947

根据提示,执行以下操作以使用集群服务

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

7. 将工作节点加入到集群

复制k8s-master控制节点初始化时生成的join命令,并添加--cri-socket选项来指定容器运行时接口,分别在k8s-node1、k8s-node2上执行

kubeadm join k8s-master:6443 --token x4p7jc.cf9dua744ixrnzrp \
    --discovery-token-ca-cert-hash sha256:747b9c200e3fa77c70e93ccc4e148542281989e2838202c792cd7364cf353947  --cri-socket unix:///run/cri-dockerd.sock

8. 为控制节点配置网络

8.1安装网络插件

节点加入集群后,节点信息为NotReady,各主机节点及容器暂无法进行相互连接通信,还需要安装网络插件集群才能正常通信。

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS     ROLES           AGE    VERSION
k8s-master   NotReady   control-plane   161m   v1.25.0
k8s-node1    NotReady   <none>          135m   v1.25.0
k8s-node2    NotReady   <none>          143m   v1.25.0

kubernetes支持flannel、calico、canal等多种网络插件,本次选择为pod安装flannel网络插件

#如下载无反应,则添加解析到hosts文件,再进行下载
#echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml kubectl apply -f kube-flannel.yml

再次查看各节点状态,状态已由原来的NotReady 变为Ready,这时集群网络已能正常通信

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES           AGE   VERSION
k8s-master   Ready    control-plane   40h   v1.25.0
k8s-node1    Ready    <none>          40h   v1.25.0
k8s-node2    Ready    <none>          40h   v1.25.0

[root@k8s-master ~]# kubectl get nodes -o wide
NAME         STATUS   ROLES           AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION           CONTAINER-RUNTIME
k8s-master   Ready    control-plane   45h   v1.25.0   192.168.0.200   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   docker://20.10.17
k8s-node1    Ready    <none>          45h   v1.25.0   192.168.0.201   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   docker://20.10.17
k8s-node2    Ready    <none>          45h   v1.25.0   192.168.0.202   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   docker://20.10.17

8.2开启ipvs(可选)

k8s的service资源默认情况下使用的是iptables,但效率低下,所以推荐使用性能更高的ipvs。

 

安装ipset和ipvsadm

yum install ipset ipvsadm -y

编写载入内核脚本

cat <<EOF> /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

授权并执行

chmod +x /etc/sysconfig/modules/ipvs.modules
/bin/bash /etc/sysconfig/modules/ipvs.modules

查询确认加载结果

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

修改kubelet配置文件,添加以下参数

vim /etc/sysconfig/kubelet
……(省略部分)
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"

#或执行以下命令,找到mode字段,将值由空值改为ipvs,保存退出后删除kube-proxy的Pod,自动重启后生效。


kubectl edit configmap kube-proxy -n kube-system



 重启kubelet服务

systemctl restart kubelet    

9. 为master添加dashboard面板

下载资源文件,选择对应的版本(https://github.com/kubernetes/dashboard/tags)

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

修改类型service类型为NodePort,同时指定Nodeport端口(需在30000-32767范围内)

vim recommended.yaml
……
spec:
  type: NodePort  # 新增
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30009  # 新增
  selector:
    k8s-app: kubernetes-dashboard
……

安装dashboard

kuectl apply -f recommended.yaml

查看资源

kubectl get pod,svc -n kubernetes-dashboard

创建用户、绑定角色并授权

#创建资源文件
vim dashboard-admin.yaml apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user-cluster-role roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard #资源创建 kubectl apply -f dashboard-admin.yaml

获取用户登录token

kubectl -n kubernetes-dashboard create token admin-user

登录使用

浏览器输入https://92.168.0.200:30009,登录方式选择Token后,输入获取到的Token登录即可。

 

标签:kubernetes,etc,部署,--,yum,master,k8s,1.25
From: https://www.cnblogs.com/isxiefeng/p/17321765.html

相关文章

  • CentOS7---部署Tomcat和安装Jpress
    总览需求1.简述静态网页和动态网页的区别。2.简述Webl.0和Web2.0的区别。3.安装tomcat8,配置服务启动脚本,部署jpress应用。1、简述静态网页和动态网页的区别静态网页:请求响应信息,发给客户端进行处理,由浏览器进行解析,显示的页面,静态网页包含文本、图像、Flash动画......
  • Kubernetes API相关知识
    Kubernetes集群中,所有组件需要操作集群资源时都通过调用kube-apiserver提供的RESTful接口来实现。kube-apiserver进一步和etcd交互,完成资源信息的更新。Kubernetes中的资源本质上是一个API对象,这个对象的期望状态被APIServer保存在etcd中,然后提供RESTful接口用于更新这些对象。......
  • docker:Dockerfile、docker私有仓库、dockercompose介绍、dockercompose部署flask+redi
    目录一、Dockerfile1.1常用和不常用命令1.2dockerfile构建一个djagno项目二、docker私有仓库2.1镜像传到官方仓库2.2镜像分层2.3私有仓库搭建三、dockercompose介绍四、dockercompose部署flask+redis项目4.1新建flask项目app.py4.2编写Dockerfile--》用于构建flask项目的......
  • docker,Dockerfile,docker私有仓库,dockercompose介绍,dockercompose部署flask+redis项目,d
    内容回顾容器操作dockerstart容器id启动容器dockerstop容器id停止容器dockerrm 容器id删除容器ockerrm`dockerps-aq`#正在运行的容器不能删除dockerexec容器id命令让容器执行命令dockercp宿主机目录容器id:容器目录#目录要存在dockercp容......
  • Linux-部署你的项目
    1选择服务器可自行选择,我选择的为aliyun的个人服务器,108一年的。2服务器环境设置2.1安装java1:查看当前java版本[root@localhostsoftware]#java-version2:查看当前服务器已安装的java[root@localhostsoftware]#rpm-qa|grepjava显示:java-1.7.0-openjdk-1.7.0......
  • 个人部署【未实现Nginx前端资源部署】
    【未在Nginx上实现静态资源部署】虚拟机A作为服务器A:安装Nginx、安装Mysql作为主库虚拟机B作为服务器B:安装能采用shell脚本部署项目所需软件:jdkgitmavenjar、安装Mysql作为从库、安装Redis作为缓存。服务器B操作:第一步:使用gitclone命令将远程仓库的代码克隆下来第二步:上......
  • 项目部署
    部署架构:Nginx:部署前端页面、配置反向代理Tomcat:springboot项目两个Mysql:主从复制Redis:缓存 部署环境说明:服务器:*192.168.138.100(服务器A)Nginx:部署前端项目、配置反向代理Mysql:主从复制结构中的主库*192.168.138.101(服务器B)jdk:运行java项目g......
  • 67、K8S-部署管理-Helm部署Prometheus、TSDB数据持久化
    Kubernetes学习目录1、准备仓库1.1、配置prometheus仓库1.1.1、增加prometheus仓库helmrepoaddprometheus-communityhttps://prometheus-community.github.io/helm-charts1.1.2、查询增加的结果]#helmrepolistNAMEURL......
  • kubernetes-nfs共享存储
    搭建nfs服务端#修改权限chmod-R777/nfs/data#编辑export文件vim/etc/exports/nfs/data*(rw,no_root_squash,sync)(“*“代表所有人都能连接,建议换成具体ip或ip段,如192.168.20.0/24)#配置生效exportfs-r#查看生效exportfs#启动rpcbind、nfs服务systemctlresta......
  • windows 平台下单机部署nginx 实现api网关效果
    1下载windows版本的nginx链接:https://pan.baidu.com/s/1EPcqgLdcq7y96OcZ2LInuw提取码:0ris 2下载解压压缩包,不需安装1)解压压缩文件夹,进入nginx-1.20.2目录,然后在目录下打开cmd,启动命令startnginx2)查看nginx任务进程是否存在,命令tasklist/fi"imagenameeqn......