Kubernetes搭建(二)

一、The hard way

Kelsey Hightower :https://github.com/kelseyhightower 这种方式搭建Kubernetes的环境方式可以说是最难的了。他的github中有一个kubernetes-the-hard-way,里面写了一个k8s比较困难的搭建方式,我是作为一个了解看了下,没真试过他的方式,有兴趣的可以自己玩

 二、在线play-with-k8s

1、浏览器访问 https://labs.play-with-k8s.com/ 并登陆(可用dockerhub账号直接登录),有4个小时的实践时间。

2、点击 +ADD NEW INSTANCE新增第一个实例

3、部署第一个节点

         初始化master节点,执行:

         [node1 ~]$ kubeadm init --apiserver-advertise-address $(hostname -i)

         执行完毕后,记录下kubeadm join命令,后面会在其他节点上执行

4、部署其他2个节点

      点击 +ADD NEW INSTANCE,继续新增2个实例

在这些实例中分别执行:

[node2 ~]$ kubeadm join 192.168.0.8:6443 --token 53x6g3.pbdsl4gvnpj22ifx \
    --discovery-token-ca-cert-hash sha256:65cec51046d85c224ad56ede5480752515ab39d31a0675b307208c360a1bcf90

[node3 ~]$ kubeadm join 192.168.0.8:6443 --token 53x6g3.pbdsl4gvnpj22ifx \
    --discovery-token-ca-cert-hash sha256:65cec51046d85c224ad56ede5480752515ab39d31a0675b307208c360a1bcf90

 

5、执行完毕后,在master节点上执行:

     [node1 ~]$ kubectl get nodes          【看到三个节点已部署完成。】

此时节点的状态为NotReady,继续在master上部署网络代理:

     [node1 ~]$ kubectl apply -n kube-system -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 |tr -d '\n')"

再次查看节点状态已经为Ready:

6、查询集群信息

[node1 ~]$ kubectl cluster-info
Kubernetes control plane is running at https://192.168.0.8:6443
KubeDNS is running at https://192.168.0.8:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

7、部署nginx服务

在mater上执行:

[node1 ~]$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/application/nginx-app.yaml

 

每个nginx会自动被部署到node节点中,默认是随机选择3个节点。查看pod状态:[node1 ~]$ kubectl get pods -o wide

      pod为Running状态表示部署成功,正常运行中:

 

查看服务状态:[node1 ~]$ kubectl get svc

   可以看到"my-nginx-svc"服务已经启动,内部80端口被映射到了外部30625端口:

 

[node1 ~]$ ss -anlp|grep 30628:30628端口的确被监听,通过kube-proxy网络管理实现:

 

8、开放端口,本机访问

      将pod上的80端口暴漏给master节点:

[node1 ~]$ kubectl expose deploy/my-nginx --port 80

 

查看服务地址:[node1 ~]$ kubectl get svc my-nginx -o go-template --template '{{ .spec.clusterIP }}'

                                                10.106.167.239

[node1 ~]$ curl 10.106.167.239

得到nginx的默认欢迎界面,至此在k8s上部署nginx完成。

三、Cloud上搭建 

kops是云上搭建的解决方案,网址是:https://github.com/kubernetes/kops ,这个方案网上有很详细的说明,我就不搭建了,因为这玩意是云上方案,真要搞成生产级别的话很多组件是要收费的,所以对于我个人目前来说没什么意义;

四、企业级解决方案CoreOS

cireos是企业的解决方案,网址是:https://coreos.com/tectonic/ ,这个搭建方式也很简单,所以不做说明

五、使用Minikube搭建单节点K8s(需要kexue上网)

5.1、安装kubectl 

官网:https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/

1、在 Linux 上使用 curl 安装 kubectl 二进制文件

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

2、验证二进制文件(可选)下载 kubectl 校验和文件:

curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"

根据校验和文件验证 kubectl 二进制文件:

echo "$(<kubectl.sha256)  kubectl" | sha256sum --check

如果有效,则输出为:kubectl: OK;如果检查失败,sha256则以非零状态退出并打印类似于以下内容的输出:

kubectl: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match

注意:下载相同版本的二进制文件和校验和。

3、安装 kubectl

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

4、检查是否配置成功

kubectl version

5.2、安装minikube

1、下载

wget https://github.com/kubernetes/minikube/releases/download/v1.5.2/minikube-linux-amd64

2、配置环境变量

sudo mv minikube-linux-amd64 minikube && chmod +x minikube && mv minikube /usr/local/bin/

3、检查

minikube version
使用minikube创建单节点的k8s
minikube start --vm-driver=none --image-repository=gcr.azk8s.cn/google- containers

 6、感受一下Kubernetes

也是下载安装kubectl和minikube,选择virtualbox,然后minikube start,就可以通过kubectl操作

6.1、查看连接信息

kubectl config view 
kubectl config get-contexts
kubectl cluster-info

6.2、体验Pod

(1)创建pod_nginx.yaml
resources/basic/pod_nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
(2)根据pod_nginx.yaml文件创建pod
kubectl apply -f pod_nginx.yaml
(3)查看pod
kubectl get pods 
kubectl get pods -o wide
kubectl describe pod nginx
(4)进入nginx容器
# kubectl进入 
kubectl exec -it nginx bash
# 通过docker进入
minikube ssh
docker ps
docker exec -it containerid bash
(5)访问nginx,端口转发
# 若在minikube中,直接访问 
# 若在物理主机上,要做端口转发
kubectl port-forward nginx 8080:80
(6)删除pod
kubectl delete -f pod_nginx.yaml
小结 :通过Minikube,使用kubectl操作单节点的K8S,而且也能感受到pod的创建和删除,包括pod中对应的容器
 
posted @ 2022-01-23 11:49  童话述说我的结局  阅读(212)  评论(0编辑  收藏  举报