欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

kubernetes 安装手册 博客分类: kubernetes  

程序员文章站 2024-03-19 10:08:04
...

一、简介

Kubernetes是用于自动化部署,扩容和管理集装箱化应用程序的开源系统。

学习kubernetes技术基础:

必会Docker,会写Dockerfile和Linux日常使用,如果这两个技能不熟,可以先学习这两个技能。

二、安装

a、配置kubernetes yum源:

vim /etc/yum.repos.d/kubernetes.repo 

[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
       https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

b、配置docker-engine源:

vim /etc/yum.repos.d/mritd.repo

[mritdrepo]
name=Mritd Repository
baseurl=https://yum.mritd.me/centos/7/x86_64
enabled=1
gpgcheck=0
gpgkey=https://cdn.mritd.me/keys/rpm.public.key

 

c、安装Docker

 

yum install -y docker-engine
d、启动Docker

 

 

systemctl enable docker 
systemctl start docker 
 e、查看docker info

 

 

docker info

 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.107-RHEL7 (2016-06-09)
Logging Driver: journald
#特别关注这一行,如果是cgroupfs就正常了,不是就重启下电脑
Cgroup Driver: cgroupfs
 f、安装kubernetes

 

 

yum install -y kubeadm kubectl kubelet kubernetes-cni
g、关闭selinx

 

 

setenforce 0
 永久关闭

 

 

vi /etc/selinux/config
 

 

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#     enforcing - SELinux security policy is enforced.

#     permissive - SELinux prints warnings instead of enforcing.

#     disabled - No SELinux policy is loaded.

SELINUX=disabled

# SELINUXTYPE= can take one of three two values:

#     targeted - Targeted processes are protected,

#     minimum - Modification of targeted policy. Only selected processes are protected.

#     mls - Multi Level Security protection.

SELINUXTYPE=targeted

h、关闭防火墙

 

systemctl disable firewalld
systemctl stop firewalld
i、修改root目录下的.bathrc文件

 

# .bashrc

# User specific aliases and functions

 

alias rm='rm -i'

alias cp='cp -i'

alias mv='mv -i'

 

# Source global definitions

if [ -f /etc/bashrc ]; then

. /etc/bashrc

fi

export KUBECONFIG=/etc/kubernetes/admin.conf

 

j、添加两条开机启动命令
vi /etc/rc.d/rc.local

touch /var/lock/subsys/local

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables

 

设置文件开机启动

 chmod +x /etc/rc.d/rc.local

 

k、重启电脑

 

reboot
三、初始化kubernater

 

a、修改启动参数:

vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

[Service]

Environment="KUBELET_KUBECONFIG_ARGS=--kubeconfig=/etc/kubernetes/kubelet.conf --require-kubeconfig=true"

Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true"

Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin"

Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.local"

Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt"

Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=cgroupfs"

# 1.9 后加下面这行

Environment="KUBELET_EXTRA_ARGS=--v=2 --fail-swap-on=false --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0"

 

ExecStart=

ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CGROUP_ARGS $KUBELET_EXTRA_ARGS

 

b、初始化kubernetes

  1.9 以上需要关闭swap,使用命令  swapoff -a

/**k8s 下载国内镜像*/

export KUBE_REPO_PREFIX=registry.cn-hangzhou.aliyuncs.com/google-containers
 export KUBE_HYPERKUBE_IMAGE=registry.cn-hangzhou.aliyuncs.com/google-containers/hyperkube-amd64 
 export  KUBE_DISCOVERY_IMAGE=registry.cn-hangzhou.aliyuncs.com/google-containers/kube-discovery-amd64
export KUBE_ETCD_IMAGE=registry.cn-hangzhou.aliyuncs.com/google-containers/etcd-amd64

 

 

kubeadm init --kubernetes-version=v1.7.5
 c、启动kubernetes

 

systemctl start kubelet
systemctl enable kubelet

 

d、让Master节点也成为工作节点

kubectl taint nodes --all node-role.kubernetes.io/master-

e、安装 kubernets 网络

kubectl apply -f https://git.io/weave-kube-1.6

f、 然后就等待b步的初始化工作完成,可以使用命令查看kuberlet状态

kubectl get pods --all-namespaces
kubectl get nodes
kubectl get all

 

 四、helloword程序

准备文件 hello.yaml

```apiVersion: v1

kind: Pod

metadata:

  name: nginx

  labels:

     app: nginx    

spec:

     containers:

        - name: nginx

          image: nginx

          imagePullPolicy: IfNotPresent

          ports:

          - containerPort: 80

     restartPolicy: Always

---

apiVersion: v1

kind: Service

metadata:

  name: nginx-service

spec:

  type: NodePort

  sessionAffinity: ClientIP

  selector:

    app: nginx

  ports:

    - port: 80

      nodePort: 30080

```

启动helloword.yaml

kubelet create -f hello.yaml

 

启动完成后,可访问http://linuxip:30080/  访问

kubernetes 常用命令:

kubectl get pods --all-namespaces
kubectl get nodes
kubectl get all
kubectl get pod

kubectl create -f hello.yaml