Kubernetes单机版部署
-
前言
-
准备配置
-
服务器
-
服务器配置
-
安装K3S
-
基本使用
-
创建命名空间
-
创建ConfigMap
-
创建Deployment
-
创建Service
前言
仅记录部署单机版K8S的流程,用于测试实验
-
K3S官网:https://docs.k3s.io/
准备配置
服务器
-
系统:CentOS7.9 -
配置:2CPUs/8GB/40GB/10M
部署K3S最低要求
1CPUs/512MB
,推荐2CPUs/1GB
服务器配置
安装Docker
#配置docker阿里云的yum源
curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#生成yum缓存
yum clean all && yum makecache
#使用yum安装
yum install docker-ce -y
#配置阿里云镜像仓库加速地址(阿里控制台获取个人加速地址)
mkdir -p /etc/docker
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": ["https://gs41u9fe.mirror.aliyuncs.com"]
}
EOF
#启动docker
systemctl start docker
#查看状态
systemctl status docker
安装K3S
使用官网安装脚本,默认使用containerd运行容器,需要在后面加上-s --docker
参数选择使用Docker(依据上文提前安装)
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - --docker
# [INFO] Creating /usr/local/bin/kubectl symlink to k3s
# [INFO] Creating /usr/local/bin/crictl symlink to k3s
# [INFO] Creating /usr/local/bin/ctr symlink to k3s
# [INFO] Creating killall script /usr/local/bin/k3s-killall.sh
# [INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh
# [INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
# [INFO] systemd: Creating service file /etc/systemd/system/k3s.service
# [INFO] systemd: Enabling k3s unit Created symlink from /etc/systemd/system/multi-user.target.wants/k3s.service to /etc/systemd/system/k3s.service.
# [INFO] systemd: Starting k3s
运行此安装后:
K3s 服务将被配置为在节点重启后或进程崩溃或被杀死时自动重启。 将安装其他实用程序,包括 kubectl
、crictl
、ctr
、k3s-killall.sh
和k3s-uninstall.sh
。kubeconfig 文件将写入到 /etc/rancher/k3s/k3s.yaml
,由 K3s 安装的 kubectl 将自动使用该文件。单节点 Server 安装是一个功能齐全的 Kubernetes 集群,它包括了托管工作负载 pod 所需的所有数据存储、control plane、kubelet 和容器运行时组件。除非你希望向集群添加容量或冗余,否则没有必要添加额外的 Server 或 Agent 节点。
查询K3S信息
[root@k3s ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k3s Ready control-plane,master 59d v1.27.7+k3s1
查询节点信息
[root@k3s ~]# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k3s Ready control-plane,master 59d v1.27.7+k3s1 172.29.244.92 <none> CentOS Linux 7 (Core) 3.10.0-1160.99.1.el7.x86_64 docker://24.0.7
卸载K3S
/usr/local/bin/k3s-uninstall.sh
基本使用
创建命名空间
使用命令行方式
# 创建命名空间 dev (ns = namespace)
kubectl create ns dev
使用yaml方式,新增namespace.yaml
文件
apiVersion: v1
kind: Namespace #对象类型
metadata: # 元信息
name: dev # 空间名称
# 执行
kubectl apply -f namespace.yaml
# 查看所有命名空间
kubectl get ns
#删除
kubectl delete ns dev
创建ConfigMap
使用yaml方式,新增configmap.yaml
文件
apiVersion: v1
kind: ConfigMap
metadata:
name: configmap-erp-test #名称
namespace: dev #指定命名空间
data:
erp.test.replicas: "2"
application.yaml: |-
test:
enabled: true
# 执行
kubectl apply -f configmap.yaml
# 查看
kubectl get cm -n dev
kubectl describe cm -n dev configmap-erp-test
#删除
kubectl delete cm
挂载至指定应用内部(方式二支持热更新)
apiVersion: v1
kind: Deployment
spec:
template:
spec:
containers:
- name: nginx
image: nginx:latest
env: # 注入环境变量
- name: ERP_RESPLICAS # 声明变量名称
valueFrom:
configMapKeyRef:
name: configmap-erp-test # 引用ConfigMap的name
key: erp.test.replicas # 将ConfigMap中erp.test.replicas的值注入到ERP_RESPLICAS中
---
apiVersion: v1
kind: Deployment
spec:
template:
spec:
containers:
- name: nginx
image: nginx:latest
volumeMounts: # 挂载数据卷声明
- name: configmap-volume # 要挂载数据卷的名称
mountPath: /app/configmap #挂载至容器内的路径
volumes: # 声明数据卷
- name: configmap-volume
configMap:
name: configmap-erp-test # 引用ConfigMap的name
验证
# 进入容器内部(exit 退出)
kubectl exec -it <pod_name> /bin/sh -n dev
# 查看全局环境变量
echo $ERP_RESPLICAS
# 查看挂载文件
cat /app/configmap/application.yaml
创建Deployment
新增nginx.yaml
文件
apiVersion: apps/v1 #这里需要使用<group>/<version>的格式
kind: Deployment #对象类型
metadata: # 元信息
name: nginx-dev
namespace: dev # 指定命名空间
spec: # 详细参数配置
replicas: 1 # pod的副本数
selector:
matchLabels:
erpselector: nginx-test #标签
template:
metadata:
labels:
erpselector: nginx-test #标签
spec:
containers: # 容器信息
- name: nginx
image: nginx:latest # 指定拉取的镜像
ports:
- containerPort: 80 # 指定容器的端口
通过内网访问验证
# 执行
kubectl apply -f nginx.yaml
# 查看就绪状态,容器ID
kubectl get pods -n dev -o wide
# 测试内网访问
curl 10.42.0.9
创建Service
新增service.yaml
文件,将NginxPod暴露公网访问
apiVersion: v1
kind: Service
metadata:
name: nginx-service
namespace: dev
spec:
type: NodePort #节点端口转发类型
selector: #设置标签选择器。POD根据匹配此标签来加入到此service下
erpselector: nginx-test # 转发到指定标签的pods
ports:
- port: 80 # Service绑定的端口(该serive的请求端口,主要是用于集群内部调用)
targetPort: 80 #表示Service转发外部请求到容器的目标端口80(nginx-test的80)
protocol: TCP #示Service转发请求到容器的协议是TCP
nodePort: 30080 #指定Service对外开放的节点端口(默认:30000-32767)
externalIPs: #指定暴露的公网IP(此为轻量云服务特殊情况使用)
- 123.124.125.126
验证
# 执行
kubectl apply -f service.yaml
#查看
kubectl get svc -n dev
#NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
#nginx-service NodePort 123.124.125.126 <none> 80:30080/TCP 3m6s
公网访问:http://123.124.125.126:30080/
原文始发于微信公众号(给爷整笑辣):Kubernetes单机版部署
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/206884.html