K8S 单机版安装
安装环境
Centos 7.3
1.初始化环境
1.1 设置关闭防火墙及 SELINUX
#systemctl stop firewalld && systemctl disable firewalld
#setenforce 0
#vi /etc/selinux/config
设置 selinux=disable
1.2 关闭 Swap
#swapoff -a && sysctl -w vm.swappiness=0
1.3、设置 Docker 所需参数
#cat << EOF | tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
使参数生效
#sysctl -p /etc/sysctl.d/k8s.conf
2.安装 etcd 和 kubernetes
安装 etcd 和 kubernetes 软件(会自动安装 docker)
安装流程需切换成 root 用户
# yum install -y etcd kubernetes
修改 docker 的配置文件
#vim /etc/sysconfig/docker
修改 OPTIONS 的配置为:
OPTIONS='--selinux-enabled=false --insecure-registry gcr.io --log-driver=journald'
Kubernetes apiservce 配置文件
#vim /etc/kubernetes/apiserver
把–admission_control 参数钟的 ServiceAccount 删除
启动服务
# systemctl start etcd
# systemctl start docker
# systemctl start kube-apiserver
# systemctl start kube-controller-manager
# systemctl start kube-scheduler
# systemctl start kubelet
# systemctl start kube-proxy
3.安装过程中遇到的问题及解决办法
3.1 安装时提示没用可用的软件包
此时表明想要安装的软件已不在 centos 官方 yum 源里面
解决方法:安装 epel
去 epel 官网: http://fedoraproject.org/wiki/EPEL 下载
直接贴出下载的地址 http://dl.fedoraproject.org/pub/在这里面找;
我
:
https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.r
pm
下载后安装 rpm -ivh epel-release-7-9.noarch.rpm
centos7
64
位
,
下
载
的
目
录
为
参考博客:https://www.cnblogs.com/jackylee92/p/6371366.html
3.2.如果安装完 epel 后仍然报这样的提示,可以更改下 yum
源,此处使用的是阿里云的 yum 源
阿里云 yum 源:
wget
-O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
参考博客原文:https://blog.csdn.net/qingfenggege/article/details/80394564
3.3 执行 systemctl start docker,启动 docker 出现错误
尝试了网上很多方法,均不奏效,目前解决方法是将 docker 卸载了重新安装
案例
部署 nginx 服务
$ kubectl run my-nginx --image=nginx --port=80
$ kubectl get pod # 查看 pod
创建 gcr.io/google_containers/pause-amd64:3.0 镜像
#docker pull googlecontainer/pause-amd64:3.0
# docker tag googlecontainer/pause-amd64:3.0 gcr.io/google_containers/pause-amd64:3.0
kubernets 指令
# 查看版本
$ kubectl
version
# 显示集群信息
$ kubectl cluster-info
# 查看集群中有几个 Node
$ kubectl get nodes
# 运行一个镜像
$ kubectl run my-nginx --image=nginx --replicas=2 --port=80
deployment "my-nginx" created
# 查看 pod
$ kubectl get pods
# 查看服务详情信息
#kubectl describe pod my-nginx-379829228-bbhwj
# 查看已部署
$ kubectl get deployments
# 删除 pod
# 再次查看 pod,发现由于 replicas 机制,pod 又生成一个新的
原来的 pod 为 my-nginx-379829228-bbhwj
新的 pod 为 my-nginx-379829228-tj89c
$ kubectl get pods
# 删除部署的 my-nginx 服务。彻底删除 pod
#kubectl delete deployment my-nginx
k8s 创建资源的两种方式
1.用 kubectl 命令直接创建
kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2
在命令行中通过参数指定资源的属性
2.通过配置文件和 kubectl apply 创建
要完成前面同样的工作,可执行命令:
[root@k8s-master k8s]# kubectl apply -f nginx.yaml
deployment.extensions/nginx-deployment configured
3.nginx.yml 的内容说明
apiVersion: extensions/v1beta1 #api 的版本
#资源的类型
kind: Deployment
metadata:
#资源的元数据
name: nginx-deployment #资源的名称
#资源的说明
spec:
replicas: 2
template:
metadata:
labels:
#副本 2 个,缺省为 1
#pod 模板
#pod 元数据
#标签
app: web_server
#标签选择器
spec:
containers:
- name: nginx
image: nginx:1.79
资源的属性写在配置文件中,文件格式为 YAML。
这种配置文件对格式的要求极为严格,缩进不能错,空格不能少打,vim 编辑器的高亮提
示会对我们写配置文件有帮助,如果语法错误会检测到。
4.这两种方式进行比较
基于命令的方式:
简单直观快捷,上手快。
适合临时测试或实验。
基于配置文件的方式:
配置文件描述了 What,即应用最终要达到的状态。
配置文件提供了创建资源的模板,能够重复部署。
可以像管理代码一样管理部署。
适合正式的、跨环境的、规模化部署。
这种方式要求熟悉配置文件的语法,有一定难度。
kubectl apply 不但能够创建 Kubernetes 资源,也能对资源进行更新,非常方便。不过
Kubernets 还提供了几个类似的命令,例如 kubectl create、kubectl replace、kubectl edit 和
kubectl patch。
为避免造成不必要的困扰,我们会尽量只使用 kubectl apply,
此命令已经能够应对超过 90% 的场景
5.资源的删除
配置文件创建的资源 也可以用之前的方式删除
[root@k8s-master k8s]# kubectl apply -f nginx.yaml
deployment.extensions/nginx-deployment created