kubernetes集群部署

kubernetes集群部署

Kubernetes介绍

Kubernetes的概念及用途

  • 是一个开源的Docker容器编排系统
  • 源自google的borg
  • 2015年7月Kubernetes v1.0正式发布
  • 调度计算集群节点,动态管理节点上的作业
  • 使用[labels]和[pods]概念,将应用按逻辑分组
  • 截止到目前为止,最新最稳定的版本是v1.25

主要用途

  • 自动化部署、扩展和管理容器应用
  • 资源调度
  • 部署管理
  • 服务发现
  • 扩容缩容
  • 监控

裸主机的不足

  • 宿主机大公鸡造成宿主机上的机上人容器不可以,无法自行恢复
  • 容器的健康检查不到位,容器在运行,却无法服务
  • 应用程序的部署、回滚、扩缩容困难
  • 数千个容器和端口、难以维护

使用Kubernetes的好处

  • 可以管理大量跨主机的容器
  • 快速部署和扩展应用
  • 无缝对接新的应用功能
  • 节省资源、优化硬件资源的使用

Kubernetes组件

Master组件

  • kube-apiserver
  • Etcd
    • 分布式非关系型数据库
  • Kube-scheduler
  • Kube-controller-manager
    • 节点控制器
    • 复制控制器
    • 端口复制权
    • 服务账户和令牌控制器

Node组件

  • kube-proxy
  • kubelet
  • Dockers Engine

Kuberadm部署工具
是谷歌推出的专门用于快速部署Kubernetes集群的文件
关注的重点是快速安装并将集群运行起来

部署kubernetes集群

关闭交换分区

swapoff -a
vim /etc/fstab    将下列行注释掉就实现了永久关闭
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

配置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=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 clean all

下载组件

yum -y install kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0

导出并在master节点修改配置文件

[root@k8s-master ~]# kubeadm config print init-defaults > init-config.yaml
[root@k8s-master ~]# vim init-config.yaml
localAPIEndpoint:
  advertiseAddress: 192.168.10.101
nodeRegistration:
  name: k8s-master
  imagePullPolicy: IfNotPresent        
imageRepository: registry.aliyuncs.com/google_containers
networking:
  podSubnet: 10.244.0.0/16
//imagePullPolicy:是否在线拉取
    IfNotPresent:如果本地没有则在线拉取
    Never:从不在线拉取
    office:总是在线拉取

列出并下载需要的镜像

kubeadm config images list --config init-config.yaml

在线导入需要的镜像/或者可以先下载好镜像进行导入
kubeadm config images pull --config init-config.yaml

在master节点初始化集群

[root@k8s-master ~]# kubeadm init --config=init-config.yaml
…………
To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.10.101:6443 --token abcdef.0123456789abcdef \
	--discovery-token-ca-cert-hash sha256:fee9e6c2c7eef080874f74a889ec17bfec099b970a437c606d049eb48eb0ea7e 

运行完毕后会在提示信息最后出现一行命令,在其他节点运行加入集群,在master节点运行提示的四行代码

配置网络插件

[root@k8s-master ~]# kubectl apply -f https://docs.projectcalico.org/mainfests/calico.yaml
//从网上下载calica资源清单
[root@k8s-master ~]# kubectl get nodes        //查看所有节点状态,会发现状态都是notready
NAME         STATUS     ROLES                  AGE     VERSION
k8s-master   NotReady   control-plane,master   4m57s   v1.23.0
k8s-node01   NotReady   <none>                 4m26s   v1.23.0
k8s-node02   NotReady   <none>                 4m11s   v1.23.0
[root@k8s-master ~]# kubectl get pod -A       //查看pod信息,发现两个为
NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
kube-system   coredns-6d8c4cb4d-7qn7d              0/1     Pending   0          5m57s
kube-system   coredns-6d8c4cb4d-grjvn              0/1     Pending   0          5m57s
…………
[root@k8s-master ~]# kubectl apply -f calico.yaml        

安装Metrics

[root@k8s-master ~]# wegt https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.6.3/components.yaml
使用在网上下载的配置文件需要修改如下行
- --kubelet-insecure-tls                            //135
image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.6.3        //141
[root@k8s-master ~]# kubectl create -f components.yaml
[root@k8s-master ~]# kubectl top node        //需要上面的配置文件
NAME         CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
k8s-master   134m         6%     1545Mi          40%       
k8s-node01   76m          3%     1019Mi          26%       
k8s-node02   76m          3%     948Mi           24% 
#CPU(cores):毫核
#kubectl top node :查看集群中节点的CPU占用情况

部署dashboard可视化界面

[root@k8s-master ~]# mkdir /opt/k8s/dashboard
[root@k8s-master ~]# cd /opt/k82/dashboard
[root@k8s-master ~]# kubectl create -f .

谷歌内核的浏览器想要访问dashboard需要修改快捷方式,在目标栏后添加参数: --test-type --ignore-certificate-errors

查看端口号
kubectl get svc -n kubernetes-dashboard
NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.103.47.198   <none>        8000/TCP        69m
kubernetes-dashboard        NodePort    10.100.7.9      <none>        443:31245/TCP   69m
查看密钥token
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

访问master主机IP+端口
https://192.168.10.101:31245
选项选择token,在下面输入保存的密钥,点击登录即可

优化命令

[root@k8s-master ~]# vim /root/.bashrc
alias ku='kubectl '
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值