很好地一个Kubernetes教程,雅俗共赏。
https://kubernetes.io/zh/docs/tutorials/kubernetes-basics/
Kubernetes 帮助您确保这些容器化的应用程序在您想要的时间和地点运行,并帮助应用程序找到它们需要的资源和工具。 Kubernetes 是一个可用于生产的开源平台,根据 Google 容器集群方面积累的经验,以及来自社区的最佳实践而设计。
一、创建一个集群。
定义:Kubernetes 用于协调高度可用的计算机集群,这些计算机群集被连接作为单个单元工作。 Kubernetes 的抽象性允许您将容器化的应用程序部署到集群,而不必专门将其绑定到单个计算机。为了利用这种新的部署模型,应用程序需要以将它们与各个主机分离的方式打包: 它们需要被容器化。容器化应用程序比过去的部署模型更灵活和可用,其中应用程序直接安装到特定机器上,作为深入集成到主机中的软件包。 Kubernetes 在一个集群上以更有效的方式自动分发和调度容器应用程序。 Kubernetes 是一个 开源 平台,可满足生产环境的需要。
组成:
Kubernetes 集群由两种类型的资源组成:
- 一个 Master 是集群的调度节点
- Nodes 是应用程序实际运行的工作节点
6、环境变量配置。
[root@master ~]# vim /usr/lib/systemd/system/docker.service
手动添加两行:
手动添加一行
Environment="HTTPS_PROXY=http://www.ik8s.io:10080"
Environment="NO_PROXY=127.0.0.0/8,172.0.0.0/16"
7、开始一系列命令行操作,
当输入docker info时,输出为:
保证输出的都是1
[root@master ~]# cat /proc/sys/net/bridge/bridge-nf-call-ip6tables
1
[root@master ~]# cat /proc/sys/net/bridge/bridge-nf-call-iptables
1
[root@master ~]# rpm -ql kubelet
/etc/kubernetes/manifests #清单目录
/etc/sysconfig/kubelet #配置文件
/etc/systemd/system/kubelet.service
/usr/bin/kubelet #主程序
8、设置开机启动
[root@master ~]# systemctl enable kubelet
9、初始化
[root@master ~]# kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 开始报错
初始化这一步各种报错!!!!添加了以下几种步骤:
改错1:
[root@master ~]# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
改错2:禁用swap
执行 swapoff -a
无输出(这个命令无法永久禁用,永久禁用看下文,master与node都要禁用)
改错3:修改初始化命令中的版本号以及添加了--ignore-preflight-errors=Swap
[root@master ~]# kubeadm init --kubernetes-version=v1.16.2 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
于是又报错:
然后查询资料https://blog.csdn.net/h952520296/article/details/86981343,是因为无法FQ的原因,解决如下:
用命令行下载:
docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.16.2
docker pull mirrorgooglecontainers/kube-controller-amd64:v1.16.2(若显示找不到)用docker pull bluersw/kube-controller-manager:v1.16.2
docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.16.2(若显示找不到)用docker pull bluersw/kube-scheduler:v1.16.2
docker pull bluersw/kube-proxy:v1.16.2
docker pull bluersw/pause:3.1
docker pull bluersw/etcd:3.3.15-0
docker pull bluersw/coredns:1.6.2
下载完以后,需要打标签,否则系统仍然无法识别。
docker tag bluersw/kube-apiserver:v1.16.2 k8s.gcr.io/kube-apiserver:v1.16.2
docker tag bluersw/kube-controller-manager:v1.16.2 k8s.gcr.io/kube-controller-manager:v1.16.2
docker tag bluersw/kube-scheduler:v1.16.2 k8s.gcr.io/kube-scheduler:v1.16.2
docker tag bluersw/kube-proxy:v1.16.2 k8s.gcr.io/kube-proxy:v1.16.2
docker tag bluersw/pause:3.1 k8s.gcr.io/pause:3.1
docker tag bluersw/etcd:3.3.15-0 k8s.gcr.io/etcd:3.3.15-0
docker tag bluersw/coredns:1.6.2 k8s.gcr.io/coredns:1.6.2
然后再次输入初始化命令:红色部分需要修改为自己的IP。
kubeadm init --kubernetes-version=v1.16.2 --apiserver-advertise-address=192.168.0.4 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.1.0.0/16
10、貌似安装成功了 ,输出以下界面:需要保存一条命令,作为后续添加工作结点用
kubeadm join 172.16.12.217:6443 --token ayykxh.fdsnw6dnai6k1rh1
--discovery-token-ca-cert-hash sha256:bc39b2e7139f573d397c3c031680e76a22d28a916e928d30c83d8f4f8fda8d61
11、查看一下当前的安装信息
[root@master ~]# mkdir -p $HOME/.kube
[root@master ~]# cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
12、检测组件运行是否正常
[root@master ~]# kubectl get cs
13、查看并验证节点信息是否成功
[root@master ~]# kubectl get nodes
14、安装flannel,工作结点Node之间通信使用。(又报错!)
[root@master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
替换成以下两个命令后成功:
kubectl create -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml