Kubernetes-Kubeadm部署集群

1、组件

1)master组件

apiserver: 集群统一入口,以restful方式,交给etcd存储
scheduler:节点调度,选择node节点应用部署
controller-manager:处理集群中常规后台任务,一个资源对应一个控制器
etcd:存储系统, 用于保存集群相关的数据 

2)node组件

kubelet:master派到node节点代表,管理本机容器
kube-proxy:提供网络代理,负载均衡等操作 

2、核心概念

1)、Pod
      *  最小部署单元
      *  一组容器的集合
      *  共享网络
      *  生命周期是短暂的 
2)、controller
      *  确保预期的pod副本数量
      *  无状态应用部署
      *  有状态应用部署 
      *  确保所有的node运行同一个pod
      *  一次性任务和定时任务 
3)、service
      *  定义一组pod的访问规则 

3、集群部署规划

1)、关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2)、关闭selinux

setenforce 0 
sed -ri '/^SELINUX=/cSELINUX=disabled/' /etc/selinux/config

3)、关闭swap

swapoff -a        #临时
sed -ri 's/.swap./#&/' /etc/fstab     #永久

4)、规划主机名

5)、在master中添加hosts主机信息

6)、将桥接的IPV4流量传递到iptables的链

cat >> /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system 生效

7)、时间同步

ntpdate ntp.aliyun.com

4、安装docker、kubeadm,kubelet,kubectl

Docker:

yum -y install docker

cat /etc/docker/daemon.json <<-'EOF'
{ 
   "registry-mirrors": ["https://kzttrsz7.mirror.aliyuncs.com"]
}
EOF

Kubernetes:

vim /etc/yum.repos.d/kubernets.repo
[kubernetes]
name=kubernetes
baseurl=https://mirrors.tuna.tsinghua.edu.cn/kubernetes/yum/repos/kubernetes-el7-$basearch
enabled=1
gpgcheck=0
yum clean all
yum makecache
yum -y install kubelet kubeadm kubectl
systemctl enable kubelet

5、Master节点部署Kubernetes

1)、先进行初始化

$ kubeadm init \
--apiserver-advertise-address=10.0.0.101 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.20.4 \
--service-cidr=172.15.0.0/16 \
--pod-network-cidr=172.16.0.0/24 

2)、根据提示信息进行操作

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

6、部署CNI网络插件

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 
或者将文件下载到本地 -f kube-flannel.yml

kubectl get pods -n kube-system

文件下载:https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

7、node节点加入Kubertes集群

node节点都需要加入

向集群添加新节点,执行kubeadm init输出的kubeadm join命令:

kubeadm join 10.0.0.1:6443 --token ukgzfa.m8m191o7hlsv0owt \
     --discovery-token-ca-cert-hash sha256:b370b4e8a784ad6cd04ed70bda0087dafe847e2225dc84f4f0b0ec9438681dcf

默认token有效期为24小时,过期之后,该token不可用,就需要重新创建token

kubeadm token create --print-join-command

8、测试集群

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc

基础命令

kubectl语法格式:

kubectl [command] [TYPE] [NAME] [flages]
kubectl create deployment nginx --image=nginx                           #创建nginx容器
kubectl expose deployment nginx --port=80 --type=NodePort    #暴露nginx的端口
kubectl get pod,svc            #查看所有的容器
kubectl apply -f *.yaml       #通过yaml文件创建Pod

Yaml文件编排

方法一:
使用 kubectl create 命令生成yaml文件

kubectl create deployment web --image=nginx -o yaml --dry-run > nginx1.yaml

方法二:

使用 kubectl get 命令导出yaml文件,新版中--export已经去除

kubectl get deploy nginx -o yaml --export > nginx2.yaml
kubectl get deploy nginx -o yaml  > nginx2.yaml
posted @ 2021-08-30 21:51  Cai_HL  阅读(123)  评论(0编辑  收藏  举报
>