kubernetes从入门到放弃

第一章: 入门&测试环境部署

2019-11-10  本文已影响0人  Starlightskm

第一章: 入门

大纲

github地址:https://github.com/kubernetes/kubernetes/

背景知识

微服务 VS 单体应用程序
服务注册&服务发现&服务总线

服务编排自动编排

容器编排

提供的功能和特点

容器编排系统

Kubernetes运行时的物理结构

image.png

生产环境至少要有三个master左右,worker需要三个以上。

image.png

Kubernetes Master的组成

image.png

Kubernetes Node组成

image.png

Addons其他组件

复习:
NameSpace六要素: PID,NETWORK,UTS,USER,Mount,IPC
jion网络模型依赖:NETWORK,IPC,UTS

小结

image.png

k8s的对象

对象式编程语言:
- 以数据为中心,代码服务于数据
- 数据: 对象
- 代码:方法
- class: 类,
- 属性,方法

基础对象:

控制器对象: 控制POD的多退少补,健康状态等

LNMT项目访问流程实例:

image.png

综上所述,K8S 的网络就分为如下

image.png

K8S的部署

部署要点

部署工具

常用的部署环境:

- IAAS公有云部署环境: aws,aliyun

- IAAS私有云或公有云环境: Openstack或者Vsphere

- Baremetal环境: 物理服务器或者独立的虚拟机等

常用的部署工具

- kubeadm

- kops

- kubespray

- kontena pharos

其他二次封装的常用发行版

- Rancener

- Tectonic

- Oenshift

k8s的部署方式

image.png

部署K8S集群

主机名 IP 角色 部署软件
centos7-node1 192.168.56.11 Master docker,kubeadm,kubelet,kubectl,etcd,kube-apiserver,kube-scheduler,kube-control-manager
centos7-node2 192.168.56.12 Node docker,kubeadm,kubelet,kubectl,pause,kube-proxy
centos7-node3 192.168.56.13 Node docker,kubeadm,kubelet,kubectl,pause,kube-proxy
centos7-node4 192.168.56.14 Node docker,kubeadm,kubelet,kubectl,pause,kube-proxy

系统初始化:

1. NTP时间服务器,确保时间同步


$ yum install chrony -y && systemctl enable chronyd && systemctl start chronyd

$ timedatectl set-timezone Asia/Shanghai && timedatectl set-ntp yes

2. 主机名解析


$  cat /etc/hosts

192.168.56.11 centos7-node1

192.168.56.12 centos7-node2

192.168.56.13 centos7-node3

192.168.56.14 centos7-node4

3. 关闭个节点的iptables& firewalld服务,selinux服务


$ cat /etc/selinux/config 

SELINUX=disabled

$ systemctl stop firewalld && systemctldisable firewalld

4. 禁用swap


$ sed -i '/swap/s/^\(.*\)$/#\1/g' /etc/fstab

$ swapoff -a

5. 各节点载入ipvs模块


$ vim /etc/sysconfig/modules/ipvs.modules

#!/bin/bash

ipvs_mods_dir="/usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs"

for mod in $(ls $ipvs_mods_dir | grep -o "^[^.]*"); do

    /sbin/modinfo -F filename $mod &> /dev/null

    if [ $? -eq 0 ]; then

        /sbin/modprobe $mod

    fi

done

修改文件权限,并手动为当前系统加载内核模块:

$ chmod +x /etc/sysconfig/modules/ipvs.modules  && bash /etc/sysconfig/modules/ipvs.modules  

6. yum仓库&基础软件安装


$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker.repo

$ cat >  /etc/yum.repos.d/kubernetes.repo <<EOF

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

gpgcheck=1

gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

enabled=1

EOF

7. 系统参数


$ 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 -p /etc/sysctl.d/k8s.conf 

8. 安装docker&&Kubernetes

Master节点的安装


## Master节点

$ yum -y install docker-ce

$ mkdir -p /etc/docker

$ tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://0b8hhs68.mirror.aliyuncs.com"],

   "exec-opts": ["native.cgroupdriver=cgroupfs"]

}

EOF

$ systemctl daemon-reload && systemctl restart docker  && systemctl enable docker

# 拉取需要的镜像

$ docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.16.0

$ docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.16.0

$ docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.16.0

$ docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.16.0

$ docker pull mirrorgooglecontainers/etcd-amd64:3.3.15-0

$ docker pull mirrorgooglecontainers/pause:3.1

$ docker pull coredns/coredns:1.6.2

$ docker tag mirrorgooglecontainers/kube-apiserver-amd64:v1.16.0 k8s.gcr.io/kube-apiserver:v1.16.0

$ docker tag mirrorgooglecontainers/kube-controller-manager-amd64:v1.16.0 k8s.gcr.io/kube-controller-manager:v1.16.0

$ docker tag mirrorgooglecontainers/kube-scheduler-amd64:v1.16.0 k8s.gcr.io/kube-scheduler:v1.16.0

$ docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.16.0 k8s.gcr.io/kube-proxy:v1.16.0

$ docker tag mirrorgooglecontainers/etcd-amd64:3.3.15-0 k8s.gcr.io/etcd:3.3.15-0

$ docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1

$ docker tag coredns/coredns:1.6.2 k8s.gcr.io/coredns:1.6.2

$ docker rmi mirrorgooglecontainers/kube-apiserver-amd64:v1.16.0

$ docker rmi mirrorgooglecontainers/kube-controller-manager-amd64:v1.16.0

$ docker rmi mirrorgooglecontainers/etcd-amd64:3.3.15-0

$ docker rmi mirrorgooglecontainers/kube-scheduler-amd64:v1.16.0

$ docker rmi mirrorgooglecontainers/kube-proxy-amd64:v1.16.0

$ docker rmi mirrorgooglecontainers/pause:3.1

$ docker rmi coredns/coredns:1.6.2

# 常规操作

$ yum -y install kubelet-1.16.0-0 kubeadm-1.16.0-0 kubectl-1.16.0-0

$ systemctl start kubelet && systemctl enable kubelet

$ kubeadm config print init-defaults > kubeadm.yaml

$ vim kubeadm.yaml

apiVersion: kubeadm.k8s.io/v1beta2

bootstrapTokens:

- groups:

  - system:bootstrappers:kubeadm:default-node-token

  token: abcdef.0123456789abcdef

  ttl: 24h0m0s

  usages:

  - signing

  - authentication

kind: InitConfiguration

localAPIEndpoint:

  advertiseAddress: 192.168.56.11 ##修改

kubernetesVersion: v1.16.0

networking:

  dnsDomain: cluster.local

  serviceSubnet: 10.96.0.0/12

scheduler: {}

networking:

  podSubnet: 10.244.0.0/16 #添加pod网络

$ kubeadm init --config kubeadm.yaml   #初始化

$ mkdir -p $HOME/.kube

$ cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

$ chown $(id -u):$(id -g) $HOME/.kube/config

$ kubectl get cs

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

$  kubectl get pods -n kube-system   #系统容器运行状态查看

$  kubectl get nodes

NAME STATUS ROLES AGE VERSION

centos7-node1 Ready master 7m8s v1.16.0

Node节点的安装


## Node节点

$ yum -y install docker-ce

$ mkdir -p /etc/docker

$ tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://0b8hhs68.mirror.aliyuncs.com"]

}

EOF

$ systemctl daemon-reload

$ systemctl restart docker

$ yum -y install kubelet-1.16.0-0 kubeadm-1.16.0-0

$ systemctl start kubelet && systemctl enable kubelet 

$ docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.16.0

$ docker pull mirrorgooglecontainers/pause:3.1

$ docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.16.0 k8s.gcr.io/kube-proxy:v1.16.0

$ docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1

$ docker rmi mirrorgooglecontainers/kube-proxy-amd64:v1.16.0

$ docker rmi mirrorgooglecontainers/pause:3.1

$  kubeadm join 192.168.56.11:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:85969e88263597649f29e75674694d4c0464e64b8e2505d10259ea986428db07    #加入节点

上一篇 下一篇

猜你喜欢

热点阅读