安装kubernetes-kubeadm

简介

组成结构
在这里插入图片描述
组成结构详解

https://k8smeetup.github.io/docs/admin/kube-apiserver/
kube-apiserver:Kubernetes API server 为 api 对象验证并配置数据,包括 pods、
services、 replicationcontrollers 和其它 api 对象,API Server 提供 REST 操作和到
集群共享状态的前端,所有其他组件通过它进行交互。

https://k8smeetup.github.io/docs/admin/kube-scheduler/
kube-scheduler 是一个拥有丰富策略、能够感知拓扑变化、支持特定负载的功能
组件,它对集群的可用性、性能表现以及容量都影响巨大。scheduler 需要考虑独
立的和集体的资源需求、服务质量需求、硬件/软件/策略限制、亲和与反亲和规
范、数据位置、内部负载接口、截止时间等等。如有必要,特定的负载需求可以
通过 API 暴露出来。

https://k8smeetup.github.io/docs/admin/kube-controller-manager/
kube-controller-manager:Controller Manager 作为集群内部的管理控制中心,负
责集群内的 Node、Pod 副本、服务端点(Endpoint)、命名空间(Namespace)、
服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个 Node
意外宕机时,Controller Manager 会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。

https://k8smeetup.github.io/docs/admin/kube-proxy/
kube-proxy:Kubernetes 网络代理运行在 node 上,它反映了 node 上
Kubernetes API 中定义的服务,并可以通过一组后端进行简单的 TCP、UDP 流转
发或循环模式(round robin))的 TCP、UDP 转发,用户必须使用 apiserver API 创
建一个服务来配置代理,其实就是 kube-proxy 通过在主机上维护网络规则并执行
连接转发来实现 Kubernetes 服务访问。

https://k8smeetup.github.io/docs/admin/kubelet/
kubelet : 是主要的节点代理,它会监视已分配给节点的 pod,具体功能如
下:
向 master 汇报 node 节点的状态信息
接受指令并在 Pod 中创建 docker 容器
准备 Pod 所需的数据卷
返回 pod 的运行状态
在 node 节点执行容器健康检查

https://github.com/etcd-io/etcd
etcd:
etcd 是CoreOS公司开发目前是Kubernetes默认使用的key-value数据存储系统,
用于保存所有集群数据,支持分布式集群功能,生产环境使用时需要为 etcd 数
据提供定期备份机制。

kubeadm安装方式

kubernetes安装

注意事项
禁用 swap,selinux,iptables
要求2个cpu内存要大
vim /etc/fstab 注释掉swap
systemctl status firewalld

hostname不能重复

192.168.41.201 master
192.168.41.202 node1

1.安装docker环境 
可按阿里云配置来
# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装 Docker-CE
sudo apt-get -y update
apt-cache madison docker-ce docker-ce-cli    #查看合适的版本
#sudo apt-get -y install docker-ce
apt install  docker-ce=5:18.09.9~3-0~ubuntu-bionic  docker-ce-cli=5:18.09.9~3-0~ubuntu-bionic

2.配置docker加速器

sudo mkdir -p /etc/docker

sudo systemctl daemon-reload
sudo systemctl restart docker

3.配置kubernetes

apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF  
apt-get update
apt-get install -y kubelet kubeadm kubectl

#apt-get purge  kubelet kubeadm kubectl  卸载
#apt-cache  madison   kubelet kubeadm kubectl
#apt-get install -y kubelet=1.15.4-00 kubeadm=1.15.4-00 kubectl=1.15.4-00 指定版本安装 


4.初始化master节点

systemctl start kubelet && systemctl enable kubelet
kubeadm version #查看版本
kubeadm config images list --kubernetes-version v1.16.0 #查看安装指定版本 k8s需要的镜像有哪些

官方
docker pull k8s.gcr.io/kube-apiserver:v1.16.0
docker pull k8s.gcr.io/kube-controller-manager:v1.16.0
docker pull k8s.gcr.io/kube-scheduler:v1.16.0
docker pull k8s.gcr.io/kube-proxy:v1.16.0
docker pull k8s.gcr.io/pause:3.1
docker pull k8s.gcr.io/etcd:3.3.15-0
docker pull k8s.gcr.io/coredns:1.6.2

阿里云
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.16.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.16.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.16.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.16.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.15-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.2

开始初始化
流程解析:https://k8smeetup.github.io/docs/reference/setup-tools/kubeadm/kubeadm-
init/#init-workflow

kubeadm init --apiserver-advertise-address=192.168.41.201 --apiserver-bind-port=6443 --kubernetes-version=v1.16.0 --pod-network-cidr=10.10.0.0/16 --service-cidr=10.20.0.0/16 --service-dns-domain=linuxtest.local --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --ignore-preflight-errors=swap --token-ttl=0


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

5.常用指令

kubectl get nodes   查看node
kubectl get pods --all-namespaces  查看pod
kubeadm  reset  进行重置

6.网络插件 flannel

https://github.com/coreos/flannel/
下载 https://github.com/coreos/flannel/releases
docker load -i flannel-v0.11.0-linux-amd64.tar.gz
#docker import flannel-v0.11.0-linux-amd64.tar.gz
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
可以修改为本地的hubar
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XIkEWNjD-1577432824054)(2B799B726D894E1686B6B978F9EA28C7)]

kubectl apply -f kube-flannel.yml

kubectl get pods --all-namespaces

7.添加节点
这句话是创建master的时候自动打印的一句话。

kubeadm join 192.168.41.201:6443 --token ypam3v.x2bvebxoyxjrvmlb \
    --discovery-token-ca-cert-hash sha256:8d61ea58334e84bbb10376f90b4af64c2720380760289ccb19860dba8d756259

8.创建测试

kubectl run net-test1 --image=alpine --replicas=2 sleep 360000  
kubectl get pods  
kubectl get pods -o wide 
kubectl exec -it net-test1-5fcc69db59-65dgf sh

开启
vim /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0
net.ipv4.ip_forward = 1


要想两个node之间互相ping通
vim kube-flannel.yml
  net-conf.json: |
    {
      "Network": "10.10.0.0/16",    #修改这里呢!
      "Backend": {
        "Type": "vxlan"
      }
    }

修改网段
kubectl delete -f kube-flannel.yml
kubectl apply -f kube-flannel.yml

之后node会产生
[root@node1 ~]$cat /run/flannel/subnet.env 
FLANNEL_NETWORK=10.10.0.0/16
FLANNEL_SUBNET=10.10.1.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true


把这个删掉
kubectl get deployment
kubectl delete deployment net-test1


10.实现升级kubeadm

验证当 s k8s  前版本
kubeadm version
apt-cache madison kubeadm #查看 k8s 版本列表
apt-get install kubeadm=1.13.6-00 #安装具体版本
kubeadm version #验证版本
kubeadm upgrade --help  #升级命令使用帮助 
kubeadm upgrade plan #查看升级计划
kubeadm upgrade apply v1.13.6  #升级master
kubeadm upgrade node config --kubelet-version 1.13.6  #升级各node节点
apt-get install kubelet=1.13.6-00 #在node节点运行.

错误解决

1.今天在Kubernetes的从节点上运行命令【kubectl】出现了如下错误

[root@k8snode1 kubernetes]# kubectl get pod
The connection to the server localhost:8080 was refused - did you specify the right host or port?
出现这个问题的原因是kubectl命令需要使用kubernetes-admin来运行,解决方法如下,将主节点中的【/etc/kubernetes/admin.conf】文件拷贝到从节点相同目录下,然后配置环境变量:

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
立即生效

source ~/.bash_profile
接着再运行kubectl命令就OK了

get pod
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值