docker-compose安装k8s-arm版本

kubernetes组成

Kubernetes节点有运行应用容器必备的服务,而这些都是受Master的控制。每个节点上都要运行Docker。Docker来负责所有具体的映像下载和容器运行。

Kubernetes主要由以下几个核心组件组成:

etcd:保存了整个集群的状态;

apiserver:提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制

controller manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;

scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;

kubelet:负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;

Container runtime:负责镜像管理以及Pod和容器的真正运行(CRI);

kube-proxy:负责为Service提供cluster内部的服务发现和负载均衡;

除了核心组件,还有一些推荐的Add-ons:

kube-dns:负责为整个集群提供DNS服务

Ingress Controller:为服务提供外网入口

Heapster:提供资源监控

Dashboard:提供GUI

Federation:提供跨可用区的集群

Fluentd-elasticsearch:提供集群日志采集、存储与查询

Kubernets架构图及组件

禁用swap,关闭防火墙

swapoff -a //同时将/etc/fstab文件的swap行用#注释(永久禁用)
sudo ufw disable

关闭SELinux

临时关闭:setenforce 0
永久关闭:修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器

修改内核参数模块

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

//执行以下命令使之生效
sysctl --system
# 加载内核模块
modprobe br_netfilter
lsmod | grep br_netfilter

添加GPG Key

curl -s https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | apt-key add -
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

配置apt源

add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" >>/etc/apt/sources.list.d/kubernetes.list
sudo apt update

安装kubelet、kubeadm、kubectl

sudo apt update
sudo apt install -y kubelet=1.15.2-00 kubeadm=1.15.2-00 kubectl=1.15.2-00

查看k8s需要的镜像资源(kubeadm config images pull)

kubeadm config  images  list

结果如下

k8s.gcr.io/kube-apiserver:v1.15.2
k8s.gcr.io/kube-controller-manager:v1.15.2
k8s.gcr.io/kube-scheduler:v1.15.2
k8s.gcr.io/kube-proxy:v1.15.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1

从国内代理下载镜像,打tag

docker pull registry.cn-hangzhou.aliyuncs.com/gg-gcr-io/kube-apiserver:v1.15.2

docker pull registry.cn-hangzhou.aliyuncs.com/gg-gcr-io/kube-controller-manager:v1.15.2

docker pull registry.cn-hangzhou.aliyuncs.com/gg-gcr-io/kube-scheduler:v1.15.2

docker pull registry.cn-hangzhou.aliyuncs.com/gg-gcr-io/kube-proxy:v1.15.2

docker pull registry.cn-hangzhou.aliyuncs.com/kuberimages/pause:3.1

docker pull registry.cn-hangzhou.aliyuncs.com/kuberimages/etcd:3.3.10

docker pull registry.cn-hangzhou.aliyuncs.com/kuberimages/coredns:1.3.1
docker tag registry.cn-hangzhou.aliyuncs.com/gg-gcr-io/kube-apiserver:v1.15.2 k8s.gcr.io/kube-apiserver:v1.15.2

docker tag registry.cn-hangzhou.aliyuncs.com/gg-gcr-io/kube-controller-manager:v1.15.2 k8s.gcr.io/kube-controller-manager:v1.15.2

docker tag registry.cn-hangzhou.aliyuncs.com/gg-gcr-io/kube-scheduler:v1.15.2 k8s.gcr.io/kube-scheduler:v1.15.2

docker tag registry.cn-hangzhou.aliyuncs.com/gg-gcr-io/kube-proxy:v1.15.2 k8s.gcr.io/kube-proxy:v1.15.2

docker tag registry.cn-hangzhou.aliyuncs.com/kuberimages/pause:3.1 k8s.gcr.io/pause:3.1

docker tag registry.cn-hangzhou.aliyuncs.com/kuberimages/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10

docker tag registry.cn-hangzhou.aliyuncs.com/kuberimages/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

 

初始化kubeadm

kubeadm init --apiserver-advertise-address 10.211.55.4  --pod-network-cidr=10.244.0.0/16

配置

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

安装Pod Network(flannel)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

检查pod状态,确认成功

kubectl get pods -n kube-system

结果

NAME                             READY   STATUS    RESTARTS   AGE
coredns-5c98db65d4-8vb5h         1/1     Running   0          22m
coredns-5c98db65d4-dwqf7         1/1     Running   0          22m
etcd-ubuntu                      1/1     Running   0          21m
kube-apiserver-ubuntu            1/1     Running   0          22m
kube-controller-manager-ubuntu   1/1     Running   0          22m
kube-flannel-ds-amd64-kcngn      1/1     Running   0          3m22s
kube-proxy-jx62n                 1/1     Running   0          22m
kube-scheduler-ubuntu            1/1     Running   0          22m

部署一个nginx

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort

设置master部署pod和禁止部署pod命令

kubectl taint nodes --all node-role.kubernetes.io/master- kubectl taint nodes k8s node-role.kubernetes.io/master=true:NoSchedule

 

 

 

docker-compose单机编排docker容器及二进制安装

搭建单节点k8s环境

ubuntu安装k8指南

 

posted @ 2022-07-23 17:59  白玉神驹  阅读(481)  评论(0)    收藏  举报