最新版k8s 1.25版本安装
简介
Kubernetes(k8s)是自动化容器操作的开源平台。这些容器操作包括:部署、调度和节点集群间扩展。
具体功能:
- 自动化容器部署和复制。
- 实时弹性收缩容器规模。
- 容器编排成组,并提供容器间的负载均衡。
总而言之,k8s可以使我们应用的部署和运维更加方便。
1.关闭selinux
#关闭selinux
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
sed -i "s/^SELINUXTYPE=.*/SELINUXTYPE=targeted/g" /etc/selinux/config
#重启虚拟机
reboot
#查看配置结果
getenforce
2.关闭交换分区
#设置开机自动关闭分区
swapoff -a
#设置永久禁用分区,打开/etc/fstab文件注释掉带有swap
sed -i 's/.*swap.*/#&/' /etc/fstab
3. 修改内核参数
#开启网络参数
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
2.9 修改主机名
2.10 配置hosts文件
[root@hadoop1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.30 k8s-master
192.168.8.31 k8s-node1
192.168.8.32 k8s-node2
3.docker安装部署(所有节点)
先卸载系统的旧版本
yum remove docker \
docker-common \
docker-selinux \
docker-engine
设置docker仓库为阿里云
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.1 查看支持哪些docker版本
yum list docker-ce --showduplicates |sort -r
3.2 安装docker社区版
yum -y install docker-ce-20.10.21
3.5 修改docker配置
#设置更多镜像地址
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://7mimmp7p.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
}
,
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
3.6 重启docker
systemctl daemon-reload && systemctl restart docker
3.7 配置k8s网络
#配置网络
echo """
vm.swappiness = 0
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
""" > /etc/sysctl.conf
#加载配置
sysctl -p
3.8 开启ipvs
#不开启ipvs将会使用iptables,但是效率低,所以官网推荐需要开通ipvs内核、
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"
for kernel_module in \${ipvs_modules}; do
/sbin/modinfo -F filename \${kernel_module} > /dev/null 2>&1
if [ $? -eq 0 ]; then
/sbin/modprobe \${kernel_module}
fi
done
EOF
#修改执行权限并执行
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs
3.9 安装容器运行时接口cri-docker
Docker通过cri-docker软件与k8s进行整合。
#下载cri-docker
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.6/cri-dockerd-0.2.6-3.el7.x86_64.rpm
#安装cri-docker
rpm -ivh cri-dockerd-0.2.6-3.el7.x86_64.rpm
#重载沙箱(pause)镜像
vi /usr/lib/systemd/system/cri-docker.service
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8 --container-runtime-endpoint fd://
#启动并设置开机重启cri-docker
systemctl start cri-docker
systemctl enable cri-docker
4.5 安装网络插件calico (仅主节点就行)
Calico网络插件可以实现跨主机间容器通信
#Calico是一个纯三层的数据中心网络方案,是目前Kubernetes主流的网络方案。
#下载YAML:
wget --no-check-certificate https://docs.projectcalico.org/manifests/calico.yaml
#下载完后还需要修改里面定义Pod网络(CALICO_IPV4POOL_CIDR),与前面kubeadm init的 --pod-network-cidr指定的一样。
#查看calico是否安装成功
docker images | grep calico
#在master节点执行命令进行calico插件安装
kubectl apply -f calico.yaml
4.k8s安装部署(所有节点)
4.1 安装kubectl、kubelet、kubeadm组件
添加阿里云的源:
[root@k8s-master ~]# cat >/etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#指定版本下载
yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0
4.2 启动kubelet并设置为开机启动
systemctl enable kubelet
systemctl start kubelet
4.3 主节点部署k8s master(仅主节点)
#初始化k8s集群(cpu核必须大于1)
kubeadm init \
--apiserver-advertise-address=192.168.8.30 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.25.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket unix:///var/run/cri-dockerd.sock
# 对于root用户, 直接添加变量即可开始使用集群
if [ `grep -c 'KUBECONFIG' ~/.bash_profile` -eq 0 ]; then
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
fi
4.4 加入k8s集群(仅从节点)
# 这段话是在主节点kubeadm init时复制过来的, 注意添加--cri-socket
kubeadm join 192.168.8.30:6443 --token 74q42i.y5yusgda5ahc6yoh \
--discovery-token-ca-cert-hash sha256:41ab1d837b133a16d4ef5818719d57e87f93ebe65158888797c705ac89fd848d --cri-socket unix:///var/run/cri-dockerd.sock
4.3 在主节点查看
#查看k8s集群节点
kubectl get nodes
#查看系统默认pods
kubectl get pods -n kube-system
4.6 查看节点状况
#在主节点执行命令看集群是否成功
kubectl get node -o wide
备注:如果status列中的状态都为ready,表明集群安装成功。
5.部署Dashboard(仅主节点)
5.1 部署Dashboard
根据对kubernetes版本的兼容情况选择对应的dashboard的版本:
- dashboard 2.7 : 全面兼容 k8s 1.25
- dashboard 2.6.1 : 全面兼容 k8s 1.24
- dashboard 2.5.1: 全面兼容 k8s 1.23
#部署 Dashboard UI
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
#设置访问端口,修改 recommend.yaml
.......
kind: Service
apiVersion: v1
metadata:
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30080
selector:
k8s-app: kubernetes-dashboard
......
kubectl apply -f recommend.yaml
#查看端口
kubectl get svc -A |grep kubernetes-dashboard
#访问:https://集群任意IP:端口 进入登录界面
https://192.168.8.30:30080/#/login
使用token登录
5.登录dashboard
5.1 创建ServiceAccount和secret并关联
编写yaml文件,dashboard-admin.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
name: admin-user
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: "admin-user"
kubectl apply -f dashboard-admin.yaml
5.2 查看登录token
kubectl describe secret admin-user -n kubernetes-dashboard
5.4 登录成功
#看到如下界面说明Dashboard部署成功
6.测试k8s集群(仅主节点)
# 创建Nginx容器
kubectl create deployment nginx --image=nginx
#暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
查看pod
kubectl get pod,svc# 访问地址(http://NodeIP:Port) http://192.168.80.30:32279/ http://192.168.80.31:32279/
7、使用制作登录kubeconfig
由于token不易保管,可以讲集群信息和身份凭据 信息写入kubeconfig,登录时传入kubeconfig文件即可
#添加集群配置
kubectl config set-cluster myland-01 --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs=true --server=https://10.0.8.101:6443 --kubeconfig=admin-user.kubeconfig#添加身份凭据--token
kubectl config set-credentials admin-user --token=`kubectl describe secret admin-user -n kubernetes-dashboard |awk '/^token:/{print $2}'` --kubeconfig=admin-user.kubeconfig#以admin-user用户的身份凭据与myland-01集群建立映射关系
kubectl config set-context admin-user@myland-01 --cluster=myland-01 --user=admin-user --kubeconfig=admin-user.kubeconfig#设置为当前上下文为admin-user@myland-01
kubectl config use-context admin-user@myland-01 --kubeconfig=admin-user.kubeconfig
下载admin-user.kubeconfig 使用kubeconfig文件登录:
开始使用之旅吧。
相关文章
- Centos7 k8s v1.5.2二进制部署安装-flannel之NAT规则优化
- Centos7 k8s v1.5.2二进制部署安装-kube-proxy
- Centos7 k8s v1.5.2二进制部署安装-基本准备
- K8S中常用的资源限制的示例
- 使用KubeKey安装K8S集群
- k8s安装工具:sealos设计原理及离线包结构分析
- k8s sealos应用安装及应用包制作教程
- 【K8s】第3篇 一篇文章带你部署安装k8s集群(linux-amd64)(ubuntu)
- k8s的故障切换(failover)
- 阿里云环境安装K8S步骤
- k8s helm
- 007-k8s资源控制器-Job、CronJob
- k49.第十九章 K8s运维篇-集群升级 -- kubernetes v1.20 二进制包安装方式升级(二)
- k19.第八章 K8s进阶篇-持久化存储入门 (二)
- y67.第三章 Kubernetes从入门到精通 -- k8s网络(四十)
- (2022版)一套教程搞定k8s安装到实战 | K8s集群安装(二进制)
- (2022版)一套教程搞定k8s安装到实战 | K8s集群安装(Kubeadm)
- (2022版)一套教程搞定k8s安装到实战 | Service
- (2022版)一套教程搞定k8s安装到实战 | Secret
- (2022版)一套教程搞定k8s安装到实战 | 在k8s上是如何发布服务的
- k8s-有状态应用编排
- k8s-命令创建service
- k8s-获取kuboardtoken
- Kubernetes(k8s)Ingress原理
- K8s Pod Security Policy实践
- k8s学习之路 | Day10 Dashboard 部署
- Ubuntu18.04安装k8s