Kubernetes(K8s)
  aAWh5pkINxLK 2023年11月01日 95 0

Kubernetes(K8s)

什么是Kubernetes?

  • 容器化应用提供集群部署和管理的开源工具,由Google研发,在2014开源。
  • Pod:一个pod可以运行多个容器。

Kubernetes 安装

# 前提 安装 docker

# 配置K8s安装源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

# 临时关闭 selinux
setenforce 0

# 安装
yum install -y kubelet kubeadm kubectl
# 由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用以下安装命令
yum install -y --nogpgcheck kubelet kubeadm kubectl
#配置开机自启
systemctl enable kubelet && systemctl start kubelet


# 初始化时错误
[ERROR CRI]: container runtime is not running: output: E0910 18:37:12.496739    2884 remote_runtime.go:925] 
"Status from runtime service failed" err="rpc error: code = Unimplemented desc =unknown service runtime.v1alpha2.RuntimeService"

# 解决
# 1)查看容器配置:CRI、是否被禁用
cat /etc/containerd/config.toml
# 2)移除
rm -fr /etc/containerd/config.toml
# 3)重启容器
systemctl restart containerd
# 4)查看容器状态
systemctl status containerd.service


# 初始化时错误:
Unfortunately, an error has occurred:
	timed out waiting for the condition

This error is likely caused by:
	- The kubelet is not running
	- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)

If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:
	- 'systemctl status kubelet'
	- 'journalctl -xeu kubelet'

Additionally, a control plane component may have crashed or exited when started by the container runtime.
To troubleshoot, list all containers using your preferred container runtimes CLI.
Here is one example how you may list all running Kubernetes containers by using crictl:
	- 'crictl --runtime-endpoint unix:///var/run/containerd/containerd.sock ps -a | grep kube | grep -v pause'
	Once you have found the failing container, you can inspect its logs with:
	- 'crictl --runtime-endpoint unix:///var/run/containerd/containerd.sock logs CONTAINERID'
error execution phase wait-control-plane: couldn't initialize a Kubernetes cluster
To see the stack trace of this error execute with --v=5 or higher



# 解决方案
# 1) 配置docker
cat <<EOF > /etc/docker/daemon.json
{
   "exec-opts": ["native.cgroupdriver=systemd"],
   "registry-mirrors":["https://ud6340vz.mirror.aliyuncs.com"]
}
EOF
# 2) 重启生效 : docker
systemctl daemon-reload
systemctl restart docker
# 3) 重置配置 : kubeadm
kubeadm reset


kubeadm init \
--image-repository=registry.aliyuncs.com/google_containers \
--config /etc/kubernetes/kubeadm-config.yaml

kubeadm init phase preflight --config /etc/kubernetes/kubeadm-config.yaml


hostnamectl set-hostname node1

Kubenetes 组件

kubelet

  • 运行在cluster所有节点上,负责启动POD和容器。

kubeadm

  • 用于初始化cluster

kubectl

  • Kubenetes命令行工具,部署和应用,查看各种资源、创建、删除和更新组件。

Ingress

  • 统一路由

常用命令

# Master --》 Servcie --》 deployment --》 pod --》 容器(Docker)

# 命令空间
kubectl create namespace bpg-dev
kubectl delete namespace bpg-dev

# 查看节点
kubectl get nodes
kubectl get cm -n bpg-uat
kubectl get cm -owide -n bpg-uat -owide
kubectl get svc,pod -owide -n bpg-uat

# 容器
kubectl create 
kubectl get service													#查看
kubectl delete service soul-nginx									# 删除

# 控制器
kubectl create deployment soul-nginx								# 创建
kubectl apply -f deployment.yml
kubectl get deployment/deploy										# 查看
kubectl delete deployment/deploy soul-nginx							# 删除

# pod
kubectl apply -f ./auth-frontend/deployment.yml						# 创建pod
kubectl get pods													# 查看所有的pod
kubectl get pods -n bpg-dev											# 命令空间筛选
kubectl describe pod soul-nginx-d4b56f745-vljz9 -n bpg-uat			# 查看pod详细信息
kubectl delete pod soul-nginx-d4b56f745-vljz9						# 删除pod

# 配置
kubectl get configmaps -n uat-bpg
kubectl describe configmaps bpg-config
kubectl create -f tpi-web-config.yml 

# 日志
# 以文件方式输出
kubectl logs --since=3h ip-emr-web-deployment-b55944f98-848w9 -n bpg > ip-emr-20221128.log

kubectl logs --since-time="2022-12-09T22:00:00+00:00" ip-emr-web-deployment-854c8686dc-vb5k6 -n bpg > ip-emr-20221128.log

Kubenetes 应用

Nginx

# 部署
kubectl create deployment soul-nginx --image=nginx
# 暴露控制器端口
kubectl expose deployment soul-nginx --port=80 --type=NodePOrt
# 查看
kubectl get svc,pod
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2xk0JyO908yA   2024年04月11日   51   0   0 Kubernetes
  az2L92p17wYQ   2024年04月29日   49   0   0 Kubernetes
  2xk0JyO908yA   2024年05月17日   57   0   0 Kubernetes
aAWh5pkINxLK
作者其他文章 更多

2023-11-01

2023-11-01