Kubernetes 基于kubeadm安装及入门操作

k8s的相关组件
1、apiserver:负责对个资源对象的增删查改
2、控制器管理:负责对K8S集群内各资源对象的管理,当某个node节点down掉能及时发现并自动修复
3、kubelet:运行在集群中的子node节点上,每个 Kubelet 进程会在 API Server 上注册所在Node节点的信息,定期向 Master 节点汇报该节点的资源使用情况
4、etcd:他是一个存储器,保存网络配置和资源对象状态信息,只有API Server才直接操作etcd
5、调度器:针对新增pod,在集群中找到和是的node节点,并将pod调度到node节点上
6、kube-proxy:存在于各个node节点上,负责为Service提供cluster内部的服务发现和负载均衡,会定时从etcd服务获取到service信息,维护网络规则和四层负载均衡工作,kube-proxy默认使用的是iptables模式为提升性能引入了IPVS模式
7、flannel:一个网络插件,负责对接容器虚拟IP地址的管理及分配
8、容器引擎:负责容器的运行,如docker引擎

操作的对象
pod,service,replicaset,deployment,statefulet,daemonset,job,cronjob
服务发现及均衡:Service,Ingress
配置与存储:Volume,CSI

安装步骤:
master
1、配置好yum.repo.d的kubernetes.repo docker-ce.repo的yum源,以及包检查rpm-package-key.gpg
kubernetes.repo的yum源
cat /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

docker-ce.repo的yum源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install docker-ce kubelet kubeadm kubectl

2、修改docker.service文件,为启动docker去加载相关的镜像文件,并启动docker
vim /usr/lib/systemd/system/docker.service
Environment="HTTPS_PROXY=http://www.ik8s.io:10080"
Environment="NO_PROXY=127.0.0.0/8,172.20.0.0/16"
systemctl daemon-reload
systemctl start docker 启动docker
docker info 查看docker的配置信息

3、docker启动会自动生成iptables规则,要打开相应的规则,默认为1
cat /proc/sys/net/bridge/bridge-nf-call-iptables ----->1
cat /proc/sys/net/bridge/bridge-nf-call-ip6tables ----->1

4、配置kubelet docker自启动
rpm -ql kubelet 查看kubelet安装后生成的文件列表
systemctl enable kubelet docker 设置开机自启

5、修改kubelet配置文件参数,使其忽略swap的报错
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS=“--fail-swap-on=false”

6、初始化
kubeadm init --kubernetes-version=v1.23.3 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --image-repository registry.aliyuncs.com/google_containers --ignore-preflight-errors=Swap

7、安装完成会提示以下信息
1)mkdir -p $HOME/ .kube
2)sudo cp -i /etc/kubernetes/admin.conf $HOME/ .kube/config
3)sudo chown $(id -u):$(id -g) $HOME/ .kube/config
4)kubeadm join的命令

8、flannel安装(网络组件)
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml 执行此命令会拖取相应镜像

9、kubectl 的命令查询使用
1)kubectl get cs 查询个组件的健康状况
2)kubectl get nodes 查看节点信息
3)kubectl get pods -n kube-system 查看指定名称空间下的组件运行情况
4)kubectl get ns 查看名称空间
5)kubectl get pods -n kube-system -o wide 查看指定名称空间下的组件运行情况及node节点的ip等相关信息

nodes
nodes的安装同于master的安装的1,2,3,4,5
6、kubeadm join 加入到kubernetes集群
kubeadm join **** --ignore-preflight-errors=Swap 加上忽略swap的报错信息

k8s的入门操作
pod由deployment控制器来管理,deployment控制器暴露的端口可以统一通过service来访问
1、 kubectl describe pods -n kube-system coredns-5bfd685c78-mmjxc 查看容器的日志信息
2、kubectl create deployment nginx-deploy --image=nginx 创建deploy控制器 控制器来面向pod
3、 kubectl expose deploy nginx-deploy --name=nginx --port=8081 --target-port=80 --type=NodePort --protocol=TCP 将控制器名为nginx-deploy 定义一类服务名为nginx,并将端口暴露出去
- -port指定集群内部访问的端口
- -target-port指定容器内跑服务的端口
- -type=NodePort 指定类型 集群外部访问
4、kubectl get svc 查看服务集群地址及端口
5、kubectl get svc -n kube-system 查看dns的ip
6、kubectl describe svc nginx 查看nginx服务的label、调度器、末端地址
7、kubectl describe deployment nginx-deploy 查看控制器的label、调度器
8、kubectl scale --replicas=3 deployment nginx-deploy 扩充减少pod控制器的规模
9、kubectl set image deployment nginx-deploy nginx=nginx:laste 更新控制器为nginx-deploy容器名为nginx的镜像
10、 kubectl rollout status deployment nginx-deploy 实时查看控制器nginx-deploy的更新升级过程
11、kubectl rollout undo deployment nginx-deploy 回滚到上一个版本
12、kubectl edit svc nginx 修改 type: NodePort 改为NodePort后自动生成映射,实现外部对其访问
13、 kubectl get pods -n mysql -o wide 查看名字空间为mysql的pod运行在那个node节点

 

参考文献:基于KubeKey安装,https://kubesphere.com.cn/docs/v3.3/quick-start/all-in-one-on-linux/

posted @ 2022-01-25 11:47  Me-lihu  阅读(57)  评论(0编辑  收藏  举报