一、简介
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-engined、启动Docker
systemctl enable docker systemctl start dockere、查看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: cgroupfsf、安装kubernetes
yum install -y kubeadm kubectl kubelet kubernetes-cnig、关闭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 firewalldi、修改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.5c、启动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